Appearance
RAG 系统技术手册:从检索参数体系到向量与图谱知识库的选型
文档定位:整合 RAG 检索层的核心参数机制(Top N、相似度阈值、向量相似度权重、关键词相似度),并在此基础上引入图谱知识库(Graph RAG)作为对照范式,帮助读者建立从「参数调优」到「架构选型」的完整认知框架。
阅读路线
全文按认知层次分两篇,两篇回答的是不同层级的问题,不要混着看:
| 篇章 | 回答的问题 | 覆盖内容 | 前提假设 |
|---|---|---|---|
| 基础篇 | 在向量范式内部,参数怎么调? | Top N、相似度阈值、向量相似度权重、BM25 等关键词信号 | 默认「知识被切分为文本片段、检索即找最相似片段」 |
| 拓展篇 | 向量范式本身够用吗? | Graph RAG 的机制、对比、性能数据、选型与混合路由 | 质疑上述前提,引入实体-关系表示 |
为什么这样分层:参数调优的逻辑,在图谱检索中会发生根本性变化。先把向量范式内部的参数关系捋顺,才能看清「哪些问题调参能解决、哪些问题调参永远解决不了」。
第一篇 · 基础:向量检索的参数体系
1. 检索层是 RAG 的天花板
RAG(Retrieval-Augmented Generation)的核心逻辑是:用户提问时,先从外部知识库中检索出相关资料,再将这些资料交给大语言模型(LLM)生成答案。
检索层的质量直接决定了 LLM 能看到什么、看不到什么——检索失败,生成层再强也无从补救。
检索层要回答的根本问题是:
给定一个问题,应该把知识库中的哪些内容交给模型?
向量知识库和图谱知识库是这个问题的两种不同回答方式。本篇只讨论第一种回答方式内部的调参问题。
2. 核心参数:Top N 与相似度阈值
在向量检索中,Top N(Top K) 和 相似度阈值(Similarity Threshold) 是控制检索质量最关键的两个参数。它们从不同维度对检索结果进行裁剪,目标是在召回率与精确率之间找平衡。
2.1 两者到底管什么
| 参数 | 核心问题 | 作用机制 |
|---|---|---|
| Top N | 「最多取几条?」 | 按相似度从高到低排序,返回前 N 个结果,不关心分数绝对值 |
| 相似度阈值 | 「最低要多少分?」 | 设定分数门槛,只有相似度 ≥ 阈值的片段才被保留 |
两者的行为差异带来一个关键后果:
- Top N 保证总能得到固定数量的返回结果(除非总数不足)。知识库完全无关时,它也会「强行」塞入低质内容。
- 相似度阈值可能让你得到零个结果——如果所有片段都未达标。它正是防止上一种情况的「安全阀」。
这就是为什么单靠 Top N 的系统永远「有话可说」,而这种「有话可说」往往是幻觉的来源。
2.2 协同工作方式:先粗筛,再精选
常见的协作模式分三步:
text
Step 1 粗筛:从向量库取出较大候选集(如 Top 15)
↓
Step 2 过滤:用阈值(如 0.7)剔除明显不相关的片段
↓
Step 3 精选:从通过过滤的片段中取 Top 3 送给 LLM最终送入 LLM 的片段数量为:
text
min(N, 通过阈值过滤的片段数)注意这个式子的含义:阈值是硬约束,Top N 是上限。先被阈值砍掉的片段,再大的 N 也救不回来。
2.3 相似度阈值怎么定
阈值的合理范围完全取决于距离度量方式,不能跨度量方式直接套用:
| 度量方式 | 判断方向 | 参考区间 |
|---|---|---|
| 余弦相似度(最常用) | 分数越高越相似 | ≥ 0.70 ~ 0.82 |
| 欧氏距离 | 距离越小越相似 | 距离 ≤ 阈值 |
阈值的核心价值在于构筑拒答防线:当所有片段得分都低于阈值时,系统可判定知识库无相关内容,触发标准拒答,而非让 LLM 基于低质片段编造答案。
⚠️ 阈值不是「越高越好」。阈值过高会让系统对同义改写、口语化提问过度敏感,把本该召回的内容挡在门外。
2.4 Top N 怎么定
| N 取值 | 适用场景 | 风险 |
|---|---|---|
| 1 ~ 2 | 事实型、定义型问题,要求高精度 | 上下文不足,无法覆盖多角度 |
| 3 ~ 5 | 大多数场景的推荐起点 | —— |
| 5 ~ 10 | 需要综合多处信息的复杂问题 | 噪声随 N 增加而上升 |
2.5 进阶截断策略
工业级系统常采用比「单一阈值」更精细的策略:
- 软硬双阈值分流 —— 高分直接采纳,中分送重排模型(rerank),低分丢弃。
- 动态落差截断 —— 关注 Top1 与后续片段的分差,分差骤降处即为自然截断点。
- σ-RAG 统计显著性阈值 —— 基于噪声基线的
μ + n·σ设定阈值,而非固定常数。
稳健起点:Top N = 3~5,余弦相似度阈值 ≈ 0.7,再基于黄金测试集进行单变量调优。
「单变量」很重要——同时调 N 和阈值,你无法归因是哪一项带来了改善。
3. 相似度阈值 vs. 向量相似度权重
这两个参数都带「相似度」字眼,但作用在完全不同的阶段,混用是最常见的调参误区。
| 维度 | 相似度阈值 | 向量相似度权重 |
|---|---|---|
| 核心作用 | 过滤:决定一个结果是否保留 | 配比:决定向量分数在混合打分中占多大比例 |
| 作用阶段 | 打分完成后,对最终得分进行筛选 | 打分进行中,参与计算最终得分本身 |
| 调节目标 | 控制结果的纯度(Precision) | 控制结果的倾向性(语义 vs. 关键词) |
| 一句话 | 管「要不要」 | 管「怎么算」 |
在混合检索中,最终得分通常按以下方式融合:
text
最终得分 = w_keyword × 关键词得分 + w_vector × 向量相似度得分关键点:相似度阈值作用于这个融合后的最终得分,而非原始的向量分数或关键词分数。
由此引出一个常见误区:试图用调整权重来解决本应由阈值处理的噪声过滤问题,或者反过来。两者的职责边界是——权重决定「排序长什么样」,阈值决定「排序里的东西要不要」。
4. 关键词相似度:向量之外的另一个信号维度
向量相似度追求语义理解,关键词相似度依赖字面统计匹配。两者是正交的信号来源,这正是混合检索有效的原因。
4.1 BM25(工业界基准)
BM25 是 RAG 混合检索中最常用的关键词打分算法,得分由三个因素共同决定:
| 因素 | 作用 | 对应参数 |
|---|---|---|
| 词频(TF) | 词出现越多分越高,但用饱和参数 k1 抑制关键词堆砌 | k1 |
| 逆文档频率(IDF) | 提升稀有专业术语的权重 | —— |
| 文档长度归一化 | 修正长文档的不公平优势 | b |
BM25 的输出是一个无上界的正数分数,越高越相关。注意「无上界」的含义:它不能像余弦相似度那样直接套 0.7 这类阈值,需要归一化或单独设阈。
4.2 其他关键词方法
| 方法 | 特点 | 典型用途 |
|---|---|---|
| TF-IDF | BM25 的前身,词频贡献是线性的(无饱和控制),通过 TF-IDF 向量的余弦相似度计算 | 轻量场景、基线 |
| Jaccard 相似度 | 纯集合重叠,范围 [0, 1],计算成本极低 | 粗筛、辅助信号 |
| 编辑距离 | 字符级精准匹配 | 拼写纠错、型号比对 |
4.3 权重往哪边倾斜
在混合检索中,BM25 分数与向量分数加权融合后,再由相似度阈值进行过滤。权重调整的语义很明确:
- 提高关键词权重 → 更偏向精确术语匹配(适合产品型号、日期、法规编号)
- 提高向量权重 → 更偏向概念性语义匹配(适合口语化、同义改写的提问)
5. 基础篇小结:参数调优的因果链
把本篇的四个参数串成一条决策链,它们的职责是不重叠的:
text
用户问题
↓
[关键词检索 BM25] ─┐
├─→ [权重配比 w_vector / w_keyword] 决定排序长什么样
[向量检索 相似度] ──┘
↓
[相似度阈值] 决定排序里的东西要不要
↓
[Top N] 决定最后最多送几条给 LLM
↓
LLM 生成四个参数的调优顺序建议:先定阈值(纯度底线)→ 再定 N(广度上限)→ 最后调权重(倾向性)。前两者决定「有没有答案」,后者只决定「答案偏向哪种匹配方式」。
第二篇 · 拓展:图谱知识库(Graph RAG)
6. 前提被打破:向量检索的结构性局限
基础篇的所有参数——Top N、阈值、权重、BM25——都建立在同一个前提之上:
知识被表示为文本片段,检索的本质是「找到与问题最相似的片段」。
图谱知识库从根本上改变了这个前提。而向量 RAG 的失效,很多时候不是调参能解决的,而是架构层面的局限:
第一,它没有「关系」的概念。
语义相似度找的是「听起来像 query」的片段,无法跟踪「第 4 节中的法规交叉引用了附录 C 中的例外条款」。这两节在 embedding 空间中可能相距很远,尽管其中一节定义了另一节。
第二,分块破坏了结构。
把财务报告切成 512-token 的窗口,就把表格和表头、脚注和它所限定的数字断开了。一个单元格里的数字脱离列标题就毫无意义。
第三,实体数超过阈值后,准确率急剧退化。
当查询涉及的实体数超过一定阈值(如 5 个),向量检索的准确率会急剧退化。在 schema-bound query 上,传统向量 RAG 的准确率可以是 0——不是低,是零。
7. Graph RAG 的核心机制
Graph RAG 在向量检索之外增加了一层知识图谱:实体成为节点,实体之间的关系成为边。它的索引流程是一个多阶段 LLM 流水线:
text
文档
↓
实体抽取 LLM 识别:人物、组织、概念、法规
↓
关系抽取 LLM 识别:谁与谁相连,如何相连
↓
社区检测 Leiden 算法将紧密关联的实体聚成社区
↓
社区摘要 LLM 为每个社区生成自然语言摘要
↓
知识图谱 节点 + 边,存入图数据库成本含义:这一流程意味着,在回答任何一个查询之前,LLM 已经对语料库进行了两轮完整处理——第一轮抽取实体和关系,第二轮为每个社区生成摘要。这与向量 RAG「一次 embedding 调用」的索引成本有本质区别。
查询时的两条路径:
| 搜索方式 | 机制 | 适合 |
|---|---|---|
| 局部搜索 | 沿特定实体的关系边进行遍历 | 具体实体的关联查询 |
| 全局搜索 | 利用社区摘要进行 map-reduce 式的归纳 | 语料库级的总览问题 |
8. 关键洞察:向量搜索是概率性的,图遍历不是
这是两者最根本的哲学差异。
向量相似度搜索总是返回它最近的匹配,无论这个匹配实际上有多差——它没有能力告诉你「匹配很弱」。
图遍历则要么连接上,要么连接不上——一旦图的结构是正确的,它的检索是确定性的、精确的。
由此得出的行为特征:
| 向量搜索 | 图遍历 | |
|---|---|---|
| 对混乱输入 | 宽容 | 不宽容 |
| 在边界情况 | 不可靠 | 一旦建立就精确 |
用一句更直白的话概括选型原则:
当答案已经存在于某份文档中时,用向量数据库;当答案只存在于跨越多个事物的路径中、没有任何单一文档陈述它时,用知识图谱。
9. 全面对比:向量知识库 vs. 图谱知识库
| 维度 | 向量知识库(Vector RAG) | 图谱知识库(Graph RAG) |
|---|---|---|
| 知识表示 | 文本片段 → 稠密向量 | 实体(节点)+ 关系(边)+ 社区摘要 |
| 检索机制 | 余弦/点积相似度的近似最近邻搜索 | 实体链接 + 图遍历(局部)/ 社区摘要归纳(全局) |
| 核心能力 | 语义相似度匹配 | 多跳推理与全局归纳 |
| 确定性 | 概率性:总是返回最近邻,无法感知「弱匹配」 | 确定性:连接存在与否是明确的 |
| 索引成本 | 低(仅 embedding 计算,分钟级) | 高(多轮 LLM 调用,小时到天级;企业语料索引 $20–500) |
| 查询延迟 | 百毫秒级 | 通常为向量 RAG 的 2–3 倍(端到端,生成前);部分实现报告 20–24 秒响应 |
| Token 消耗 | 低 | 高(全局搜索尤其显著;有报告 GraphRAG 单次检索消耗 61 万 token,LightRAG 仅约 100 token) |
| 数据更新 | 增量容易,追加 embedding 即可 | 增量困难,实体/关系/社区摘要需重建或复杂合并;文档更新频繁的场景应慎用 |
| 可解释性 | 弱(「这段文本和问题相似」) | 强(「答案沿着这条实体路径得来」,遍历路径即证据) |
| 典型适用问题 | 「这份文档里说了什么?」;语义匹配;客服问答;政策/合同检索 | 「A 和 B 通过什么路径关联?」;多跳推理;全局摘要;监管交叉引用分析;供应链追溯 |
10. 量化性能差异:不是「全面更好」
GraphRAG-Bench(ICLR 2026)按查询类型分别测试的结果,揭示了比「GraphRAG 全面更好」更精确的图景:
| 查询类型 | 向量 RAG | Graph RAG | 结论 |
|---|---|---|---|
| 简单事实检索 | 60.9% | 60.1% | 基本持平,向量检索甚至略有优势 |
| 多跳推理 | 67.0% | 70.3% | 图胜,但差距并非压倒性 |
| 上下文摘要(跨文档综合) | 51.3% | 64.4% | 图胜,13 个百分点的显著差距 |
| 聚合查询 | 42.9% | 53.4% | 图胜,约 10 个百分点的差距 |
核心启示:
Graph RAG 是一个针对多跳推理和跨文档综合的专用工具,而非向量 RAG 的通用升级。在简单事实检索上,昂贵的图索引并没有带来相应的回报。
这条数据的工程价值在于——它给出了「值不值得投」的边界:如果你的查询分布中 80% 是简单事实检索,那么 Graph RAG 的 ROI 会很难看。
11. 图谱知识库的额外风险
引入图谱并非只有收益,以下风险需要专门设计才能规避:
① 实体抽取质量是天花板
「实体提取质量是整个系统的天花板。如果实体提取不准,后面的关系构建、社区检测全部跟着错。」
② 图谱覆盖率不足会系统性摧毁优势
在真实基准测试中,存在 KG-GraphRAG 因图谱覆盖率仅 65% 而全面落后于向量 RAG 的案例。
③ 其他需要专门设计的环节
- 实体消歧(同一实体的不同表述需归并)
- 图谱错误评测(如何量化图本身的质量)
- 权限过滤(图遍历时如何继承文档级权限)
这三点共同说明:Graph RAG 的成本不止是「建图贵」,还包括维护一套图质量保障体系的持续投入。
12. 选型决策框架与混合路由
12.1 按「问题形状」选型
选型的关键不是「哪个架构更先进」,而是用户实际提出的问题属于什么形状:
| 问题形状 | 特征 | 更合适 |
|---|---|---|
| 相似性问题 | 「哪段文本在语义上接近这个问题?」 | 向量检索 |
| 路径问题 | 「A 和 B 之间通过什么关联?」 | 图遍历 |
大多数真实系统同时面临两种问题。
如果答案已经写在某份文档里,用向量知识库;如果答案需要跨越多个实体、沿着关系路径组装出来,且没有任何单一文档完整陈述它,用图谱知识库。
典型的高价值图场景:
- 供应链多层追溯
- 法律判例与法条的交叉引用
- 权利与合同的层级关系
- 监管合规分析
12.2 混合路由:不二选一
实践中增长最快的方向不是「选向量还是选图谱」,而是让系统根据查询动态路由。Adaptive RAG 根据问题复杂度或结构信号,将查询分配给向量检索、图遍历或两者并用。
高性价比的折中方案:混合检索 + 实体过滤
- 保留向量检索作为主通道
- 增加基于实体的过滤层
- 不构建完整的图索引
实践报告显示,这种方案比纯向量检索效果好约 30%,而成本比完整 GraphRAG 低约 80%。
对于多数团队而言,这通常是最优的第一步——先拿到 30% 的收益,再决定是否要付另一半的代价。
12.3 文档更新频率是硬约束
如果知识库更新频繁(日级或更快),完整 Graph RAG 的增量更新成本会成为严重负担:每次文档变更都可能需要重新抽取实体、重建关系、重跑社区检测和摘要生成。
文档更新频繁的场景应谨慎采用完整 Graph RAG,除非更新频率在每月以内,或能够实现有效的增量图构建。
这一条在实际决策中往往具有一票否决的效力——它比性能数据更硬,因为它是持续成本而非一次性投入。
13. 总结
RAG 检索层的选择,本质上是在回答两个层面的问题。
第一层:在向量范式内部,如何调好参数?
| 参数 | 控制什么 |
|---|---|
| Top N | 广度 |
| 相似度阈值 | 纯度 |
| 向量权重 | 语义与关键词的配比 |
| BM25 | 提供字面精确匹配的信号 |
稳健起点:Top N = 3~5,余弦阈值 ≈ 0.7,再基于黄金测试集单变量调优。
第二层:向量范式本身是否足够?
当用户的问题从「文档里说了什么」转向「事物之间如何关联」,向量检索的结构性局限就会暴露。图谱知识库通过显式的实体-关系表示和确定性遍历,填补了多跳推理和全局归纳的空白,代价是索引成本、查询延迟和数据更新复杂度的显著上升。
最终的工程判断
关键不在于「哪个更好」,而在于:
你的问题分布中,相似性问题与路径问题各占多少。
- 以相似性为主 → 向量知识库是高效的默认选择
- 路径和多跳查询占比可观且价值密度高 → 图谱(或混合路由)值得投入
对于大多数生产系统,按查询形状动态路由的混合架构,而非单一范式的「全面切换」,是更务实的演进方向。