← 返回笔记列表
AI 技术与原理 第 13 / 28 篇

AI 原理学习笔记(十三):RAG 怎样优化,何时需要 Graph RAG

查看“AI 技术与原理”专题目录(13/28)
本文目录 11 个小节

返回系列导读 · 先修:RAG 完整流程

1. 优化从失败类型开始

用户说“答案不对”,至少有四种不同原因:

现象可能原因优先实验
正确条款没有被找到文档缺失、分块差、查询不匹配检查源文档与召回
找到了但排很后检索分数不够细致重排、混合检索
找到一半条件块太小或表格结构丢失父子块、结构解析
条款完整却答错上下文冲突或生成误读精简证据、提示与验证

每个实验都保留旧方案作为基线。一次同时更换分块、向量模型和 Prompt,就很难知道谁产生了收益。

2. 分块优化:小块检索、大块理解

短块容易匹配具体内容,长块更容易保留完整条件。可以先检索子块,再把对应父段落或章节拿来供模型阅读,这叫常见的父子块思路。

例如子块包含“满一年可申请”,父段落还包含“适用人员”和“累计工作年限定义”。生成需要这些条件,不应只拿匹配最强的一句话。

同时检查重复块:多个近似版本占满 Top-K,会挤掉其他必要证据。去重不应误删不同版本之间真正变化的条款。

3. 查询改写与拆分

“报销那个怎么弄”可能依赖前一轮的“上海出差住宿”。先结合必要历史改写成独立问题,可提高检索相关性。

“年假几天、怎么申请、离职时怎么办”包含多个子问题,可以分别检索,再合并证据。

改写也可能引入用户没说的条件。应保留原问题,并检查是否把“实习生”改成“正式员工”等关键变化。

多查询会增加检索与生成开销。用评测确认覆盖率收益,而不是查询越多越好。

4. 关键词与向量检索为何互补

关键词检索擅长精确名称、编号、缩写和罕见术语,例如合同编号 A-1024。BM25 等方法结合词频、词的区分性及文档长度进行打分。

向量检索有机会处理同义表达,例如“休假额度”与“年假天数”。但可能忽略编号中的微小差别,检到语义相近却事实不符的资料。

混合检索结合二者。原始分数的尺度不同,不能未经处理就简单相加。

一种按排名融合的方法是 Reciprocal Rank Fusion:

RRF⁡(d)=∑r∈R1k+rank⁡r(d)\operatorname{RRF}(d)=\sum_{r\in R}\frac1{k+\operatorname{rank}_r(d)}

RR 是各检索列表,kk 是平滑常数;某个列表没出现该文档,通常该列表贡献为 0。它利用排名,减轻分数尺度不一致的问题,但融合策略仍要调试。

lists = [["A", "B", "C"], ["C", "A", "D"]]
scores = {}
k = 60
for ranking in lists:
    for rank, doc_id in enumerate(ranking, start=1):
        scores[doc_id] = scores.get(doc_id, 0.0) + 1 / (k + rank)
print(sorted(scores, key=scores.get, reverse=True))
# ['A', 'C', 'B', 'D']

A 在两份列表都靠前,因此融合后领先。这段只是排名计算,不包含真实搜索引擎。

5. Bi-encoder 与 Cross-encoder

Bi-encoder分别编码问题和文档,可以预先计算文档向量,因此适合从大量文档里快速找候选。

Cross-encoder把问题与候选文档放在一起判断相关性,能更细地比较词句关系,但通常要对每个候选单独计算,不适合无差别遍历整个大库。

常见组合是“便宜召回较多候选,再昂贵重排少数候选”。重排也可能错,特别是缺乏领域训练或对时间、否定等条件不敏感时。

6. 元数据过滤和证据预算

用户有权访问的范围、文件生效时间、部门和产品版本,应该用于过滤。过滤太严会漏掉答案,太松会引入过期或越权内容。

给生成器的内容要有预算:优先保留直接回答问题的证据、补充定义与必要例外,减少重复和无关段落。

“相关文档越多越好”不成立。更多噪声会消耗窗口、费用与注意力,还会增加冲突。

7. Graph RAG 解决什么额外问题

普通文档检索擅长找到与问题直接相关的片段。若问题涉及多跳关系,例如“某供应商关联的子公司,分别与哪些项目存在合同”,关系图可能更适合导航。

图中:

  • 实体是节点,例如公司、项目、合同。
  • 关系是边,例如“控股”“签订”“负责”。
  • 节点和边应保留原文出处、时间与置信信息。

Graph RAG 是一类结合图与检索生成的方法,不是一个唯一固定算法。有的重视实体关系遍历,有的还建立社区与摘要,用于更全局的问题。

例如“员工—所属部门—部门制度”可以按关系找适用条款;但图谱若把“甲公司不控股乙公司”抽成“控股”,后面推理再精密也建立在错误关系上。

进一步查看 Microsoft GraphRAG 项目说明可了解其中一种实现。它不意味着所有知识库都应采用相同方案。

8. 图检索的成本与边界

图谱需要实体消歧、关系抽取、更新、删除、权限与来源追踪。一个公司改名,可能影响多个节点与关系。

如果问题主要是“某条政策是什么”,普通全文与向量检索可能更简单有效。只有关系或全局聚合带来可测收益,才值得引入更复杂的图流程。

知识图谱也不等于 Graph Neural Network,前者是一种知识组织方式,后者是一类学习图结构的方法。

9. 一个可执行的调优顺序

先建立带标准证据的题集,再逐步比较:

  1. 文档与解析修复后,正确证据是否进入可检索范围?
  2. 改分块后,Recall@K 是否提高?
  3. 加混合检索后,编号题与同义题是否都改善?
  4. 加重排后,证据是否更靠前,延迟增加多少?
  5. 精简上下文后,答案是否更忠实?
  6. 引入图后,多跳题是否改善,简单题是否退化?

同时记录费用和 P95 延迟。只有准确率没有运行代价,无法判断优化能否上线。

复习卡片与自测

  • 检索指标与回答指标要分开。
  • 混合检索结合精确词匹配与语义匹配。
  • 重排在少量候选上做更细比较。
  • 图适合关系问题,但抽取、维护和权限都有成本。

1. 为什么不直接把 BM25 分数和余弦分数相加?

参考答案二者的分布和尺度不同,一项可能数值上压倒另一项;需要合理归一化或采用按排名融合等方法,再验证效果。

2. 正确条款根本不在候选里,重排能救回来吗?

参考答案不能。重排只能处理提供给它的候选,应先改善召回或文档处理。

3. 图谱里每条关系为什么需要出处与日期?

参考答案关系可能被抽错或过期,保留出处和时间才能核验、更新,并解释结论从何而来。

原文定位

依据:原资料 6.5—6.6、15.1、15.4。

继续学习本专题