《Agent记忆错误的100个案例手册》第 1–5 案例
本辑为《Agent记忆错误的100个案例手册》连载内容。
案例 1:RAG与检索错误|query-rewriting-semantic-distortion
场景
用户在客服Agent中输入”怎么取消昨天的订单”,系统为了优化检索,将查询重写为”订单取消流程”,丢失了”昨天”这一时间约束和”我的”这一主体限定,结果检索到通用取消流程文档,而非用户昨天订单的具体状态。
错误表现
Agent返回通用的取消流程说明,但用户的订单实际上已经发货无法取消,导致用户按照指引操作后失败,产生投诉。
解决方案
- 在查询重写模块中保留关键约束条件(时间、主体、状态)的标记
- 重写前后进行语义相似度对比,若偏移超过阈值则使用原始查询
- 采用混合检索策略:同时使用原始查询和重写查询检索,取并集
原理
查询重写(Query Rewriting)虽然能提升召回率,但过度泛化会丢失查询中的具体约束条件。LLM在重写时倾向于提取”意图”而忽略”细节约束”,导致检索结果与真实需求不匹配。
案例 2:RAG与检索错误|dense-retrieval-keyword-blindness
场景
医疗Agent处理药品相互作用查询时,用户询问”阿托伐他汀与克拉霉素的相互作用”。稠密向量检索将查询编码为语义向量后,召回的文档中包含了”阿托伐他汀”和”克拉霉素”的独立介绍,但遗漏了标题为”阿托伐他汀-克拉霉素联用禁忌”的关键文档,因为该文档在向量空间中与查询的语义距离较远。
错误表现
Agent未能识别出这是CYP3A4抑制剂联用的严重禁忌,给出了”可以联用但需监测”的错误建议,存在医疗安全风险。
解决方案
- 实现混合检索:稠密向量检索(Dense)+ 稀疏向量检索(Sparse/BM25)
- 对专业术语建立关键词倒排索引,确保精确匹配优先
- 对召回结果进行重排序(Rerank),使用Cross-Encoder对query-doc对进行精确相关性评分
原理
稠密向量检索基于语义相似性,对短词、专有名词的区分度有限。BM25等稀疏检索在精确术语匹配上具有互补优势。混合检索能同时覆盖语义相关性和词汇精确性。
案例 3:RAG与检索错误|reranker-position-bias-over-trust
场景
法律咨询Agent在处理”劳动合同到期不续签的补偿标准”时,检索到50篇相关文档。重排序模型(如bge-reranker)对文档进行打分排序,但由于训练数据中的位置偏差,一篇发布时间较早、已被新法规替代的文档获得了最高分,排在了第一位。
错误表现
Agent引用了已废止的《违反和解除劳动合同的经济补偿办法》(劳部发〔1994〕481号),而不是现行有效的《劳动合同法》第46/47条,导致法律建议错误。
解决方案
- 在重排序前对文档进行时效性过滤,优先使用最近N年的文档
- 对重排序结果进行多样性抽样(MMR算法),避免同一来源的文档过度集中
- 在prompt中明确指示Agent验证法律依据的时效性,引用多个来源交叉确认
原理
重排序模型存在训练偏差,包括位置偏差(position bias)和流行度偏差(popularity bias)。在法律、医疗等时效性强的领域,文档的发布时间应作为重要排序因子。
案例 4:RAG与检索错误|context-extraction-truncation-loss
场景
金融分析Agent检索到一份20页的财报PDF,RAG系统将文档分块后,与用户查询最相似的chunk是第3页的一段营收描述。但利润下滑的关键解释在第3页的下一段,由于分块边界恰好截断在段落之间,且相似度阈值过滤掉了相邻chunk,导致上下文不完整。
错误表现
Agent只看到”营收增长15%“,没看到”但毛利率下降8% due to原材料涨价”,因此给出了”公司业绩良好,建议增持”的错误分析。
解决方案
- 采用语义感知的分块策略(Semantic Chunking),以自然段落或语义完整单元为边界
- 在检索时返回chunk的相邻上下文(overlap retrieval),如前后各扩展一个chunk
- 对关键数字、转折词(but, however, although)进行标记,确保包含这些信号的chunk不被单独截断使用
原理
固定大小的分块(Fixed-size Chunking)会破坏语义连续性。相邻文本往往包含因果关系、转折关系等关键逻辑连接,截断会导致Agent的推理建立在片面信息上。
案例 5:RAG与检索错误|multi-hop-retrieval-single-query-failure
场景
用户询问”《三体》英文版的译者是谁,他/她还翻译过哪些科幻作品?“这是一个典型的两跳问题:第一跳找到《三体》英文版译者(刘宇昆),第二跳找到刘宇昆翻译的其他作品。但RAG系统只执行单次检索,查询embedding混合了”三体”和”翻译作品”,导致检索结果既不聚焦三体也不聚焦译者。
错误表现
Agent混淆了《三体》的不同版本译者(刘宇昆翻译了第一部,Joel Martinsen翻译了后两部),给出了错误的信息组合。
解决方案
- 实现多跳检索(Multi-hop Retrieval):解析查询为子问题链,逐跳执行检索
- 使用迭代式RAG(Iterative RAG):第一轮检索获取中间实体,第二轮以中间实体为新查询进行检索
- 在Agent架构中引入查询分解模块(Query Decomposition),将复杂问题拆解为可独立检索的子问题
原理
单次向量检索适合单点事实查询,但对需要连接多个离散知识点的推理问题(如”A的B的C”)力不从心。多跳检索模拟人类逐步查证的过程,通过中间结果扩展检索边界。
来源:Agent Search