网易首页 > 网易号 > 正文 申请入驻

让AI记住对话:RAG的上下文难题与解法

0
分享至

昨天我们搭了一个能回答单轮问题的RAG系统。但如果你追问"能再详细讲讲吗",AI会一脸懵——因为它根本不知道"这"指的是什么。上下文缺失,这是多轮对话RAG最头疼的坎。

今天解决这个核心难题:对话记忆。让AI理解"它""那个"到底指代前文提到的什么东西。


核心难点:查询重写

假设你问了两句话:

• "LangChain是怎么工作的?"

• "能给我举个它的例子吗?"

检索器看到第二句里的"它",会真的去数据库里搜"它"这个字——结果当然是垃圾。因为检索器没有对话历史,无法把代词还原成具体概念。

解决方案是加一步历史感知检索(History-Aware Retrieval)。AI拿到你的追问和完整对话记录,先把代词、省略补全,重写成检索器能独立理解的完整问题,再去做文档搜索。

第一步:问题 contextualization

先搭一个子链,输入历史记录+新问题,输出"检索友好"的查询语句。

代码里用 create_history_aware_retriever 封装这个逻辑。关键在 contextualize_q_system_prompt 这段系统提示:告诉AI"根据对话历史和最新问题,生成一个脱离历史也能被理解的独立问题,不要回答"。

然后把之前Day 9的检索器包进去,得到 history_aware_retriever

第二步:组装完整对话链

把历史感知检索器接入文档问答链,形成最终流程。

这里需要两个组件:

1. create_stuff_documents_chain —— 把检索到的文档塞进提示词,生成答案

2. create_retrieval_chain —— 把检索和问答串成完整链路

最终 rag_chain 的执行顺序是:先重写问题(含历史感知)→ 检索文档 → 基于文档生成回答。

实测效果

第一轮问"What is LangSmith?",AI正常回答。把问答记录更新进 chat_history

第二轮追问"How do I get started with it?"——这里的"it"会被自动重写成"LangSmith",检索器能准确找到相关文档,不再搜"it"这个无意义关键词。

关键代码结构:

• 用 HumanMessageAIMessage 维护对话历史

• 每次交互后 extend 更新历史

• 重写提示词里用 MessagesPlaceholder("chat_history") 占位注入历史

这套机制的本质是让检索层"理解"对话,而非让LLM硬背上下文。因为检索是RAG的瓶颈,检索错了,后面生成再强也救不回来。把代词消歧放在检索前做,比让生成模型去猜更可靠。

完整实现约30行核心代码,但解决了RAG从"问答工具"到"对话助手"的关键跃迁。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
伊朗外长太聪明了:不求中国给飞机大炮,只求中国一件事!

伊朗外长太聪明了:不求中国给飞机大炮,只求中国一件事!

安安说
2026-05-07 11:09:34
毁三观!老大爷数次猥亵小米汽车事件疯传!车身布满J斑残留

毁三观!老大爷数次猥亵小米汽车事件疯传!车身布满J斑残留

魔都囡
2026-05-08 09:57:03
举报一个查一个!耿同学举报3位大学院长和教授,同济院长被免职还差南开和中山

举报一个查一个!耿同学举报3位大学院长和教授,同济院长被免职还差南开和中山

可达鸭面面观
2026-05-07 13:03:19
知名男星现身深圳街头,超多人围观!网友:此人太帅,疑似AI生成

知名男星现身深圳街头,超多人围观!网友:此人太帅,疑似AI生成

深圳晚报
2026-05-08 12:40:39
快讯!国际足联还是低头了!

快讯!国际足联还是低头了!

故事终将光明磊落
2026-05-08 16:00:50
国家免费电视已开通!不用缴费,动手调好就能看

国家免费电视已开通!不用缴费,动手调好就能看

小柱解说游戏
2026-05-08 16:59:21
伯克希尔等着捡尸体

伯克希尔等着捡尸体

贩财局
2026-05-08 14:52:06
男子自称是“公务员、有房”,致女友怀孕后迟迟不结婚,女友报警!警方:该男子无业,已在香港结婚生子,诈骗多名未婚女性170万元

男子自称是“公务员、有房”,致女友怀孕后迟迟不结婚,女友报警!警方:该男子无业,已在香港结婚生子,诈骗多名未婚女性170万元

极目新闻
2026-05-08 16:11:52
快讯!关于郑丽文的消息!

