如何使用LangChain PGVector检索集合中的全部文档?
LangChain PGVector 检索集合内全部文档的方法
LangChain PGVector支持直接检索集合内的全部文档,无需依赖向量相似度匹配,以下是两种可行的实现方式:
方法一:使用内置get()方法
PGVector类的get()方法默认返回集合内所有文档(需确保初始化时指定了正确的集合名称),也可通过空过滤条件明确指定获取全部内容。
示例代码:
from langchain.vectorstores.pgvector import PGVector from langchain.embeddings.openai import OpenAIEmbeddings # 初始化PGVector连接 CONNECTION_STRING = "postgresql+psycopg2://user:password@localhost:5432/dbname" COLLECTION_NAME = "your_collection_name" vector_store = PGVector( collection_name=COLLECTION_NAME, connection_string=CONNECTION_STRING, embedding_function=OpenAIEmbeddings() ) # 检索全部文档 all_docs = vector_store.get() # 遍历输出文档内容 for doc in all_docs["documents"]: print(doc)
方法二:执行自定义SQL查询
若需要更灵活的控制,可直接通过底层数据库连接执行SQL,精准获取指定集合的全部文档数据。
示例代码:
from sqlalchemy import create_engine # 初始化数据库连接 engine = create_engine("postgresql+psycopg2://user:password@localhost:5432/dbname") conn = engine.connect() # 执行SQL查询目标集合的全部文档 COLLECTION_NAME = "your_collection_name" query = f""" SELECT document FROM langchain_pg_embedding WHERE collection_id = (SELECT uuid FROM langchain_pg_collection WHERE name = '{COLLECTION_NAME}') """ result = conn.execute(query) all_docs = [row[0] for row in result] # 遍历输出文档内容 for doc in all_docs: print(doc) # 关闭数据库连接 conn.close()
注意事项
- 确保PostgreSQL中已存在LangChain PGVector自动创建的
langchain_pg_embedding和langchain_pg_collection表 - 替换代码中的数据库连接信息、集合名称为实际值
- 使用OpenAI Embeddings时需配置对应的API密钥环境变量
内容的提问来源于stack exchange,提问作者João Pedro Freire Cabral
相关产品推荐
相关产品推荐

