Agent如何在知识图谱中搜索: Graph-RAG

📅 2026/7/15 3:54:43
Agent如何在知识图谱中搜索: Graph-RAG
**检索增强生成RAG**2年前就已成为特定场景下企业落地Agent的重要技术。一是因为早先的大模型幻觉严重需要外置数据库检索信息以增强生成结果二是满足企业在特定背景下的对Agent的数据需求。RAG不是改变模型自己的训练参数而是配置了一个外置数据库供LLM访问现在市面上多数的RAG项目都利用了向量数据库Vector Database,因为文本数据的语义可被一个高维向量表示相近语义的语块在向量表现上也有更近的关系。但是向量数据库存在一个局限性LLM不能通过取出top-k个向量索引就理解出整个知识体系。我们这里举个例子我们把一本《红楼梦》分块、嵌入到向量数据库中做成RAG知识库这样如果LLM query请求“宝玉与黛玉”向量数据库通过相似度计算能够得到若干个相关的段落但是LLM此时依然不能直接找出宝玉和黛玉的关系是什么只有原文没有关系。那有没有什么数据库能够很好地表示出多元关系呢答案是——Knowledge-Graph知识图谱。知识图谱的出现不是现代的产物早在早期的人工智能探索上人们对于专家系统的知识库构建就采用了知识图谱。关键元素就是节点node/Entity和边edge/relationship其中节点可以表示为实体边可以表示为属性关系等。微软提出了GraphRAG的概念论文的故事是VectorDB RAG擅长局部信息检索但是全局理解较差。所以他们要构建Graph做RAG Database。https://arxiv.org/pdf/2404.16130GraphRAG不是像常规知识图谱那样用一点数据库语句直接搜索邻接表里面的某个节点连的所有边喂给LLM就行了而是要赋予Agent操作Graph的能力。我们下面来详细讨论如何建图对于GraphRAG,传统的文本切分方法依然有效比如按段落切分按固定tokens数量切分代码类的按格式json等切分。GraphRAG里LLM要能通过特定的prompt自己从文本中抽取关系建图保证数据库的动态性。例如OpenAI 发布 GPT-4微软将其整合到 Azure AI 服务。LLM抽取实体和关系最终形成如下图的关系OpenAI实体 | develop(关系) GPT-4实体 | Azure AI实体 | integrate关系Microsoft实体在GraphRAG中实体依然以嵌入向量的形式存入到图中不同于传统的向量数据库但他们由更显式的关系边连接和社区机制。Community微软发现应用Graph RAG时内部图可能存在千万个节点和关系边直接遍历还是很慢但是一部分节点能够生成一个个带有主题的,等级不同的社区Communities。微软的论文里面Community是在构建图的过程中一步一步通过Leiden community detection方法生成,且每个社区要生成summary这是微软的GraphRAG最有特色的部分。原论文的community示意图事实上你可以由自己的算法生成自己定义的Community比如在图论中你可以简单的定义Community为连通块不连通就分开当然也可定义一个Community是强连通分量这是你自己决定的在不同的场景下community的定义方法有着不同的意义。那它能做什么呢首先毋庸置疑的面对总结性质的全局问题快速生成结果。其次Community能够更好的展示更大尺度的分离和包含关系有助于加强检索效率。在下文的Agentic GraphRAG中如果构建了Community可以设计相应的工具供Agent剪枝加速搜索有点类似于跳表。Agentic GraphRAG事实上由微软的RAG方案不是图数据库有特色而是图数据库怎么进行Agentic操作。还是从传统的向量数据库RAG说对于单独的检索操作LLM可选的是query内容和参数比如定义一个json,可以像下面这样。{ query_content , top-k ,}那图数据库的query应该可以怎么做呢。我们可以利用图论算法来进行相当多的操作。比如对于一个医疗场景图以疾病类别药物类别症状等待内容为节点的图怎么进行Agentic操作呢。对于一些简单的问题类似“高血压的治疗药物”很明显我们可以通过直接遍历“高血压”节点的所有症状关系边就可以得到所有的症状节点。知识图谱也可以利用图论算法进行复杂操作比如之前著名的“历史人物找关系”功能就是对两个节点做最短路只要图是联通的即可。但是更复杂的问题呢比如“我同时患有高血压糖尿病疾病我有头晕、乏力的症状我长期服用降压药我…请问我应该怎么办”但是传统的硬编码规则系统无法解决复杂的推理问题这时我们便要引入Agentic RAG。具体怎么做呢但就检索来说我们可以定义以下工具def kth_shortest_path(node_1,node_2,k): # 判断两个节点的第k个最短路 return path [path_1,path_2...,path_k] def traverse(node,attribute): # 遍历一个节点的某一属性 return nodes [node_1,node_2...]def dfs(node,max_depth) # 针对某一节点进行深度优先搜索层数不超过max_depth return [[depth_1,node_1],[depth_1,node_2]...[depth_max,node_n]]这些工具留给LLM使用当用户问出上面的这种问题时“我同时患有高血压糖尿病疾病我有头晕、乏力的症状我长期服用降压药我…请问我应该怎么办”Agent进入循环借助Graph Tool进行检索简单的思考过程可能如下$ User: 我有高血压、糖尿病最近头晕、乏力还长期服用降压药怎么办[Agent] Entities: 高血压 | 糖尿病 | 头晕 | 乏力 | 降压药Plan:1. 查询疾病关联2. 分析症状原因3. 检查药物影响[Tool]kth_shortest_path(高血压,糖尿病,3)[Result]高血压 → 代谢综合征 → 糖尿病 | 高血压 → 心血管风险 → 糖尿病[Tool] traverse(头晕,related_conditions)[Result]头晕 ← 低血压 / 血糖异常 / 药物副作用[Tool]kth_shortest_path(降压药,头晕,3)[Result]降压药 → 血压下降 → 头晕 | 降压药 → 电解质变化 → 乏力[Agent]Evidence:- 高血压糖尿病 → 心血管风险增加- 降压药 → 可能导致低血压症状- 糖尿病 → 可能造成血糖波动[Generate]综合 Graph Evidence生成建议监测血压和血糖与医生确认药物方案关注异常症状。事实上用户提出的问题可能是更复杂宏观的的。考虑以下场景你拥有一个股份关系图谱里面有公司、股东、机构、基金等众多节点有股份持有比例、控制、共属同一集团等多个关系。问题是“帮我分析 A 公司背后的实际控制人以及它是否存在潜在关联企业。”这是一个更为复杂的问题除了A公司这一节点外没有任何实体如果没有Agent协助检索在以往除了人自己分析之外没有什么有效的办法解决。Agentic Graph-RAG会具备以下能力问题建模自我尝试生成出开始搜索的入口节点。关系探索对着某一个节点无目标的泛泛探索尝试用bfs,dfs等办法进行遍历试图获取有用的信息。多跳推理不只是一步一步遍历而是有所取舍的根据推理内容进行跳跃。异常判断Agent可以根据图发现异常或者被隐藏起来的一些关系。比如,自然人 - SPV公司 - 基金 - 上市公司,我们可能根本无法直观判断上市公司被此自然人控制但是Agent能弄漫长的关系网中推理出来。Hybrid Strategy事实上VectorDatabase和Graph Database是不应该相离的微软的论文也说明了这点。为什么如果你认真思考过GraphRAG的检索办法不难发现如何精准定位节点和减少无用探索是两个核心问题。在实际场景中Agent很可能会出现“迷路”的状况一是因为开始节点就找错了用户要它分析机构Agent从某个同名公司开始搜索二是进行过多的无用探索没有剪枝造成效率低下用户让它分析持股人结果它把所有边都探索一遍。Agent的图搜索算法可以被向量数据库检索指导甚至可以理解为一个A-star算法,啥意思这时候可以设计函数定义g(n)已经走过的路径成本h(n)距离目标的估计成本g(n) Graph traversal cost距离搜索原点的距离h(n) Embedding similarity(query,node)嵌入向量相似度得分加权算出最终得分我们把图中某个节点的位置插入向量数据库把节点本身嵌入进嵌入表。这样我们可以更精准的定义出关系更好的节点的位置然后进行剪枝。到这里会发现Agent实际上就是一个广义的决策对象它自己本身就可以作为A-star算法中的估计成本函数不过我们让这个估计成本函数变得可以在内部进行推理。相较于VectorDBGraphDB更符合人脑的结构关系探索就是人类的联想能力。但是相较于向量数据库Graph需要更优设计的图搜索算法和Agent引擎否则会成为一个浪费时间和tokens的陷阱。学AI大模型的正确顺序千万不要搞错了2026年AI风口已来各行各业的AI渗透肉眼可见超多公司要么转型做AI相关产品要么高薪挖AI技术人才机遇直接摆在眼前有往AI方向发展或者本身有后端编程基础的朋友直接冲AI大模型应用开发转岗超合适就算暂时不打算转岗了解大模型、RAG、Prompt、Agent这些热门概念能上手做简单项目也绝对是求职加分王给大家整理了超全最新的AI大模型应用开发学习清单和资料手把手帮你快速入门学习路线:✅大模型基础认知—大模型核心原理、发展历程、主流模型GPT、文心一言等特点解析✅核心技术模块—RAG检索增强生成、Prompt工程实战、Agent智能体开发逻辑✅开发基础能力—Python进阶、API接口调用、大模型开发框架LangChain等实操✅应用场景开发—智能问答系统、企业知识库、AIGC内容生成工具、行业定制化大模型应用✅项目落地流程—需求拆解、技术选型、模型调优、测试上线、运维迭代✅面试求职冲刺—岗位JD解析、简历AI项目包装、高频面试题汇总、模拟面经以上6大模块看似清晰好上手实则每个部分都有扎实的核心内容需要吃透我把大模型的学习全流程已经整理好了抓住AI时代风口轻松解锁职业新可能希望大家都能把握机遇实现薪资/职业跃迁这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】