全球社区摘要检索器
别名
- Microsoft GraphRAG
- 全局检索器
- 以查询为中心的摘要
所需图结构
背景
某些针对整个数据集提出的问题,不仅与某些数据块中存在的内容有关,而且还寻求数据集中贯穿的总体信息。前面提到的模式不适合回答这类“全局”问题。
描述
给定用户问题和特定社区级别,检索社区摘要并将其提供给LLM。
用法
此模式对于具有全局性质的问题非常有用。例如,总结整个数据库的内容或查找整个数据中的主题结构。设置所需图模式的工作量相当大,因为需要执行许多步骤:实体和关系提取、社区检测和社区摘要。需要考虑这些任务中哪些应由LLM执行,哪些任务可以以不同方式处理,以保持预处理成本可接受。
所需预处理
除了提取实体及其关系外,我们还需要在领域图中形成分层社区。这可以通过使用Louvain或Leiden聚类算法来完成。对于每个社区,LLM将实体和关系信息总结为社区摘要。
检索查询
此方法的默认实现不使用向量搜索来获取与问题相似的社区。它只是获取给定级别的所有社区摘要,并将所有这些摘要(可能分批)传递给LLM。
MATCH (c:__Community__)WHERE c.level = $levelRETURN c.full_content AS output
变体
您可以使用带有提取实体、社区和社区摘要的词汇图的几种变体
-
本地检索器可以首先对实体嵌入执行向量搜索,然后遍历到相关实体、数据块或社区(例如,参见将Microsoft GraphRAG集成到Neo4j中)。
-
根据问题,我们还可以首先对社区摘要的嵌入执行向量相似度搜索,以识别哪个子图与问题相关,然后从社区遍历到其实体和数据块以检索附加信息。
-
DRIFT是一种多阶段方法,它首先执行通用或基于向量的社区搜索,然后从这些结果中生成用于本地搜索的附加问题。然后对所有结果进行重新排序,并一起用于生成最终答案。
延伸阅读
- 从局部到全局:一种基于图RAG的查询聚焦摘要方法(2024年4月)
- 使用Neo4j和LangChain实现“从局部到全局”的GraphRAG:构建图(2024年7月)
- 将Microsoft GraphRAG集成到Neo4j中(2024年7月)
- 介绍DRIFT搜索:结合全局和局部搜索方法以提高质量和效率 - 微软研究院