要解决的问题
大模型有两个固有局限:
知识截止:模型的知识来自训练数据,训练完成后就不再更新。问它训练截止之后发生的事,它不知道。
幻觉:模型可能生成看似合理但事实上错误的内容。当它不确定时,倾向于"编一个看起来对的答案",而不是说"我不知道"。
RAG 的思路
检索增强生成(Retrieval-Augmented Generation,RAG)的做法是:先检索,再生成。
- 检索:根据用户的问题,从外部知识库中找出相关的文档片段;
- 增强:把检索到的片段作为上下文,与用户问题一起送给模型;
- 生成:模型基于这些上下文作答。
技术流程
离线阶段(建立索引):
- 把文档切分成合适大小的片段(chunk);
- 用嵌入模型(Embedding Model)把每个片段转成向量;
- 存入向量数据库,建立索引。
在线阶段(查询):
- 把用户问题也转成向量;
- 在向量库中检索出与问题向量最相似的若干片段;
- 拼接成提示词,送给大模型生成答案。
为什么这样有效
可更新:知识库可以随时更新,无需重新训练模型。这是 RAG 相对"把知识塞进模型参数"的最大优势。
可溯源:模型基于检索到的片段作答,可以标注引用来源,用户能核对。这直接回应了"可验证"的需求。
成本低:相比微调模型,维护一个知识库的成本低得多,也更灵活。
常见挑战
切分策略:片段太大,检索精度下降、占用上下文;片段太小,语义不完整。需要根据文档特点调整。
检索质量:单纯用向量相似度检索,可能漏掉关键词匹配但语义相近的内容。实践中常采用混合检索(向量检索 + 关键词检索),再用重排序模型(Reranker)重新打分。
上下文利用:检索到一堆片段,模型未必能正确利用其中的信息——尤其是当片段中存在矛盾或无关内容时。
一个常被忽略的点
RAG 并没有从根本上消除幻觉。它降低了"凭空编造"的概率,但模型仍可能:
- 错误理解检索到的内容;
- 在检索结果不完整时补全信息;
- 忽略与自身先验冲突的片段。
因此,在高风险场景中,人工核验仍然必要。
说明:本文为大模型应用技术的公开知识整理。