Skip to main content
本指南介绍了 Graph RAG。有关所有支持的功能和配置的详细文档,请参阅 Graph RAG 项目页面

概述

langchain-graph-retriever 包中的 GraphRetriever 提供了一个 LangChain retriever,它将向量上的非结构化相似性搜索 与元数据属性的结构化遍历相结合。这实现了在现有向量存储上进行基于图的 检索。

集成详情

优势

设置

安装

此检索器位于 langchain-graph-retriever 包中。

实例化

以下示例将展示如何对关于动物的示例文档执行图遍历。

先决条件

填充向量存储

本节展示如何使用示例数据填充各种向量存储。 如需帮助选择下面的向量存储之一,或添加对您向量存储的支持,请查阅有关 适配器和支持的存储 的文档。
使用 astra 扩展安装 langchain-graph-retriever 包:
然后创建向量存储并加载测试文档:
对于 ASTRA_DB_API_ENDPOINTASTRA_DB_APPLICATION_TOKEN 凭据, 请参阅 AstraDB 向量存储指南:::note 为了更快的初始测试,建议使用 InMemory 向量存储。 :::

图遍历

此图检索器从与查询最匹配的一个动物开始,然后 遍历具有相同 habitat 和/或 origin 的其他动物。
上述内容创建了一个图遍历检索器,它从最近的 动物 (start_k=1) 开始,检索 5 个文档 (k=5) 并将搜索限制为距离第一个动物最多 2 步的文档 (max_depth=2)。 edges 定义了元数据值如何用于遍历。在这种情况下,每只 动物都与具有相同 habitat 和/或 origin 的其他动物相连。
图遍历通过利用数据中的结构化关系来提高检索质量。与标准相似性搜索(见下文)不同,它为选择文档提供了清晰、 可解释的理由。 在这种情况下,文档 capybara, heron, frog, crocodilenewt 都 共享相同的 habitat=wetlands(由其元数据定义)。这应该增加 文档相关性和 LLM 答案的质量。

与标准检索的比较

max_depth=0 时,图遍历检索器的行为类似于标准检索器:
这将创建一个检索器,它从最近的 5 个动物开始 (start_k=5), 并在不进行任何遍历的情况下返回它们 (max_depth=0)。在这种情况下,边定义 将被忽略。 这本质上等同于:
对于这两种情况,调用检索器将返回:
这些文档仅基于相似性进行连接。存储中存在的任何结构数据 都会被忽略。与图检索相比,这可能会降低文档 相关性,因为返回的结果有帮助回答查询的可能性较低。

用法

遵循上述示例,invoke 用于针对查询启动检索。

API 参考

要探索所有可用参数和高级配置,请参阅 Graph RAG API 参考