GraphRAG 与 Ollama:利用知识图谱增强响应生成
现代企业级 RAG(检索增强生成)系统正不断演进,力求突破传统向量搜索的局限。微软的 GraphRAG 提出了一种有前景的解决方案,它利用知识图谱来更深入地理解上下文并进行信息检索。本文将探讨 GraphRAG 的实际应用经验,它如何通过 Ollama 与本地语言模型集成,并通过一个以赛博朋克世界为背景的文本分析示例来展示其能力。目标是展示基于图的方法如何显著提高复杂信息系统中响应的准确性和相关性,从而提供更高水平的语义搜索和数据分析。
从向量搜索到知识图谱
许多 RAG 系统的核心是向量搜索,尽管其有效,但在处理复杂查询和模糊实体时仍存在一些局限。GraphRAG 提供了一种替代方法,它基于源文档构建一个全面的知识图谱。该图谱由实体(对象、人物、地点)及其之间的关系组成,使系统不仅能捕获关键词的存在,还能捕获它们在上下文中的语义关系。这种方法显著提高了检索信息的准确性和深度。
在 GraphRAG 中构建知识图谱的过程涉及从文本中提取实体和关系。可以使用专门的工具,例如带有 Leiden 插件的 Gephi,来可视化和分析此类图谱的结构。这不仅可以可视化相互连接,还可以发现 GraphRAG 自动识别和描述的隐藏社区或实体集群。值得注意的是,在图谱构建过程中,当相似但不完全相同的术语(例如“Molly Millions”和“Molly”)未自动合并时,可能会出现实体解析的挑战,这需要进一步的算法优化或手动校正。
GraphRAG 还会生成社区描述,这些描述存储在 community_reports.parquet 文件中。这些描述对于全局搜索至关重要,因为它们使大型语言模型(LLM)能够对数据中的主题集群有一个高层次的理解。这种方法显著超越了简单的文本块搜索,为响应生成提供了更结构化和上下文更丰富的内容。
GraphRAG 中的查询策略
GraphRAG 提供了多种搜索策略,每种策略都针对不同类型的查询进行了优化。系统的灵活性通过微调提示词实现,例如在 local_search_system_prompt.txt 和 global_search_reduce_system_prompt.txt 文件中。这使得系统行为能够适应特定任务和语言,即使问题以不同语言提出,只要有 LLM 和嵌入支持,也能确保响应的相关性。
全局搜索
全局搜索旨在回答需要理解整个数据集的广泛问题。它以 MapReduce 的方式运行,审查从知识图谱中提取的社区描述。这使得响应既具有普遍性,又深入且上下文完整。
示例查询:
graphrag query "这个故事中的主要赛博朋克元素有哪些?"
示例响应展示了系统如何从图谱的各个部分聚合信息,并使用 human_readable_id 引用特定元素。这允许用户在需要时,使用这些标识符深入研究源数据:
- 技术与生物的融合:刘易斯的神经扰动器和黑帮的义肢拇指的使用,展示了技术如何渗透身体并影响对环境的控制和互动。这些元素是赛博朋克主题的生动体现,其中有机与合成之间的界限变得模糊 [数据:报告 (5, 7, 12, 2, +更多)]。
- 反乌托邦城市景观:叙事描述了反乌托邦的城市空间,如夜城(Nighttown)和圆顶(Drome),它们象征着废墟、无法无天和地下犯罪网络。[数据:报告 (1, 8, 2, +更多)]。
- 企业竞争与非法交易:企业间谍活动和非法技术交易的元素,例如雅利安雷鬼乐队与黑帮程序之间的微波设备交易,突显了企业控制和高风险冲突的主题。[数据:报告 (0, 12, 2, +更多)]。
- 低技术与高技术的对比:与 LO TEK 及其使用的颐和园过滤器等产品相关的低技术象征意义,与先进的赛博格增强技术形成对比。[数据:报告 (9, 2, +更多)]。
- 赛博有机生物与技术技能:琼斯(Jones)——一只拥有军事背景的赛博海豚,以及莫莉·米利恩斯(Molly Millions)在控制模块使用方面的战斗技能,都展示了有机与合成的融合。[数据:报告 (11, 7, 2, +更多)]。
局部搜索
与全局搜索不同,局部搜索侧重于实体之间特定的相互关系。它将知识图谱中的相关数据与源文档片段相结合,非常适合回答关于特定对象或人物的详细问题。当需要深入了解系统中各个元素的角色和关系时,此模式特别有用。
示例查询:
graphrag query "琼斯(JONES)是谁,他主要有哪些关系?" -m local
示例响应展示了详细的关系:
琼斯(Jones)是一个被描述为拥有先进感知能力的赛博格海豚角色,与“欢乐园”(Funland)对象相关联。他的主要职责包括管理淡水水库并与“平静”(Calm)合作。琼斯在数据检索操作中扮演着关键角色,尤其是在与莫莉(Molly)和约翰尼(Johnny)的合作中,他独特的生理结构使其能够访问约翰尼芯片中的数据 [数据:实体 (28, 33);关系 (44, 51, +更多)]。
琼斯的主要关系包括:
- 与莫莉·米利恩斯(Molly Millions):参与从约翰尼芯片中提取数据的操作,展示了他的技术能力 [数据:实体 (33);关系 (44, 51, +更多)]。
- 与约翰尼(Johnny):在数据提取操作中的互动,琼斯利用他的传感器访问信息 [数据:实体 (33);关系 (44, 51, +更多)]。
- 与“鱿鱼”(Squid,超导量子干涉器件):使用“鱿鱼”设备读取痕迹,这与军事技术有关 [数据:实体 (19);关系 (25, +更多)]。
- 与黑帮(Yakuza):通过黑帮担心“鱿鱼”可能会从约翰尼的思维中提取他们的程序痕迹而产生的间接联系 [数据:关系 (25);实体 (19)]。
Ollama 的作用及其他搜索模式
将 Ollama 与 GraphRAG 结合使用,可以实现语言模型的本地部署,这对于计算资源有限或数据隐私要求严格的项目尤为重要。Ollama 即使使用 4B 模型也能有效工作,无需昂贵的云端 LLM 即可提供 RAG 系统功能。这显著降低了在企业环境中试验和部署基于图的 RAG 系统的门槛。
除了全局和局部搜索,GraphRAG 还提供 BASIC 和 DRIFT 模式:
- 基础搜索(BASIC Search):这代表了跨文档块的标准向量搜索。它作为比较性能和响应质量与更复杂的基于图的方法的基准。
- 漂移搜索(DRIFT Search):此功能被定位为 GraphRAG 的一个关键优势,类似于传统 RAG 系统中的查询扩展。然而,值得注意的是,漂移搜索是资源密集型的,执行时间显著更长,这对于响应时间要求高的系统可能至关重要。
关键要点
- 克服向量搜索局限:GraphRAG 利用知识图谱进行深度语义分析和信息检索,在准确性和上下文方面超越了传统的向量方法。
- 结合 Ollama 进行本地部署:与 Ollama 集成使 GraphRAG 能够有效利用本地语言模型,降低计算成本并增强数据隐私。
- 多样化的搜索策略:系统提供全局、局部、BASIC 和 DRIFT 搜索模式,每种模式都针对特定查询类型(从广泛到详细)进行了优化。
- 灵活配置与适应:修改提示词和分析生成的知识图谱(
graph.graphml、community_reports.parquet)的能力,为特定项目需求提供了高度的控制和适应性。 - 增强响应相关性:通过将知识结构化为图谱并应用高级查询算法,GraphRAG 显著提高了生成响应的质量和相关性,使其更具信息性和准确性。
— Editorial Team
暂无评论。