很多 RAG 知识库回答不准,问题不在检索算法,而在资料本身:同一个问题在不同文档里有三种答案。解决办法是在入库之前先对 FAQ 做去重合并:把相似问题聚在一起,人工确定唯一答案,标注来源和更新时间,再导入知识库。

为什么重复内容会伤害 RAG

  • 检索时,多个相似片段同时被召回,占满上下文,挤掉了其他有用信息
  • 如果这些片段答案不同,模型可能混合它们,生成一个哪份文档都没写过的答案
  • 过期条目和新条目同时存在时,模型无从判断哪个才是现行规定

去重合并流程

1. 收集所有来源

把客服手册、帮助中心、内部 wiki、历史邮件模板中的问答都导出,统一成表格:问题|答案|来源文档|最后更新时间|负责人。

2. 相似问题聚类

条目少时可以人工排序浏览;条目多时可以用向量相似度把相近问题分组,再让大模型辅助判断:

下面是一组语义相近的 FAQ 条目。请判断:
1. 它们是否在问同一个问题(是/部分相同/否)
2. 答案之间是否存在冲突,冲突点是什么
3. 如果合并,建议的标准问题表述和需要人工确认的事实
只根据给出的内容判断,不要补充外部信息。
【条目】……

3. 人工裁决

AI 指出冲突,但哪个答案正确必须由业务负责人确定。常见处理方式:

  • 完全重复:保留更新时间最近、表述最清楚的一条
  • 答案冲突:找负责人确认现行规则,其余条目标记为过期
  • 部分重叠:拆成更具体的两个问题,各自给出答案

4. 补充元数据

合并后的每条 FAQ 加上:适用范围(地区、产品版本)、生效日期、来源链接、负责人。这些元数据可以在检索时用于过滤,也方便回答时附上出处。

5. 导入并保留同义问法

把合并前的多种问法保存在「同义问题」字段中,一起参与检索,这样用户无论怎么问都能命中同一条标准答案。

持续维护

  • 新增 FAQ 时先检索是否已有相近条目,避免重复写入
  • 每个季度按「最后更新时间」排序,复核最久未更新的条目
  • 记录用户追问或投诉对应的条目,优先检查这些内容是否过期

常见坑

  • 只做文本完全相同的去重,忽略了换个说法的重复问题
  • 让模型自己决定哪个答案正确,把业务判断交给了 AI
  • 删除旧条目时没有保留同义问法,导致部分用户问法检索不到

相关阅读