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

LangChain中如何查看MultiVectorRetriever在invoke时使用的上下文

查看RAG链invoke调用时MultiVectorRetriever使用的上下文内容

下面是几种直接验证并查看RAG链invoke时所用上下文的实用方法:

方法1:包装Retriever,实时输出检索结果

因为RAG链的invoke最终会调用Retriever的get_relevant_documents方法,你可以通过包装这个方法来在检索时直接打印上下文:

from langchain.retrievers import MultiVectorRetriever

# 保存原方法
original_get_relevant = retriever.get_relevant_documents

def wrapped_get_relevant(query):
    docs = original_get_relevant(query)
    print("=== 本次invoke使用的上下文 ===")
    for i, doc in enumerate(docs):
        print(f"文档{i+1}:\n{doc.page_content}\n---")
    return docs

# 替换原方法
retriever.get_relevant_documents = wrapped_get_relevant

之后调用链的invoke时,控制台会直接打印出本次检索到的所有上下文内容,和链实际使用的完全一致。

方法2:修改Prompt模板,在结果中返回上下文

调整你的RAG Prompt,让模型先输出所用的上下文,再回答问题:

from langchain.prompts import PromptTemplate

# 修改原prompt模板,加入上下文输出逻辑
prompt = PromptTemplate(
    template="""请先输出本次回答使用的上下文内容:
{context}

基于以上上下文,回答以下问题:{question}
""",
    input_variables=["context", "question"]
)

# 更新RAG链中的prompt
rag_chain = prompt | llm

调用rag_chain.invoke({"question": "你的问题"})后,返回的结果开头会直接包含本次使用的所有上下文,直观验证内容是否匹配。

方法3:用自定义回调捕获检索事件

利用LangChain的回调机制,监听Retriever的检索事件,获取上下文:

from langchain.callbacks.base import BaseCallbackHandler
from typing import Dict, List, Any

class RetrieverLogger(BaseCallbackHandler):
    def on_retriever_end(self, documents: List[Any], *, run_id: str, parent_run_id: str | None = None, **kwargs: Any) -> Any:
        print("=== 检索到的上下文(invoke调用) ===")
        for i, doc in enumerate(documents):
            print(f"文档{i+1}:\n{doc.page_content}\n---")

# 调用链时传入回调
rag_chain.invoke("你的问题", callbacks=[RetrieverLogger()])

这种方法无需修改原Retriever或Prompt,通过回调事件捕获检索结果,适合临时调试。

额外说明

MultiVectorRetriever的get_relevant_documents方法内部就是调用其绑定的vectorstore的检索逻辑(比如similarity_search),所以链invoke时使用的上下文,和你单独调用retriever.get_relevant_documents(query)或retriever.vectorstore.similarity_search(query)得到的结果是完全一致的,上述方法可以帮你直接验证这一点。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 01:15:05