微信扫码
添加专属顾问
我要投稿
让你的问答机器人更懂上下文!本文教你如何升级RAG系统,实现自然流畅的多轮对话体验。核心内容: 1. 对话式RAG的核心思路:从单次检索到上下文感知 2. 关键技术:消息序列管理、自动查询生成、持久化记忆机制 3. 实战效果展示与未来发展方向
在很多问答(Q&A)应用中,用户希望和机器人进行自然的多轮对话。这意味着应用不仅要能回答单个问题,还需要具备“记忆”功能,把过去的问题和答案利用起来,才能让对话连贯。
本文将介绍如何在 RAG(Retrieval-Augmented Generation,检索增强生成) 的基础上,扩展支持对话交互。
传统的 RAG 通常是这样的流程:
👉 用户输入问题 → 检索文档 → 生成答案
在对话场景中,我们需要把 历史消息 纳入考虑。本文介绍了两种方式:
链(Chain):只执行一次检索步骤;
智能体(Agent):允许模型根据需要多次检索,直到找到合适的答案。
在对话式应用里,不同类型的消息都会被记录:
HumanMessage:用户输入
AIMessage:助手回复
ToolMessage:工具返回结果(比如检索到的文档)
整个对话过程就像一条消息链,模型不仅能看到用户和助手的对话,还能结合工具调用结果来生成更合理的答案。
在多轮对话中,用户的问题往往需要结合上下文才能理解。比如:
用户:耐克在美国有多少个配送中心?
AI:耐克在美国有 8 个配送中心。
用户:在美国之外有哪些?
这时模型会自动把用户模糊的问题改写为完整的检索查询:
👉 “耐克在美国之外有哪些配送中心?”
这样即使用户没说全,模型也能自动补全上下文。
应用的核心流程可以抽象为三个节点:
用户输入节点:生成检索请求或直接回复;
检索工具节点:执行向量数据库查询;
响应生成节点:基于检索结果生成最终答案。
这种设计保证了灵活性:
用户打招呼时,可以直接回复;
用户提问时,则会触发检索和推理。
要支持多轮对话,应用需要保存历史对话。文章中介绍了使用 LangGraph 的持久化机制:
每一轮消息都会追加到状态中;
通过设置 thread_id,不同会话线程能被独立保存;
用户可以随时继续之前的对话,机器人还能记住上下文。
输入:“你好” → 系统直接回复,不触发检索。
输入:“耐克,包括匡威在美国有多少个配送中心?” → 检索并回答。
输入:“在美国之外有哪些?” → 自动补全查询,并基于历史对话给出答案。
这让应用更像一个真正的对话助手,而不是“单问单答”的工具。
对话式 RAG 的关键点:
用消息序列管理对话状态;
借助工具调用让模型自动生成检索查询;
利用持久化机制,让应用拥有“记忆”。
通过这些改造,你的问答机器人就能更自然地理解上下文、灵活检索信息,并保持连贯对话。
✨ 未来我们还可以进一步探索:如何在对话中结合更复杂的多工具协作,甚至让智能体像人一样自由选择信息来源。
本系列课程源代码位于:
https://github.com/realyinchen/AgenticRAG
课程的文字版将发布在我的知识星球:
如果你对提示工程感兴趣,可以进入微信公众号主页,进入【提示工程】专栏:
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费POC验证,效果达标后再合作。零风险落地应用大模型,已交付160+中大型企业
2025-08-24
Agentic RAG 开发实践(查询重写、多路召回、路由决策、质量评估、多步重查)
2025-08-23
大模型应用开发之RAG基本原理
2025-08-23
从 EchoLeak 到 AgentFlayer:RAG 系统面临的间接 Prompt 注入威胁与防御
2025-08-23
数据"烹饪"艺术:如何为RAG系统准备完美食材
2025-08-23
Passage Injection:让RAG系统在噪声数据中仍保持清醒的推理能力
2025-08-23
RAG关键技术:向量+标量混合检索
2025-08-23
RAG关键技术:问题改写(Query Rewriting/Transformation)
2025-08-23
RAG 已死,上下文工程当立
2025-05-30
2025-06-05
2025-06-06
2025-06-05
2025-05-27
2025-06-05
2025-06-20
2025-06-24
2025-07-15
2025-06-20
2025-08-20
2025-08-11
2025-08-05
2025-07-28
2025-07-09
2025-07-04
2025-07-01
2025-07-01