摘要
7月份,重磅 – 微软官宣正式在GitHub开源GraphRAG,GitHub将近19K star,业界关注度很高,也出现了不少基于GraphRAG的解决方案。
沉寂了一段时间,近日微软更新了Graphrag 0.4.0版本,Graphrag v0.4.0 版本发布,包含增量索引、DRIFT图推理搜索查询模块、嵌入式工作流程改进、性能优化和错误修复等多项改进。
Key Takeaways:
* 添加了增量索引和 DRIFT图推理搜索模块。
* 改进了嵌入式工作流程,并添加了相应的 CLI 和示例 Notebook。
* 进行了大量的错误修复和性能优化,包括合并实体、优化子流程和移除冗余代码等
* 添加了运行时存储选项和其他配置选项,提高了灵活性。
* 更新了依赖项并改进了文档。
* 重构了部分代码,提高了代码可维护性和可读性。
* 添加了对托管身份的支持。
Source:
https://github.com/microsoft/graphrag/releases/tag/v0.4.0
https://github.com/microsoft/graphrag
https://www.microsoft.com/en-us/research/blog/introducing-drift-search-combining-global-and-local-search-methods-to-improve-quality-and-efficiency/
正文:
GraphRAG 是一种使用大型语言模型 (LLM) 从非结构化文本文档创建知识图谱和摘要的技术,并利用它们来改进私有数据集上的检索增强生成 (RAG) 操作。它提供了大型私有非结构化文本文档的全面全球概览,同时还支持探索详细的本地化信息。通过使用 LLM 创建全面的知识图谱,以连接和描述这些文档中包含的实体和关系,GraphRAG 利用数据的语义结构来生成对各种复杂用户查询的响应。未知
是 Microsoft 的研究合作者之一,最近通过开发一种处理本地查询的新方法来扩展这项技术的前沿:DRIFT 搜索(具有灵活遍历的动态推理和推理)。此方法基于 Microsoft 的 GraphRAG 技术构建,结合了全局搜索和本地搜索的特征,以平衡计算成本和质量结果的方法生成详细的响应。
GraphRAG 的工作原理
GraphRAG 有两个主要组件,一个索引引擎和一个查询引擎。
索引引擎将文档分解为较小的块,将它们转换为具有实体和关系的知识图谱。然后,它会识别图表中的社区,并生成代表全局数据结构的摘要或“社区报告”。
查询引擎利用 LLM 在非结构化文本上构建图形索引,并以两种主要模式查询它们:
-
全局搜索处理跨整个数据集的查询。这种模式综合了来自不同底层来源的信息,以回答需要对整个语料库有广泛理解的问题。例如,在关于科技公司研究工作的数据集中,全球查询可能是:“过去五年中,多个组织中出现了哪些 AI 研究趋势?虽然全局搜索可以有效地连接分散的信息,但全局搜索可能会占用大量资源。
-
本地搜索针对目标查询进行优化,从与用户输入密切相关的较小文档子集中提取。当答案位于少量文本单元内时,此模式效果最佳。例如,一个查询询问:“Microsoft 的 Cosmos DB 团队在 10 月 4 日发布了哪些新功能和集成?
这些摘要的创建通常涉及人工回路 (HITL),因为用户输入决定了信息的摘要方式(例如,提取了哪些类型的实体和关系)。要使用 GraphRAG 为文档编制索引,需要明确描述预期用户角色(如索引阶段中所定义),因为它会影响节点、边缘和社区报告的构建方式。
DRIFT Search 简介:结合全局和本地搜索方法以提高质量和效率
DRIFT Search 通过在搜索过程中包含社区信息,引入了一种新的本地搜索查询方法。这极大地扩展了查询起点的广度,并导致在最终答案中检索和使用更多种类的事实。此新增功能通过为本地搜索提供更全面的选项来扩展 GraphRAG 查询引擎,该选项使用社区见解将查询细化为详细的后续问题。这些后续操作允许 DRIFT 处理可能与用户在索引时定义的原始提取模板不完全一致的查询。
Answer details | Drift (DS_Default) | Local (LS) |
---|---|---|
Supply Chain供应链 | Traced back to cinnamon in Ecuador and Sri Lanka 追溯到厄瓜多尔和斯里兰卡的肉桂 [Redacted Brand] and [Redacted Brand] Brands Impacted 受影响的 [[已隐去品牌] 和 [已隐去品牌] 品牌 Products sold at [Redacted Brand] and [Redacted Brand] 在 [已编辑品牌] 和 [已编辑品牌] 处销售的产品 |
Plants in Ecuador 厄瓜多尔的工厂 |
Contamination Levels 污染水平 |
2000 times higher than FDA max 比 FDA max 高 2000 倍 |
Blood lead levels ranging from 4 to 29 micrograms per deciliter 血铅水平为 4 至 29 μg/分升 |
Actions行动 | Recalls and health advisories 召回和运行状况建议 Investigating plant in Ecuador 厄瓜多尔工厂调查 Issued warnings to retailers 向零售商发出警告 |
Recalls and health advisories 召回和运行状况建议 |
表 1:两种搜索技术(DRIFT 和本地搜索)对美联社文章数据集的汇总响应示例:“描述 2023 年 11 月期间美国食品和药物管理局和美国疾病控制与预防中心正在采取哪些行动来解决美国苹果肉桂果泥和苹果酱袋中的铅污染”。如图所示,DRIFT 搜索能够显示其他两种方法无法立即获得的细节。
GraphRAG 自动调优提供快速适应新领域的能力
GraphRAG 利用大语言模型生成的知识图谱显著改善了检索增强生成 (RAG) 中的复杂问答。探索 GraphRAG 对新数据集的自动调优,使其更加准确和相关。
DRIFT Search:分步过程
入门:当用户提交查询时,DRIFT 会将其与语义上最相关的前 K 个社区报告进行比较。这将生成一个初始答案以及几个后续问题,这些问题充当全局搜索的轻量级版本。为此,我们使用 Hypothetical Document Embeddings (HyDE) 扩展查询,以提高敏感度(召回),嵌入查询,根据所有社区报告查找查询,选择前 K,然后使用前 K 尝试回答查询。目的是利用高级抽象来指导进一步的探索。
-
后续:在引导词到位后,DRIFT使用本地搜索变种执行每个后续操作。这会产生额外的中间答案和后续问题,形成一个不断完善的循环,直到搜索引擎满足其终止标准,目前该标准配置为两次迭代(进一步研究将探讨奖励函数以指导终止)。此阶段代表了一种全球信息驱动的查询精炼。使用全球数据结构,即使初始查询与索引角色偏离,DRIFT也能在知识图谱中导航至特定的相关信息。这个后续过程使DRIFT能够根据新出现的信息调整其方法。
-
输出层次:最终输出是问题和答案的层次结构,根据它们与原始查询的相关性进行排名。可以自定义此层次结构以满足特定的用户需求。在基准测试期间,一种朴素的 map-reduce 方法汇总了所有中间答案,每个答案的权重相等。

图 1.一个完整的 DRIFT 搜索层次结构,突出显示了 DRIFT 搜索过程的三个核心阶段。A(入门):DRIFT 将用户的查询与语义相关性最高的 K 个社区报告进行比较,生成广泛的初始答案和后续问题,以指导进一步探索。B (Follow-Up):DRIFT 使用本地搜索来优化查询,生成额外的中间答案和后续问题,从而提高特异性,引导引擎获得上下文丰富的信息。图中每个节点上的字形显示算法继续查询扩展步骤的置信度。C(输出层次结构):最终输出是按相关性排序的问题和答案的分层结构,反映了全局见解和本地优化的平衡组合,使结果具有适应性和全面性。
为什么 DRIFT 搜索有效
DRIFT 搜索通过动态地将全局洞察与本地细化相结合而表现出色,从而支持从高级摘要导航到知识图谱中的原始文本块。这种分层方法可确保保留详细的上下文丰富的信息,即使初始查询与索引期间使用的角色不同。通过将广泛的问题分解为细粒度的后续行动,DRIFT 可以捕获精细的详细信息并根据新出现的上下文进行调整,使其能够适应不同的查询类型。这使得它在处理需要广度和深度的查询时特别有效,而不会丢失特定细节。
?????基准测试 DRIFT 搜索?????
如图所示,我们通过对各种用例与 GraphRAG 本地搜索和高度调整的语义搜索方法变体进行比较分析,测试了 DRIFT 搜索的有效性。该分析根据关键指标评估了每种方法的性能,例如:
-
全面性 :回答是否回答了问题的所有方面?
-
回答的多样性 :回答是否提供了对问题的不同观点和见解?
在我们的结果中,DRIFT 搜索在指标的全面性和多样性方面都提供了明显更好的结果。我们设置了一个实验,我们从美联社提取了 5K+ 篇新闻文章,并使用 GraphRAG 提取了这些文章。摄取后,我们在此数据集上生成了 50 个“本地”问题,并使用 DRIFT 和本地搜索为每个问题生成答案。这些“本地”问题是针对数据集中特定细节的问题,这些细节可以归因于包含答案的少量文本单元。然后,这些答案被 LLM 评委用于对全面性和多样性进行评分。
-
在全面性方面,DRIFT 搜索在 78% 的情况下优于本地搜索。
-
在多样性方面,DRIFT 搜索在 81% 的时间里优于本地搜索。
可及性
DRIFT 搜索现已在 GraphRAG 上提供
GitHub ( https://github.com/microsoft/graphrag )。
未来的研究方向
DRIFT的未来版本将整合改进版的全球搜索,使其能够更直接地解决目前最好由全球搜索服务的问题。希望能够朝着一个单一查询接口的方向发展,能够服务于本地和全球各种问题。这项工作将进一步发展DRIFT的终止逻辑,可能通过一种奖励模型来平衡新信息与冗余。此外,使用全球或本地搜索模式执行后续查询可能会提高效率。一些查询需要更广泛的数据访问,这可以通过利用查询路由器和一种使用更少社区报告、令牌和整体资源的轻量级全球搜索变体来实现。
DRIFT搜索是正在探索的GraphRAG一系列重大优化中的第一个。它展示了全球索引如何甚至可以使本地查询受益。在我们的未来工作中,我们计划探索更多的方法,通过利用GraphRAG创建的知识图谱来提高系统的效率。
参考文献