快讯!关于郑丽文的消息!

故事终将光明磊落
2026-05-08 14:34:21
赖清德返台后称台湾是国家,下令拆除蒋介石像,大陆六字预言结局

赖清德返台后称台湾是国家,下令拆除蒋介石像,大陆六字预言结局

凉了时光人
2026-05-08 09:46:12
沙特翻脸!突然对美军关闭领空,特朗普连忙打电话化解,但未奏效;特朗普曾点名表扬:沙特做得很好,阿联酋也很好

沙特翻脸!突然对美军关闭领空,特朗普连忙打电话化解,但未奏效;特朗普曾点名表扬:沙特做得很好,阿联酋也很好

大风新闻
2026-05-08 15:36:05
三星员工:240万人民币就想打发我 隔壁SK海力士明年可是要发650万!

三星员工:240万人民币就想打发我 隔壁SK海力士明年可是要发650万!

快科技
2026-05-07 19:53:05
向导掐人中救醒高反昏迷女子反遭掌掴,有网友称其“装晕想免费下山”,女子否认:已报警;被打向导发声:她严重高反或因幻觉打人,已道歉

向导掐人中救醒高反昏迷女子反遭掌掴,有网友称其“装晕想免费下山”,女子否认:已报警;被打向导发声:她严重高反或因幻觉打人,已道歉

都市快报橙柿互动
2026-05-08 12:27:22
4只皮皮虾花了1035元后续:店老板离世,真相曝出,顾客骗了全网

4只皮皮虾花了1035元后续:店老板离世,真相曝出,顾客骗了全网

李晚书
2026-05-08 16:09:22
89岁谢贤被CoCo爆料,分手原因:他身体跟不上我,张柏芝也被牵连

89岁谢贤被CoCo爆料,分手原因:他身体跟不上我,张柏芝也被牵连

好贤观史记
2026-05-08 15:57:30
评论丨“4只皮皮虾1035元”店主去世,消费纠纷别变成人身攻击

评论丨“4只皮皮虾1035元”店主去世,消费纠纷别变成人身攻击

红星新闻
2026-05-08 17:43:33
摩托车撞倒3名过斑马线行人致2死,“时速超120公里,事发时疑在飙车”,被害人家属发声

摩托车撞倒3名过斑马线行人致2死,“时速超120公里,事发时疑在飙车”,被害人家属发声

澎湃新闻
2026-05-08 18:05:26
中信集团旗下资本入局华谊兄弟,以成交价总计1092.38万元竞得王忠磊所持560万股股份

中信集团旗下资本入局华谊兄弟,以成交价总计1092.38万元竞得王忠磊所持560万股股份

每日经济新闻
2026-05-08 17:22:14
一艘中国船东所有的油轮遇袭,外交部:船上有中国籍船员,目前暂无伤亡情况

一艘中国船东所有的油轮遇袭,外交部:船上有中国籍船员,目前暂无伤亡情况

澎湃新闻
2026-05-08 15:36:29
14岁神童手搓发动机被曝造假!漏洞百出吹上天,普通人拿什么比?

14岁神童手搓发动机被曝造假!漏洞百出吹上天,普通人拿什么比?

社会日日鲜
2026-05-08 04:18:01
2026-05-08 20:03:00
Ping值焦虑
Ping值焦虑
有态度网友ytd
2251文章数 36关注度
往期回顾 全部

科技要闻

SK海力士平均奖金600万 工服成相亲神器

头条要闻

媒体:"4只皮皮虾1035元"店主去世仅43岁 触发人们反思

头条要闻

媒体:"4只皮皮虾1035元"店主去世仅43岁 触发人们反思

体育要闻

他把首胜让给队友,然后用一年时间还清账单

娱乐要闻

古天乐被曝隐婚生子,新娘竟是她

财经要闻

轮到豆包收割了?

汽车要闻

MG 4X实车亮相 将于5月11日开启盲订

态度原创

游戏
旅游
艺术
亲子
时尚

索尼PS要打造最佳游戏平台!独占新作用AI 玩家别慌

旅游要闻

奉浦赏花指南!免费入园、无需预约,月季花岛正当时

艺术要闻

探索施密德的油画,感受无法抵挡的艺术魅力!

亲子要闻

小朋友老爱啃指甲,是身体缺什么营养吗?

海魂衫搭配白色,更解暑!

无障碍浏览 进入关怀版