如何在 LangChain 中实现 PDF 聊天机器人的多轮对话记忆功能

本文详解如何基于 langchain + fastapi 构建支持上下文感知的 pdf 智能问答系统,重点解决“无法记住历史提问”问题,通过 conversationbuffermemory 实现真正的多轮对话连贯性。

本文详解如何基于 langchain + fastapi 构建支持上下文感知的 pdf 智能问答系统,重点解决“无法记住历史提问”问题,通过 conversationbuffermemory 实现真正的多轮对话连贯性。

在构建 PDF 智能问答服务时,一个常见痛点是:单次提问能返回准确答案,但后续追问(如“它提到的日期是多少?”、“这个结论的依据是什么?”)却无法关联前文——系统“失忆”了。根本原因在于原始代码中每次调用 /process/ 都新建独立链(RetrievalQA),未共享对话状态。解决方案不是简单启用 memory 参数,而是将 ConversationBufferMemory 与 load_qa_chain 深度集成,并配合自定义 Prompt 模板显式注入聊天历史

✅ 正确实现多轮记忆的关键步骤

  1. 全局初始化内存实例(非每次请求新建)

    memory = ConversationBufferMemory(
        memory_key="chat_history", 
        input_key="human_input",
        return_messages=True  # 返回 Message 对象而非字符串,兼容新版 LangChain
    )

    ⚠️ 注意:必须声明为模块级变量(如 global memory 或使用依赖注入),否则每次请求都会重置。

  2. 构造带历史上下文的 Prompt 模板
    模板需明确预留 {chat_history} 占位符,并确保其位置在问题之前,让 LLM 理解对话流:

    template = """You are a helpful assistant answering questions about a document.
    
    Context from document:
    {context}
    
    Previous conversation:
    {chat_history}
    
    Human: {human_input}
    Assistant:"""
    prompt = PromptTemplate(
        input_variables=["chat_history", "human_input", "context"],
        template=template
    )
  3. 使用 load_qa_chain 并传入 memory 和 prompt
    替代已弃用的 ConversationalRetrievalChain(v0.1+ 中行为不稳定):

    chain = load_qa_chain(
        llm=OpenAI(temperature=0.0),
        chain_type="stuff",
        memory=memory,
        prompt=prompt
    )
    response = chain.invoke({
        "input_documents": docs,
        "human_input": question
    }, return_only_outputs=True)

? 完整工作流程示例

假设用户上传一份《2023 年公司年报.pdf》,随后发起以下对话:

小门道AI

小门道AI是一个提供AI服务的网站

下载

  • Q1: “公司去年营收是多少?” → 返回 “¥1.2B”
  • Q2: “同比增长多少?” → 模型结合 chat_history 中的“去年营收 ¥1.2B”及文档中“2022 年营收 ¥1.0B”,正确回答 “20%”

这依赖于 memory 自动将 Q1 的问答对存入 chat_history,并在 Q2 请求时通过 Prompt 注入上下文。

⚠️ 重要注意事项

  • 避免 global vector_store 的线程安全风险:生产环境应改用依赖注入或缓存服务(如 Redis)存储向量库,当前代码仅适用于单用户本地测试。
  • return_messages=True 是关键:LangChain v0.1+ 要求 memory 返回 BaseMessage 列表(如 AIMessage, HumanMessage),否则 Prompt 渲染失败。
  • Embedding 与 LLM 的一致性:确保 OpenAIEmbeddings() 与 OpenAI() 使用相同模型(如 text-embedding-3-small + gpt-3.5-turbo),避免语义空间错位。
  • 调试技巧:打印 memory.load_memory_variables({}) 可实时查看当前存储的对话历史。

✅ 总结

实现 PDF 多轮问答的核心不在于“加个 memory”,而在于三者协同
① 全局可复用的 ConversationBufferMemory 实例;
② 显式包含 {chat_history} 占位符的 Prompt 模板;
③ 使用 load_qa_chain(而非 RetrievalQA)并正确传递 memory 和 prompt。

如此,你的 FastAPI 后端即可像人类一样“记住上一句”,真正理解 follow-up 问题中的指代与隐含前提。

相关推荐:

清华大学火神队卫冕机器人足球世界杯 RoboCup 2026 Large 组冠军

7 月 5 日消息,据加速进化消息,7 月 5 日,在韩国仁川举行的被称为“机器人世界杯”的 RoboCup 2026 上,清华大学火神队在双足人形 Large 组决赛中战胜中国农业大学山海队,成功卫冕,两支队伍使用的均是国产 Booster T1 机器人。注:RoboCup 机器人足球世界杯自 1997 年首届比赛以来,已成为国际上级别最高、规模最大、影响力最广泛的机器人赛事。去年,在巴西萨尔瓦...

