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

LangChain多上下文获取与向量库结果自动赋值机制问询

问题解答

1. 向量库查询结果自动赋值给{context}的机制

你通过RetrievalQA.from_chain_type创建问答链时,指定的retriever=vectorstore.as_retriever(...)是核心:

  • 当调用qa链(比如qa({"query": "你的问题"}))时,RetrievalQA会自动用传入的query去向量库执行检索,获取匹配度最高的k条文档(这里k=1)。
  • 因为你用的是chain_type="stuff",这个链类型的逻辑会把检索到的文档内容直接填充到PromptTemplate中定义的{context}变量位置,整个过程是LangChain的RetrievalQA组件内部自动完成的,无需手动给context赋值。

2. 传入第二个上下文{context2}的实现方式

可以实现,需根据context2的来源调整代码:

场景1:context2是固定文本/手动传入的静态内容

  • 修改prompt模板,加入{context2}占位符:
    prompt_template = """
    This is a pair of template question and answer.
    {context}
    Additional context: {context2}
    Continue the question by strongly considering the answer from the context.
    Answer that needs to be continued is below. If a sentence is started, make sure to just continue it: 
    {question}
    
    Continuation:"""
    
  • 更新PromptTemplate的input_variables,加入context2:
    PROMPT = PromptTemplate(
        template=prompt_template, input_variables=["context", "context2", "question"]
    )
    
  • 调用qa链时直接传入context2参数:
    result = qa({"query": "你的问题", "context2": "你的第二个上下文内容"})
    

场景2:context2是另一个向量库的检索结果

需要额外添加检索器,手动处理双检索逻辑:

  • 先初始化第二个向量库的retriever:
    vectorstore2 = Chroma(
        collection_name="另一个集合名",
        persist_directory="另一个Chroma目录", embedding_function=embedding
    )
    retriever2 = vectorstore2.as_retriever(search_kwargs={"k": 1})
    
  • 手动获取两个检索结果,再传入链中:
    # 获取两个向量库的检索结果
    docs1 = retriever.get_relevant_documents("你的问题")
    docs2 = retriever2.get_relevant_documents("你的问题")
    context = "\n".join([doc.page_content for doc in docs1])
    context2 = "\n".join([doc.page_content for doc in docs2])
    # 调用链时传入双上下文
    result = qa({"query": "你的问题", "context": context, "context2": context2})
    
    注意这种场景下,要去掉RetrievalQA的retriever参数,改用普通LLMChain,避免框架自动重复填充context。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 14:32:41