GraphRAG
图谱增强 RAG用知识图谱补充向量检索,擅长跨文档关系推理。
详解
GraphRAG 是微软研究院提出的 RAG 变体,核心思路是先用 LLM 从文档中抽取实体和关系,构建知识图谱,再在检索时走图路径而非纯向量相似度。普通 RAG 每次只检索孤立的文本块,擅长回答"某段话是什么意思"类的问题;但面对"A 和 B 有什么联系""整个语料库的主要主题是什么"这类需要跨文档综合的问题时,它会因找不到任何单个块包含全部信息而失败。GraphRAG 先建图——"张三→就职于→OpenAI""OpenAI→推出了→GPT-4"——查询时沿图跳转收集多跳关系,再组合成回答。代价是建图成本高(需要大量 LLM 调用做实体抽取)、构建时间长;适合文档集合关系密集、需要全局总结的场景(法律文书、医学文献),不适合简单 FAQ 问答。
一个类比
普通 RAG 像在图书馆找某本书里的某一页;GraphRAG 像图书馆馆员画了一张所有书之间引用关系的地图——你问"谁影响了爱因斯坦的相对论",馆员顺着地图上的箭头追溯多本书,给出跨书的完整答案。建地图费时费力,但一旦建好,能回答普通查找永远回答不了的问题。
举个例子
GraphRAG 核心流程(概念示意):
第一步:索引期——LLM 从文档抽取实体和关系
文档:"张三是 Acme 公司的 CTO,Acme 于 2023 年收购了 Beta 科技。"
抽取:
实体:张三(人物)、Acme(公司)、Beta科技(公司)
关系:张三 --[职位]--> Acme
Acme --[收购]--> Beta科技
第二步:查询期——在图上多跳检索
问题:"张三的公司收购了哪些企业?"
路径:张三 → Acme → Beta科技
回答:Acme 于 2023 年收购了 Beta 科技。
使用 Microsoft GraphRAG 库(microsoft/graphrag)
可通过 graphrag index 命令自动完成第一步。PYTHON 示例
相关概念
- → Retrieval / Top-K· 检索
- → Embedding· 向量嵌入