NLP / AIGC / 03
RAG、知识库与检索增强
RAG 的目标是让大模型基于外部知识回答问题,减少幻觉,并接入企业私有知识。它不是“向量库 + prompt”这么简单,而是一条检索、重排、生成和评测链路。
RAG 基本链路
文档处理 -> 切分 -> 向量化 -> 召回 -> 重排 -> 组装上下文 -> 生成 -> 评测
每一环都会影响最终答案质量。
文档处理
文档来源可能是 PDF、网页、Markdown、数据库、工单、知识库。处理时要注意:
- 清洗噪声。
- 保留标题层级。
- 表格和图片处理。
- 元数据提取。
- 权限控制。
很多 RAG 效果差,不是模型差,而是文档处理差。
切分
切分 chunk 太短会丢上下文,太长会影响召回精度和上下文成本。
常见策略:
- 按标题切。
- 按段落切。
- 滑动窗口。
- 保留父子层级。
- 对代码、表格、FAQ 单独处理。
召回
召回方式:
- BM25 关键词召回。
- 向量召回。
- 混合召回。
- 多路 query rewrite。
向量召回适合语义匹配,但关键词、编号、专业术语场景下 BM25 仍然很重要。
重排
召回候选通常需要重排。Cross-encoder 或 reranker 可以更准确判断 query 和文档片段的相关性。
重排能显著提升答案质量,尤其是召回候选较多时。
生成
生成阶段要控制:
- 只基于证据回答。
- 引用来源。
- 不知道时拒答。
- 输出格式稳定。
- 避免泄露无权限内容。
Prompt 要包含任务、上下文、约束和输出格式。
评测
RAG 评测至少看:
- 召回是否命中答案片段。
- 重排是否把正确片段排前。
- 答案是否正确。
- 是否有幻觉。
- 引用是否准确。
- 延迟和成本。
如果只看最终答案,很难定位问题出在召回、重排还是生成。
面试题:RAG 效果差怎么排查
按链路排:
- 文档是否干净。
- chunk 是否合理。
- query 是否需要改写。
- 召回是否命中。
- 重排是否有效。
- prompt 是否约束清楚。
- 模型是否适合。
- 评测集是否覆盖真实问题。
面试题:RAG 和微调怎么选
RAG 适合知识频繁更新、需要引用来源、企业私有知识的场景。微调适合固化风格、格式、任务能力或领域表达。很多系统会组合使用:RAG 提供知识,微调提升遵循指令和格式稳定性。
总结
RAG 是检索系统和生成模型的结合。面试里要讲清召回、重排、上下文、生成约束和评测闭环,不能只说“用了向量数据库”。
下一篇建议继续看: