You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过LangChain从PGVector多集合中检索数据?

实现PGVector多集合灵活检索的方案

方法1:合并多个检索器实现多集合同时查询

通过ConcatRetriever将不同集合对应的检索器合并,查询时会同时从所有指定集合中获取结果并统一返回。

from langchain.retrievers import ConcatRetriever
from langchain.chains import RetrievalQA

# 保留你已有的embeddings、store1、store2、retriever1、retriever2定义

# 合并多个检索器
combined_retriever = ConcatRetriever(retrievers=[retriever1, retriever2])

# 创建使用合并检索器的QA链
qa = RetrievalQA.from_chain_type(
    llm=llm,
    chain_type="stuff",
    retriever=combined_retriever,
    return_source_documents=True
)

# 查询结果会包含两个集合的相关数据
res = qa("what is XYZ")

方法2:动态指定单个/多个集合查询

封装一个函数,根据传入的集合名称列表动态创建对应检索器,实现灵活选择查询目标集合的需求。

from langchain.retrievers import ConcatRetriever
from langchain.chains import RetrievalQA
from langchain.vectorstores import PGVector
from langchain.embeddings import OpenAIEmbeddings

def get_qa_chain(target_collections, llm, connection_string):
    embeddings = OpenAIEmbeddings()
    retrievers = []
    
    # 遍历目标集合,生成对应检索器
    for col_name in target_collections:
        store = PGVector(
            collection_name=col_name,
            connection_string=connection_string,
            embedding_function=embeddings,
        )
        retrievers.append(store.as_retriever())
    
    # 根据集合数量选择单个或合并检索器
    selected_retriever = retrievers[0] if len(retrievers) == 1 else ConcatRetriever(retrievers=retrievers)
    
    # 返回配置好的QA链
    return RetrievalQA.from_chain_type(
        llm=llm,
        chain_type="stuff",
        retriever=selected_retriever,
        return_source_documents=True
    )

# 使用示例
# 查询单个集合
qa_single = get_qa_chain(["mydata1"], llm, CONNECTION_STRING)
res_single = qa_single("what is XYZ")

# 查询多个集合
qa_multi = get_qa_chain(["mydata1", "mydata2"], llm, CONNECTION_STRING)
res_multi = qa_multi("what is XYZ")

补充说明

  • ConcatRetriever会依次调用每个检索器,将所有结果合并后返回,适合需要同时从多集合获取数据的场景。
  • 动态函数的方式无需修改核心逻辑,仅通过传入不同集合列表即可切换查询目标,扩展性更强。

内容的提问来源于stack exchange,提问作者utsav vc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 01:18:27