使用PGVector实现LangChain的向量存储:全面指南


引言

在现代信息处理系统中,向量存储是构建高效信息检索和增强生成模型的关键组件。本文将介绍如何利用 PGVectorlangchain-postgres 包,通过 PostgreSQL 实现 LangChain 向量存储,并讨论其设置、使用和常见问题。

主要内容

1. 环境设置

首先,确保安装 langchain_postgres 包,并启动一个包含 pgvector 扩展的 Postgres 容器:

pip install -qU langchain_postgres

启动容器:

docker run --name pgvector-container -e POSTGRES_USER=langchain -e POSTGRES_PASSWORD=langchain -e POSTGRES_DB=langchain -p 6024:5432 -d pgvector/pgvector:pg16

2. 向量存储的初始化

在初始化向量存储时,我们需要提供数据库连接、嵌入模型和其他配置。例如,我们可以使用 OpenAI 的嵌入模型:

from langchain_openai import OpenAIEmbeddings
from langchain_postgres import PGVector

embeddings = OpenAIEmbeddings(model="text-embedding-3-large")
connection = "postgresql+psycopg://langchain:langchain@localhost:6024/langchain"  # 使用API代理服务提高访问稳定性

vector_store = PGVector(
    embeddings=embeddings,
    collection_name="my_docs",
    connection=connection,
    use_jsonb=True,
)

3. 添加和管理文档

可以通过给定ID的方式添加和删除文档:

from langchain_core.documents import Document

docs = [
    Document(page_content="there are cats in the pond", metadata={"id": 1, "location": "pond", "topic": "animals"}),
    # 其他文档...
]

vector_store.add_documents(docs, ids=[doc.metadata["id"] for doc in docs])
vector_store.delete(ids=["3"])

4. 查询数据

你可以通过相似度搜索来查询存储的文档:

results = vector_store.similarity_search(
    "kitty", k=10, filter={"id": {"$in": [1, 5, 2, 9]}}
)
for doc in results:
    print(f"* {doc.page_content} [{doc.metadata}]")

常见问题和解决方案

  1. 数据迁移问题: 目前没有自动迁移功能,需要手动重建表和重新添加文档。
  2. 网络访问问题: 由于某些地区的网络限制,建议使用API代理服务来提高访问稳定性。
  3. 驱动兼容性: 确保使用 psycopg3 连接数据库。

总结和进一步学习资源

本文介绍了使用 PGVector 进行向量存储的基本方法及其设置步骤。对于想要更多了解 RAG(检索增强生成)技术的用户,可以参考以下资源:

参考资料

  • LangChain 官方文档: https://api.python.langchain.com
  • PostgreSQL 官方文档: https://www.postgresql.org/docs/

如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!

—END—

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值