从十万页文档里挖出隐藏关系:GraphRAG 知识图谱 10 分钟跑通
【免费下载链接】graphragA modular graph-based Retrieval-Augmented Generation (RAG) system项目地址: https://gitcode.com/GitHub_Trending/gr/graphrag
GraphRAG 是一个开源的图检索增强生成(RAG)系统:先用 LLM 从文本里抽实体和关系,建成知识图谱,再在图谱上做局部、全局两个层面的图检索与问答。它和向量 RAG 最大的不同,是检索时先走"结构化的骨架",再补原文细节。
普通 RAG 什么时候开始失灵
你让向量 RAG 回答"这本书的核心主题是什么",它只能捞出几个孤立的文本块,答案往往停留在"段落级观点"。GraphRAG 的做法是:让 LLM 通读全文,抽出实体、关系,构建成知识图谱;再把实体聚成社区,给每个社区生成一份摘要报告。查询时,宏观问题走社区报告,细节问题走实体邻域,两类问法都能接住。
把 txt 丢进 input,图谱就开始长
安装是一条命令的事,graphrag init会在工作区生成input/目录、.env(填 LLM 的 API Key)和settings.yaml(流水线配置):
python -m pip install graphrag graphrag init把文本文件放进input/(支持 .txt、.csv、.json、.jsonl 等格式),仓库自带的 Operation Dulce 样本数据 可以直接拿来试。然后跑索引:
graphrag index这一步最耗 LLM 资源,第一次跑建议用小数据集加便宜模型。跑完output/里会出现一串 parquet:entities.parquet、relationships.parquet、communities.parquet、community_reports.parquet,这就是你的知识图谱的存储形态。
三种问法,对应三种检索
查询引擎的几种方法,按问题类型选:
- local:问具体实体,比如"Scrooge 是谁、和谁有关系",在知识图谱里找实体邻域,再用原文补上下文;
- global:问宏观,比如"这批文档的核心主题",对所有社区报告做 map-reduce 汇总;
- drift:两者混合,从社区报告出发再往局部下钻,适合"看似宏观、其实要细节"的问题。
graphrag query "What are the top themes in this story?" graphrag query "Who is Scrooge and his relationships?" --method local想直观看图谱?打开 Web 界面
命令行能用,但对比起来费劲。仓库里的 unified-search-app 是一个 Streamlit 演示应用:同一个问题,local、global、drift 三种检索的结果并排展示,Community Explorer 里还能逐份翻社区报告。在它的目录下执行uv sync和uv run poe start,浏览器打开本地 8501 端口即可,数据集路径按 README 里的格式写进listing.json。
效果不理想,先改配置再改数据
两个最该认识的旋钮:settings.yaml里的models决定用哪个 LLM 和嵌入模型;extract_graph控制实体与关系抽取的行为。抽出来的实体质量差,官方建议先跟着提示词调优文档调整默认提示词,模板就放在 packages/graphrag/graphrag/prompts/,通常比换模型见效快。另外,新文档进来时用graphrag update做增量索引,不必整图重算。
把graphrag index贴进终端,换上你自己的那批文档,看看图谱把你的数据组织成什么样。
【免费下载链接】graphragA modular graph-based Retrieval-Augmented Generation (RAG) system项目地址: https://gitcode.com/GitHub_Trending/gr/graphrag
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考