Lazy loaded image
📚RAG 的工程本质:检索、切分、评估与引用闭环
字数 2412阅读时长≈ 7 分钟
2026-10-17
2026-10-17

RAG 解决什么问题

检索增强生成(RAG)把外部知识取回到模型上下文中,让答案可以基于更新的文档并提供来源。它适合知识分散、内容持续变化、需要出处的问答,但并非“接上向量数据库就不会幻觉”。系统质量取决于语料权限、文档解析、切分粒度、检索召回、排序、上下文编排和回答约束。RAG 的关键成果不是像聊天,而是当答案有证据时给出可核查引用,在证据不足时能明确说明不知道。

数据准备决定检索上限

入库前先确认每份文档的所有权、访问权限、更新时间和删除机制。解析 PDF、网页、表格和代码时,要保留标题、章节、页码、链接和版本等元数据;否则检索结果可能相关却无法定位。重复文件、过期版本和扫描件 OCR 错误会污染索引。若文档有权限分区,索引和查询都要执行同一授权规则,不能只在前端隐藏链接。对经常更新的知识库,增量索引应能识别修改和删除,定期重建索引并对比文档数量、失败数和权限结果。

切分与检索不是固定配方

切分太大,检索到的片段噪声多且占据上下文;切分太小,关键定义、步骤和例外被拆开。可从章节结构、段落长度和语义边界共同决定,并在片段里保留父级标题与邻近上下文。向量检索适合语义相似,关键词检索能补充专有名词、编号和精确短语;混合检索常更稳,但排序规则需要评估。重排模型可重新判断候选片段相关性,也会增加延迟和成本。检索 top-k、相似度阈值、查询改写和去重应通过真实问题集调参,不宜凭直觉设定。

生成阶段如何守住证据

把检索结果连同来源标识、时间和权限信息组织成上下文。提示词要明确要求模型区分原文事实与推断,引用必须能映射到实际片段,不能让模型自行编造链接或页码。对于复杂问题可以先拆成子问题分别检索,再综合回答;但过度代理化会带来不可预测的步骤和更难审计的成本。证据冲突时应显示冲突,而不是把不同版本拼成一个肯定结论。没有相关证据时,系统应该请求澄清、说明覆盖范围或拒答。

评估要分层进行

建立一组来自真实使用场景的问题,包括答案在文档中、文档外、权限不足、多个来源矛盾、拼写错误和过时内容。分别评估解析成功率、召回率、排序质量、引用准确率、答案正确性、拒答表现、延迟和成本。用人工标注建立小型可信基线,再结合自动评估扩大覆盖;单一的 LLM judge 分数不能代表事实正确。每次调整切分或模型后跑回归集,分析失败属于数据、检索还是生成问题。RAG 论文提出的知识密集任务框架是概念起点,生产系统仍需要按自身语料与风险评估。 原始研究

隐私与注入风险

检索文档本身是不可信输入,恶意内容可能试图诱导模型泄露信息或忽略系统规则。把文档内容当作资料而不是指令,限制模型可调用的工具和数据范围;对检索结果做权限过滤,避免跨用户泄露。日志记录查询、来源 ID、模型版本和评估结果时要控制敏感数据保留。用户上传文件也需要大小、类型、恶意内容和生命周期管理。RAG 不能替代访问控制、DLP、审计和备份。

系统结构

实施建议

先选一个窄知识域和几十个真实问题,人工检查检索片段是否正确;再构建可追溯的索引管线与引用格式;之后加入权限过滤、拒答策略、离线评估和线上反馈;最后才扩展语料与模型能力。关注每个检索环节的可观测性,使问题可以追溯到源文档和索引版本,而不是只看到模型最终输出。

深入实践:语料治理与知识版本

为每个索引片段保存源文档 ID、版本、更新时间、访问角色和解析器版本。检索结果应能回到具体章节或页面,且引用和用户可见内容保持一致。更新文档时测试“新增、修改、删除”三类变更是否正确传播,并确保旧片段不会被继续检索。准备一个小型黄金问题集,标记正确来源、理想答案和允许的拒答;每次切片、嵌入或排序器变化后重新评分。对于无法可靠解析的扫描表格,应该显示限制并引导人工查阅,而不是让模型补齐缺失信息。

检索链路的诊断方法

回答错误时先不要立即换模型。查看原始文档是否完整入库、解析器是否漏掉表格或页脚、查询改写是否改变了关键词、召回片段是否覆盖正确章节、重排是否把关键证据压到末尾,再检查生成阶段是否遵循证据。把每一步的输入、输出、版本和耗时保存在可追踪的评测记录中。若检索结果已经错了,改提示词通常只能掩盖问题;若证据准确但答案错,才进一步调整上下文结构、提示约束或模型。通过“失败属于哪一层”的分类,团队能减少盲目堆更大模型的成本。

建立小而可靠的评测集

从用户真实问题中采样并脱敏,覆盖常见问法、专业缩写、含错别字的问题、跨文档问题、权限不足问题和知识库没有答案的问题。为每个问题保存预期来源和关键事实,而非只有一个标准句子;这样可判断模型换一种表达仍然正确。指标分开看:检索召回是否找到来源、排序是否把高价值证据放前、引用是否真实、答案是否忠于证据、拒答是否合理。人工复核少量高风险问题,再用自动评测筛选回归;自动评分器对措辞变化敏感,应抽样核验。每次变更切片、嵌入模型或提示词,保留旧版本做对照。

权限与语料生命周期

知识库必须继承源系统权限,而不是建立一个默认全员可访问的超级索引。用户查询时先鉴权,再在允许的文档范围检索,或在检索阶段稳定应用权限过滤;最终答案中的引用也要经过同一权限校验。用户离职、文件撤权和源文档删除后,索引应有明确清理时限。为增量索引建立删除队列和失败重试,抽查数据源与索引的数量及版本差异。若语料包含个人信息,明确保留、缓存和日志政策,并提供删除请求对应的追踪 ID。

把 RAG 变成产品而不牺牲可信度

在界面中显示引用标题、更新时间和跳转链接,允许用户报告“来源不相关”或“回答缺证据”。对低置信度结果清楚标记知识覆盖不足,不要伪装成确定结论。生产监控关注检索为空比例、引用失效、答案投诉、权限拒绝、延迟和模型成本。重要决策仍应回到原文,由负责人员核实。知识库变更后向受影响用户说明更新时间,避免新旧材料并存时误用过期政策。
上一篇
AI 编程助手如何进入团队:从补全到可验证的开发流程
下一篇
AI 推理部署指南:模型、显存、量化与服务并发的权衡