概述
来自langchain-graph-retriever 包的 GraphRetriever 提供了一个 LangChain
检索器,它结合了 非结构化 向量相似搜索与 结构化 元数据属性的遍历。这使您能够在 现有 的向量存储上执行基于图的检索。
集成细节
优势
- 基于现有元数据建立链接: 使用现有的元数据字段,无需额外处理。从现有向量存储中获取更多信息!
- 按需更改链接: 边缘可以即时指定,允许根据问题遍历不同关系。
- 可插拔的遍历策略: 使用内置的遍历策略(如 Eager 或 MMR),或定义自定义逻辑来选择要探索的节点。
- 广泛的兼容性: 提供了适用于各种向量存储的适配器,并可以轻松添加对其他存储的支持。
设置
安装
此检索器位于langchain-graph-retriever 包中。
实例化
以下示例将展示如何对关于动物的示例文档执行图遍历。前置条件
填充向量存储
本节展示了如何使用示例数据填充各种向量存储。 有关选择以下向量存储之一或为您的向量存储添加支持的说明,请参阅 适配器和支持存储 的文档。- AstraDB
- Chroma
- InMemory
使用 然后创建向量存储并加载测试文档:对于
astra 附加项安装 langchain-graph-retriever 包:ASTRA_DB_API_ENDPOINT 和 ASTRA_DB_APPLICATION_TOKEN 凭据,
请参阅 AstraDB 向量存储指南。:::注意
为了更快地进行初始测试,请考虑使用 InMemory 向量存储。
:::图遍历
此图检索器从一个与查询最匹配的动物开始,然后遍历到具有相同habitat 和/或 origin 的其他动物。
start_k=1)开始,
检索 5 个文档(k=5),并将搜索限制在最多与第一个动物相距 2 步的文档(max_depth=2)。
edges 定义了如何使用元数据值进行遍历。在这种情况下,每个动物都与具有相同 habitat 和/或 origin 的其他动物相连。
capybara、heron、frog、crocodile 和 newt 都具有相同的 habitat=wetlands,如它们的元数据所定义。这应该会增加文档的相关性,并提高 LLM 提供的答案质量。
与标准检索的比较
当max_depth=0 时,图遍历检索器表现得像标准检索器:
start_k=5)开始,并且不进行任何遍历(max_depth=0)。在这种情况下,边定义被忽略。
这本质上与以下相同:
使用方法
根据上述示例,invoke用于在查询上启动检索。
API 参考
要探索所有可用参数和高级配置,请参考 图 RAG API 参考。官方原文:src/oss/python/integrations/retrievers/graph_rag.mdx · 非官方翻译,译文由 AI 生成,以英文原文为准。