Skip to content

RAG(Retrieval-Augmented Generation,检索增强生成)把外部知识检索和模型生成连接起来,适合处理经常更新、规模较大或不能完整放进提示词的知识。

一、标准流程 ​

text
文档 → 清洗 → 切分 → 向量化 → 建库
查询 → 改写 → 检索 → 重排 → 拼接上下文 → 生成答案

离线阶段决定知识是否可检索,在线阶段决定结果是否相关。两者都要记录版本,便于定位问题。

二、关键设计点 ​

文档处理 ​

  • 保留标题、章节、来源和更新时间等元数据。
  • 按语义和结构切分,避免把一个完整表格或代码示例拆散。
  • 先去除重复、导航和无意义模板,再计算向量。

检索策略 ​

  • BM25 适合精确关键词,向量检索适合语义相似,两者可以混合。
  • 使用元数据过滤缩小范围,例如产品、版本、权限和语言。
  • 召回后用重排模型筛选最相关片段,减少无关上下文。

生成与引用 ​

  • 明确要求模型只依据给定上下文回答,不确定时说明不知道。
  • 为每个片段保留来源和位置,让答案可以回溯。
  • 控制上下文长度,优先保留相关、完整且互不重复的内容。

三、如何评测 ​

把检索和生成拆开评测:

  • 检索:Recall@K、MRR、命中率、重复率。
  • 生成:事实正确性、引用覆盖率、答案完整性和拒答质量。
  • 系统:延迟、成本、索引更新时间和权限隔离。

四、常见失败原因 ​

  1. 切分过小,答案缺少上下文。
  2. 只做向量检索,精确名称和编号召回失败。
  3. 召回内容很多,却没有重排和去重。
  4. 文档版本和权限没有进入检索条件。
  5. 没有保留引用,无法区分模型记忆和知识库证据。

RAG 的目标不是让模型“读更多”,而是让它在正确的时间拿到正确的证据。