3 条命令跑通 GraphRAG:从零搭一张能提问的知识图谱
【免费下载链接】graphragA modular graph-based Retrieval-Augmented Generation (RAG) system项目地址: https://gitcode.com/GitHub_Trending/gr/graphrag
GraphRAG 是一个基于图的检索增强生成(RAG)系统:把散落的文档喂进去,它自动画出实体和关系,最后让你像问同事一样提问。目标是带你从零跑通第一张知识图谱。
先说个真实点的场景 📚
一位中学老师要备一堂课。教案在某个 U 盘里,课件在网盘,往年的试卷扫描件躺在邮箱,知识点之间到底怎么关联,只有她自己心里清楚。她想做个检索,却发现资料根本不在一起,格式还五花八门,关键词一搜就是零——因为资料之间缺少一条能走的线。
GraphRAG 到底管哪件事
说白了,GraphRAG 干的就是把文档变成知识图谱这件事。它分三步走:读文档、从文字里抽实体和关系、把这些关系组织成一张图,之后提问就沿着这张图来回答。
图注:一张实体关系图谱
和普通 RAG 的差别就卡在这一步。普通 RAG 是把原文切块、再拿问题去检索;GraphRAG 是先理解原文结构、建出一张图,再用这张图去支撑回答。它不做什么也得讲清楚:它不帮你清洗脏数据,也不替你决定哪些资料该用——喂进去什么,它就建什么的图。
跑起来之前
先说个前提:GraphRAG 是个 Python 包,装它不用 clone 整个仓库。装 Python 3.10–3.12,建个虚拟环境,然后跑python -m pip install graphrag,装完你手里就多一个命令行工具,后面全程用它。想看源码或示例 notebook 的话,也可以git clone https://gitcode.com/GitHub_Trending/gr/graphrag,但纯跑起来,pip 装就够了。记得填好你的大模型 API key,不然建图那一步会卡住,命令不长,放心。
从零建出你的第一张图谱
把你的资料喂进去
第一步是建工作区。在一个空目录里跑graphrag init,它会生成三个东西:放 API key 的.env、流水线配置settings.yaml,还有一个空的input文件夹。
把你的资料丢进input就行——纯文本、Markdown、CSV、JSON 都能吃,具体支持哪些格式,看 graphrag-input 模块 的文档。资料不必先整理,散着丢进去也没关系。
graphrag init让 GraphRAG 自己建图
资料就位后,一条命令开始建图:
graphrag index它会走一遍完整流水线:读文本、切块、让大模型抽实体和关系、聚类成社区、生成社区报告。中途进度条会跳好一阵,耐心等几分钟。跑完会多出一个output文件夹,里面是一堆 parquet 文件,还有那张图谱。
图注:建图过程自动执行
像问同事一样问图谱
图谱建好,直接开口问:
graphrag query "这批资料在讲什么" graphrag query "某个概念都牵扯了谁" --method local默认的 global 搜索适合问全局性问题,比如整批资料到底在讲什么;加--method local则聚焦某个实体,问它和谁有关系。另外还有drift和basic两种。回答是沿着图谱生成的,不是凭空编的。
图注:本地与全局搜索对比
几个值得花 10 分钟试的玩法
把三年的教案、课件、考纲都丢进input,然后问一句「哪些知识点反复出现」。这种全局问题正是图谱擅长的,它能把散在几十份文档里的线索串起来,而不是只召回某一份。
再试试把图谱画出来。先在settings.yaml里打开snapshots的graphml选项,重新跑一遍graphrag index,output里会多一个graph.graphml。拿它打开 Gephi,就能看到节点和边长什么样,具体步骤参考 可视化指南。
图注:Gephi 里的实体关系
最后,同一份资料换个角度再问一遍,比较 local 和 global 给的答案差多少。多试几次,你对这两种搜索方式的直觉就建立起来了。
写在最后
GraphRAG 的价值,是把「一堆散文件」变成了「一张能提问的图」。代价是它会调用不少大模型算力,正式上手前建议先用小数据试水。等你跑通第一张图、问出第一个像样的答案,会发现这套东西比想象中顺。
【免费下载链接】graphragA modular graph-based Retrieval-Augmented Generation (RAG) system项目地址: https://gitcode.com/GitHub_Trending/gr/graphrag
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考