Skip to main content
一个使用 postgres 作为后端并利用 pgvector 扩展的 LangChain 向量存储抽象实现。
代码位于名为 langchain-postgres 的集成包中。

状态

此代码已从 langchain-community 移植到一个名为 langchain-postgres 的专用包中。已进行以下更改:
  • langchain-postgres 仅适用于 psycopg3。请将您的连接字符串从 postgresql+psycopg2://... 更新为 postgresql+psycopg://langchain:langchain@...(是的,驱动程序名称是 psycopg 而不是 psycopg3,但它将使用 psycopg3)。
  • 嵌入存储和集合的架构已更改,以使 add_documents 能够与用户指定的 ID 正确配合工作。
  • 现在必须传递一个显式的连接对象。
目前,没有机制支持在架构更改时轻松迁移数据。向量存储中的任何架构更改都将要求用户重新创建表并重新添加文档。 如果这是一个问题,请使用其他向量存储。如果不是,此实现应该适合您的用例。

设置

首先下载合作伙伴包:
您可以运行以下命令来启动一个带有 pgvector 扩展的 postgres 容器:

凭证

运行此笔记本不需要任何凭证,只需确保您已下载 langchain-postgres 包并正确启动了 postgres 容器。 如果您想获得一流的模型调用自动跟踪,也可以通过取消注释以下内容来设置您的 LangSmith API 密钥:

实例化

管理向量存储

向向量存储添加项目

请注意,通过 ID 添加文档将覆盖任何与该 ID 匹配的现有文档。

从向量存储中删除项目

查询向量存储

一旦您的向量存储已创建并且相关文档已添加,您很可能希望在链或代理运行期间对其进行查询。

过滤支持

该向量存储支持一组过滤器,可以应用于文档的元数据字段。

直接查询

执行简单的相似性搜索可以按如下方式进行:
如果您提供一个包含多个字段但没有运算符的字典,顶层将被解释为逻辑 AND 过滤器
如果您想执行相似性搜索并接收相应的分数,可以运行:
有关可以在 PGVector 向量存储上执行的不同搜索的完整列表,请参阅 API 参考

通过转换为检索器进行查询

您还可以将向量存储转换为检索器,以便在链中更轻松地使用。

用于检索增强生成

有关如何将此向量存储用于检索增强生成 (RAG) 的指南,请参阅以下部分:

API 参考

有关所有 PGVector VectorStore 功能和配置的详细文档,请访问 API 参考