犀牛鸟 2026 研究笔记 estelledc.github.io

Ch11: Graph RAG 与知识图谱增强检索

Part 6: 进阶专题 前置章节:Ch04: 检索三路军——BM25、向量、知识图谱的协奏 后续章节:Ch12: Agentic RAG——让 LLM 自主编排检索 返回目录:README


结论先行:Graph RAG 解决的是 BM25 和向量检索都搞不定的「关系推理」类问题——答案不在 query 的关键词里,也不在语义近邻里,而在实体之间的链路上。WeKnora 用 PMI 统计自动建图,RAGFlow 用 LLM 抽取实体关系,两条路线代表「低成本统计」与「高精度语义」的取舍。

一、为什么需要第三路检索

日常类比:你在公司 Wiki 里找「谁负责过 ERR_OOM_KILL_001 的修复」。Wiki 全文搜索「ERR_OOM_KILL_001」能找到错误码说明页,但修复者的名字可能只在另一篇「张三的技术分享」里出现——两页之间没有共同关键词,向量检索也可能因为主题差异而漏掉。如果你有一张「错误码 → 修复者 → 相关文档」的关系网,就能从错误码跳到张三,再跳到他的其他文档。

这就是 Graph RAG 的定位:补 BM25/向量在「间接关联」上的盲区

查询类型 BM25 向量 知识图谱
精确错误码 / SKU
概念性问答
多跳关系(A 的 B 还做过什么)
全新实体(库里第一次出现) 弱(冷启动)

二、三种建图策略对比

策略 代表项目 构建方式 精度 成本 维护
PMI 统计共现 WeKnora 实体共现 → 点互信息 增量更新 PMI
LLM 关系抽取 RAGFlow Graph RAG 文档 → NER + 关系三元组 高(每文档调 LLM) 需重跑抽取
社区摘要(Microsoft GraphRAG) 社区方案 聚类 → 社区摘要节点 高(宏观) 很高 全量重建为主

PMI 的直觉(WeKnora 路线)

\[PMI(x, y) = \log_2\left(\frac{P(x,y)}{P(x) \cdot P(y)}\right)\]

WeKnora 管线概要:

文档 chunk → 实体抽取(分词+词性 / 可选 LLM)
          → 段落内共现统计
          → PMI 过滤 + 建边
          → 1–2 跳图遍历 → 召回含关联实体的 chunk
          → 与 BM25、向量结果一起 RRF 融合

详见 Ch04 §4精读: WeKnora

RAGFlow Graph RAG 路线

RAGFlow 在 DeepDoc 解析后,用 LLM 从结构化文本中抽取 (头实体, 关系, 尾实体) 三元组,写入图数据库。优势是关系类型明确(「负责」「属于」「引用」);劣势是 LLM 抽取有幻觉风险,且大库全量抽取成本高。


三、Graph RAG 在 RRF 融合中的角色

WeKnora 三路并行检索后,用 Reciprocal Rank Fusion (RRF) 合并排名:

def rrf_score(rank: int, k: int = 60) -> float:
    """rank 从 1 开始;k 越大,排名靠后的结果权重衰减越慢"""
    return 1.0 / (k + rank)

def fuse_three_way(bm25_ranks, vector_ranks, graph_ranks, k=60):
    scores = {}
    for doc_id, rank in bm25_ranks:
        scores[doc_id] = scores.get(doc_id, 0) + rrf_score(rank, k)
    for doc_id, rank in vector_ranks:
        scores[doc_id] = scores.get(doc_id, 0) + rrf_score(rank, k)
    for doc_id, rank in graph_ranks:
        scores[doc_id] = scores.get(doc_id, 0) + rrf_score(rank, k)
    return sorted(scores.items(), key=lambda x: -x[1])

关键设计点:图谱路单独贡献排名分,而不是把图结构硬编码进 prompt。这样某一路检索失败时,其他路仍可兜底——比「只信图谱」更稳健。


四、Graph RAG 的典型失败模式

失败模式 根因 缓解思路
噪声边泛滥 实体抽取把停用词当实体 提高 PMI 阈值、共现次数下限
冷启动图谱稀疏 文档量 < 数百篇 前期依赖 BM25+向量,图谱作加分
关系方向丢失 PMI 无向边 需要因果/层级时用 LLM 抽取有向关系
与向量重复召回 三路结果高度重叠 RRF 已部分解决;可设 dedup
维护滞后 文档更新未同步图谱 增量 PMI 重算 + Wiki 巡检(WeKnora 自维护)

WeKnora 的 自维护 Wiki 与图谱联动:矛盾检测、覆盖缺口检测会用到实体共现模式——图谱不只是检索工具,还是知识库健康度信号源。


五、何时该上 Graph RAG

适合

不适合

选型可参考 RAG 平台选型决策树Agentic RAG 模式 中的 Graph RAG 节。


章末自检


延伸阅读