GraphRAG 10 分钟跑通知识图谱 RAG:从一堆文本到可提问的图谱

GraphRAG 10 分钟跑通知识图谱 RAG:从一堆文本到可提问的图谱

【免费下载链接】graphrag A modular graph-based Retrieval-Augmented Generation (RAG) system 【免费下载链接】graphrag 项目地址: https://gitcode.com/GitHub_Trending/gr/graphrag

GraphRAG 是微软开源的模块化图检索增强生成(RAG)系统:用 LLM 从非结构化文本里提取实体与关系,自动建出分层知识图谱和社区报告,再基于图谱回答问题。它替你省掉手写实体标注和建图脚本的功夫。按这篇 GraphRAG 知识图谱入门走完最小流程,10 分钟内你的终端就能对一堆文本提问并拿到带引用的回答。

跑通最小流程 🚀

  • 前置依赖:Python 3.10-3.12、一个 LLM 的 API key(写入 .env)、可访问模型服务端的网络
git clone https://gitcode.com/GitHub_Trending/gr/graphrag
cd graphrag
pip install graphrag

克隆仓库;从 PyPI 装 graphrag CLI

graphrag init
graphrag index

init 生成 .env、settings.yaml 和 input 目录;把 GRAPHRAG_API_KEY 填进 .env,往 input/ 丢一个 .txt 文件;index 跑完整抽取、建图、社区检测流水线

跑完你能看到两样东西:output/ 目录下的 documents、entities、relationships、communities、community_reports 等 7 张 parquet 表;终端里直接打印出对语料的回答,附引用编号,可拿 pandas 打开 parquet 表做后续分析。

GraphRAG 知识图谱索引流水线

终端中逐工作流滚动的索引进度条

它是怎么工作的

整条流水线分三步。第一步,长文按 token 数切成文本块(text unit),LLM 逐块阅读,抽出「实体-关系-实体」三元组和实体描述;同名实体跨块合并后,所有三元组聚成一张知识图谱。这一步替代了传统做法里人工标注实体的环节。

第二步,用 Leiden 社区检测算法(一种图聚类算法)把图谱自顶向下聚成分层社区,得到一棵社区树。第三步,LLM 为每个社区读它内部的实体和关系,写一段摘要报告。

这样设计的原因:「整个语料讲什么」这类全局问题,直接 map-reduce 扫社区报告就能回答,不必把原文全塞进上下文;「某个实体是什么」这类局部问题,定位到图谱里的子图再拼原文片段即可。DRIFT 检索则先用社区报告收窄方向,再下钻到局部事实,上下文覆盖比纯 Local 更广。向量嵌入和声明(claim)抽取是可选步骤,默认流程会一并产出嵌入表。

GraphRAG 知识图谱实体网络

不同颜色代表不同社区的实体关系网络

一个真实场景演示

场景取自官方 Getting Started:索引《A Christmas Carol》全文,然后对它提问。

准备:把小说 .txt 放进 input/,.env 填好 GRAPHRAG_API_KEY,settings.yaml 保持默认。

操作:

graphrag index
graphrag query "What are the top themes in this story?"

前者跑完整流水线,一般几分钟;后者对同一份索引提问

看到什么:终端先打印一条扫全部社区报告得到的主题级回答(Global search,默认方法),换一条 graphrag query "..." --method local 则结合图谱和原文片段回答人物类问题,答案带引用编号,可回溯到具体文本块。想横向对比 Local、Global、DRIFT、Basic 四种检索,可进 unified-search-app/ 跑 uv sync && uv run poe start,浏览器访问 http://localhost:8501:

GraphRAG 知识图谱统一搜索应用主页

左侧勾选搜索方式,右侧并排对比答案

常用配置速查

  • settings.yaml 的 models 段:选聊天与嵌入模型,底层 LiteLLM 支持 100+ 提供商,见 docs/config/models.md
  • settings.yaml 的 chunking 段:size/overlap 控制切块 token 粒度,改它直接影响抽取精度与成本,见 docs/config/yaml.md
  • settings.yaml 的 input 段:指定 .txt/.csv/.json/.parquet 等文件类型与字段映射
  • settings.yaml 的 output 段:切输出表格式与落地位置,表结构见 docs/index/outputs.md
  • prompts/ 目录 + graphrag prompt-tune 命令:用自有语料自动调优提示词
  • 内置 LLM 缓存:相同输入直接返回缓存结果,重复运行不重复计费

你可能会问

我建这个索引要花多少钱?

费用取决于语料量和模型单价。官方建议先用教程数据集加便宜快速的模型试水,再上大批量任务;LLM 缓存会让重复运行同一批输入不再重复计费。

我不用 GPT 模型可以吗?

可以。底层走 LiteLLM,settings.yaml 的 models 段里能配 Azure OpenAI、Anthropic、Ollama 等 100+ 提供商。

新增了文档,我必须全量重建索引吗?

不用。用 graphrag update 命令做增量更新,只处理新增文档。切块大小记得在 chunking 段提前调好,抽取精度和成本都跟着它变。

【免费下载链接】graphrag A modular graph-based Retrieval-Augmented Generation (RAG) system 【免费下载链接】graphrag 项目地址: https://gitcode.com/GitHub_Trending/gr/graphrag

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值