将 Microsoft GraphRAG 集成到 Neo4j
Microsoft 的 GraphRAG 实现已经成功地用于从大型语言模型(LLM)处理的源文档中构建知识图谱。输出结果是关于实体及其关系的结构化信息,然后使用图算法,如 Leiden 社区检测算法,来生成摘要。本文讨论了如何将 GraphRAG 输出存储在 Neo4j 中,并使用 LangChain 或 LlamaIndex 实现局部和全局检索器。
使用的数据集是查尔斯·狄更斯的《圣诞颂歌》。尽管可以跳过图提取过程,但一些重要的配置包括选择实体类型(组织、人、事件、地理)并将最大收益设置为执行多次提取以获取综合信息。从图提取管道输出的结果存储为 Parquet 文件,然后将其导入 Neo4j。导入过程可以使用免费的云 Aura 实例或本地 Neo4j 环境,相关代码提供在 GitHub 上的 Jupyter 笔记本中。
在将数据导入 Neo4j 之后,使用 Cypher 查询对提取的数据进行简单的图分析,以了解数据的结构和内容。例如,可以分析提取的实体分布和节点度以获取数据见解。使用 Neo4j 浏览器来可视化和验证提取的实体及其关系。
对于检索器的实现,局部检索器使用向量搜索来识别相关节点,然后遍历链接信息并将其注入 LLM 提示中。向量索引被配置,并且检索查询被定义以收集相关文本数据,如文本块、社区报告和关系描述。这使用 LangChain 和 LlamaIndex 实现,每个框架都适用检索查询。
另一方面,全局检索器会在指定的层次结构级别上迭代社区摘要,生成中间摘要和最终响应。这种方法简化了检索过程,但需要选择适合的层次结构级别以获得最佳结果。
总之,将 GraphRAG 与 Neo4j 和检索器框架(如 LangChain 和 LlamaIndex)集成,可以从文本源中提取的结构化知识图谱中执行复杂的数据检索,利用局部和全局检索策略。这种实现展示了 GraphRAG 在分析和查询结构化信息方面的实际应用。