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

如何在Python的LangChain中返回回答所依赖的上下文

实现方法

要在返回结果中添加算法依赖的文档段落,需要调整RAG链的结构,同时保留检索到的原始文档对象和最终回答结果,最后将两者合并输出。具体修改步骤如下:

1. 调整链的输入结构,保留原始文档

将原来仅生成格式化上下文文本的逻辑,改为同时获取原始文档对象和格式化后的上下文文本——前者用于后续提取依赖段落,后者用于给大模型生成回答提供上下文。

修改链的起始部分:

from langchain_core.runnables import RunnableParallel, RunnablePassthrough

# 同时获取原始文档和格式化后的上下文
input_chain = RunnableParallel(
    context_docs=compression_retriever,  # 保留检索到的原始Document对象
    formatted_context=compression_retriever | format_docs,  # 格式化后的文本给prompt
    question=RunnablePassthrough()  # 透传用户查询
)

2. 定义结果合并函数

编写函数将大模型的回答结果(解析后的price/unit)与原始文档的段落、元数据合并:

def combine_response_with_context(response, context_docs):
    # 将原始文档转换为字典列表,包含段落内容和元数据(如页码、来源)
    context_paragraphs = [
        {
            "page_content": doc.page_content,
            "metadata": doc.metadata
        }
        for doc in context_docs
    ]
    # 合并回答和上下文信息
    return {
        **response,
        "context": context_paragraphs
    }

3. 重构完整RAG链

将输入链、回答生成逻辑、结果合并逻辑串联起来:

rag_chain = (
    input_chain
    # 生成结构化回答
    | RunnablePassthrough.assign(
        structured_response=lambda x: rag_prompt.format_prompt(
            context=x["formatted_context"], 
            question=x["question"]
        ) | llm | output_parser
    )
    # 合并回答与上下文
    | lambda x: combine_response_with_context(x["structured_response"], x["context_docs"])
)

4. 调用链并查看结果

执行查询后,返回的结果会包含price、unit和context三个键,其中context是一个列表,每个元素对应回答依赖的文档段落及其元数据:

query = "What is the price? How many units?"
response = rag_chain.invoke(query, config={"configurable": {"session_id": "abc123"}})

# 示例输出结构
{
    "price": 500000.0,
    "unit": 3,
    "context": [
        {
            "page_content": "Property appraised value: $500,000...",
            "metadata": {"source": "/Appraisal.pdf", "page": 15}
        },
        {
            "page_content": "Total residential units: 3...",
            "metadata": {"source": "/Appraisal.pdf", "page": 20}
        }
    ]
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 20:56:16