日本目标到 2040 年部署 1000 万台 AI 机器人,应对整体劳动力短缺

7 月 6 日消息,日本经济产业省当地时间 6 月 30 日公布了《人工智能机器人战略》修订版,目标到 2040 年在 18 个领域部署 1000 万台 AI 机器人,以在人口老龄化、出生率持续低下的背景下应对整体劳动力短缺。日本经产省提到,该国目标在世界范围内构建和发展能充分利用其优势的物理 AI 和机器人数据基础架构。图源:Pexels而在驱动 AI 机器人的模型方面,日本经产省未来 5 年将...

99 万机器人伴侣续航撑不过一晚?优必选回应称行业普遍续航 2-4 小时

7 月 6 日消息,近日,“99 万机器人伴侣续航撑不过一晚”相关话题登上热搜榜单。据新浪科技报道,对此人形机器人企业优必选作出回应,就产品续航、市场定位及科技伦理等核心问题进行了说明。优必选方面称:“目前全尺寸人形机器人续航基本上都在 2-4 小时,这个是行业普遍情况。”关于产品及定价,优必选方面表示,面向家庭和个人的主要是半身版 U1 Lite 和高配全身版 U1 Pro,U1 Ultra 是...

2026 世界机器人大会 8 月 19 日在京举行:首发新品 150 余件,报名通道开启

7 月 6 日消息,今日,2026 世界机器人大会新闻发布会在北京召开,官方宣布 2026 世界机器人大会将于 8 月 19 日至 23 日在北京经济技术开发区举行,主题为“人机共生,产需共融”。据介绍,本届大会规模规格再提档,得到近 30 家国际机构支持,主论坛国际嘉宾占比达 30%,博览会参展企业 300 余家,较去年增加 36%,预计展品超 2000 件,首发新品 150 余件,同期活动数量...

优必选 CEO 周剑:珍惜我们作为牛马的最后光阴,可能 20 年后都是机器人干活

感谢网友 刺客 的线索投递! 7 月 2 日消息,据网易科技报道,优必选 CEO 周剑在 6 月 30 日的 2026 年度全球发布会上谈到机器人替代人类工作的问题。周剑表示:好好珍惜我们作为牛马、作为劳动力工作的最后光阴吧,这也就是未来 5 年 10 年 20 年的事情了。现在 20 多岁的年轻小伙伴们,可能过了 20 年想工作也没了,都是机器人做了。周剑还认为:大家此时很多正在从事不愿意干的、...

消息称 LG 电子涉足芯片设计服务,首款 ASIC 为 6nm 扫地机器人 SoC

7 月 1 日消息,据韩媒 ZDNET Korea 消息,LG 电子已开始对外提供芯片设计服务。其首款产品为一家韩国企业的 6nm SoC,该芯片后续将被“回购”并装备在 LG 电子的扫地机器人中。尽管早在 1999 年就出售了半导体业务,但 LG 电子一直维持着 Fabless 企业的身份,为自有产品提供 SoC 开发支持。LG 电子在芯片合同制造上的合作伙伴是台积电,上述外部 SoC 也将由台...

国内首个机器人学校开学,30 台“学生”将接受系统化职业技能培训

7 月 1 日消息,据“余杭发布”微信公众号消息,6 月 29 日,由浙江大学机器人研究院联合浙江省质量科学研究院及行业头部企业共同打造的杭州机器人学校,在余杭正式开学。这是国内首个以大脑赋能、智能体集成,推动机器人产品熟化与落地应用为核心的行业综合性、高能级产业赋能平台。目前市面上的人形机器人一般都有灵活的“身体”,会跑会跳,但它们大多还不具备理解环境、适应变化、自主决策的“大脑”。来到机器人学...

《007:初露锋芒》机器人钥匙扣获得方法介绍

《007:初露锋芒》中的纪念品机器人钥匙扣是游戏里非常独特的一种收集品,想要获得也比较麻烦,需要在特定的节点才能获得,具体节点就是地堡入口,经过一系列的攀爬跳跳乐后,最终会从一个通风管道落到一个办公桌上,在后面的演讲台上就能看到了。 007初露锋芒机器人钥匙扣怎么获得 纪念品:机器人钥匙扣 节点19:地堡入口 目标:到达HYPERION 经过一系列的攀爬跳跳乐后,最终会从一个通风管道落到一个办公桌...