为什么传统 RAG 会“断链”
-
单跳场景:把文档切成 200 字左右的 chunk,做向量相似度检索 → LLM 直接答,够用。 -
多跳场景:需要把 2-4 份文档里的证据拼成一条“推理链”。chunk 粒度粗,一次就带回一整段,里面 60% 是干扰句,关键句反而被淹没 → 链条断了,LLM 开始“胡编”。
作者一句话总结:“不是检索不准,是检索单元太胖,逻辑关系太乱。”
传统 chunk 图 SentGraph 句图
[整段1]——相似——[整段2] [S1]—因果→[S2]—对比→[S3]
↓ 含 6 句废话 ↓ 句句相关
上下文爆炸 推理链清爽

SentGraph 的“瘦身”思路
把检索单元从“段”缩到“句”,再把这些句子按真正的逻辑关系画成一张三层图,线下建好,线上直接按图索骥。
图长啥样?
Topic 层——跨文档“桥梁”
↑
Core 句层——核心事实
↑
Sup 句层——背景、因果、举例

线下建图三步曲
|
|
|
|
|
|---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
例:
文档 A「克罗地亚官方语言为克罗地亚语。」
文档 B「电影《围城》使用克罗地亚语拍摄。」
系统线下就在 Topic 层建一条边:(克罗地亚语, 被用于, 电影《围城》)
线上推理三步曲
-
Anchor 初选
用 dense retriever 把“问题向量”和所有句子向量比对,先取 Top-K 候选句。 -
Anchor 精炼
让 LLM 当“裁判”:
-
无关句子直接扔掉 -
证据已够 → 走“直接答”分支 -
证据不够 → 触发“路径扩展” -
路径扩展
从保留的 anchor 出发,沿图中的 N-N、N-S 边做 BFS,把“因果、对比、背景”句子一串一串捞回来,直到凑齐一条完整证据链。 -
token 更省:比最强 chunk-level 图方法 KGP 平均少 30% 输入、60% 输出。 -
模型更“小”也能用:7B Qwen 上依旧领先 14B 的 chunk 方案。
实验亮点
|
|
|
|
|
|---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|


局限 & 总结
-
建图靠 LLM 写关系,大模型更准,小模型会引入噪声。 -
目前只针对多跳 QA 做了关系类型精简,别的任务得重新设计。 -
线下构图计算量不小,后续可探索“增量式”更新。
把检索粒度缩到句,再把句子间的“修辞小箭头”画出来,就能让 RAG 在多跳问答里“少废话、多证据、链条不断”。
SentGraph 用 30% 的 token 做到 SOTA,给“图+句子”这一新范式打样。
SentGraph: Hierarchical Sentence Graph for Multi-hop Retrieval-Augmented Question Answering
https://arxiv.org/pdf/2601.03014


