什么是 RAG(Retrieval-Augmented Generation)?它解决了 LLM 的什么问题?请说说你的理解,以及在实际应用中它有哪些常见的挑战。
RAG 就是在调用大模型之前,先使用外部工具进行检索,获取一些信息,然后将获取到的信息和提示词一起传给大模型,大模型可以基于获取到的信息,输出更加可靠的内容。它很好地解决了大模型没有实时信息的问题,以及模型本身训练时数据受限的问题。在实际的应用过程当中,还是会存在外部数据质量低,或者外部数据过多上下文爆炸的情况。
优点:
不足:
RAG 是一种在调用 LLM 之前,先从外部知识库检索相关内容、再将其注入 Prompt 的技术范式。它主要解决三个问题:一是 LLM 知识截止日期导致的时效性不足;二是私有/垂直领域数据 LLM 没见过的知识盲区;三是模型在没有依据时容易产生幻觉,RAG 让模型"有据可答"。
检索环节通常基于向量相似度:把文档切片后 Embedding 存入向量数据库,Query 来了同样 Embedding,找最相似的若干片段拼入上下文。
实际落地挑战主要有:检索召回质量差(Chunk 切得太碎或太大、语义不匹配);检索到的内容过多导致 Context 膨胀,成本高且注意力分散;以及源数据本身质量低,噪声直接污染生成结果。