GraphRAG通过构建实体关系图谱实现跨实体多跳推理,解决传统RAG无法判断张三、李四、王五是否共参同一项目的问题;需部署服务、配置API端点、在Dify中创建自定义工具并设置参数与提示词。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

当用户提问“张三和李四在2023年合作过哪些项目,这些项目是否都涉及王五”,传统RAG往往只返回含“张三”“李四”“王五”的文档片段,无法判断三人是否在同一项目中真实交集。GraphRAG通过构建实体关系图谱,能精准定位跨实体的多跳路径,直接支撑此类复杂关系推理。
准备GraphRAG服务并导出图谱API端点
先拉取brightwang/graphrag-dify仓库代码,进入项目根目录执行构建命令:docker compose up -d --build。等待约3分钟,服务启动后访问http://localhost:8000/docs确认FastAPI文档页可打开。
用测试文档(如含人物、项目、时间、角色字段的CSV或Markdown)触发索引构建:调用/v1/index接口,传入{"input_dir": "/data/docs"}。这一步必须等返回{"status": "completed"}才可继续,中途中断会导致图谱不完整,【后续所有查询将返回空结果】。
索引完成后,记下图谱查询服务地址,通常是http://localhost:8000/v1/query。这个URL就是Dify里要配置的GraphRAG工具调用入口。
在Dify中创建自定义GraphRAG工具
登录Dify控制台 → 进入「应用」→ 选择目标问答应用 → 点击「工作流」→ 在节点面板点击「+ 添加节点」→ 选择「工具」→ 点击「创建自定义工具」。
填写工具基础信息:名称填“人物关系图谱查询”,描述写“支持跨实体多跳关系推理,适用于合作、隶属、参与等语义查询”。
在「API配置」区域粘贴上一步获得的http://localhost:8000/v1/query,请求方法选POST,认证方式选「无」(若部署时启用了密钥,则选「Bearer Token」并填入GRAPH_RAG_API_KEY环境变量值)。
关键一步:在「参数定义」中手动添加两个必填字段:query(类型string,必填,描述“自然语言问题,例如‘张三和李四共同参与的项目有哪些’”)和top_k(类型number,非必填,默认填3)。不要添加其他字段,多余参数会导致GraphRAG服务报错422。
配置工作流,让LLM理解图谱返回结构
把刚创建的“人物关系图谱查询”工具拖入工作流画布,连接到LLM节点之前。双击该工具节点,在「提示词增强」栏粘贴以下指令:
你是一个专业的关系推理助手。接下来你会收到一段结构化图谱查询结果,格式为JSON数组,每个对象含entity_path(实体路径列表,如["张三","XX项目","李四"])、relation_path(关系链,如["参与","合作"])、evidence_text(原文依据)。请严格基于这些字段生成回答,禁止虚构路径或补充未出现的实体。
在LLM节点设置中,关闭「启用上下文增强」选项。这项功能会把原始知识库chunk混入图谱结果,造成逻辑冲突——图谱已精确锁定三人共参项目,再塞入无关PDF段落反而干扰判断。
保存工作流并发布。此时输入测试问题:“张三和李四在2023年合作过哪些项目,这些项目是否都涉及王五”,系统将先调用GraphRAG服务检索子图,再由LLM按指定格式解析并输出确定性结论。


















