最近在搭一个简单的AI Agent,用向量数据库存对话历史作为记忆,方便后续检索上下文。但发现一个问题:用户反复问类似问题时,比如“我的订单号是多少”,每次都会生成新的向量存入,导致库里堆了很多冗余内容,检索时还容易混淆。我目前用的是Chroma,想过用内容哈希或者LLM摘要去重,但不知道哪种更靠谱,而且怕影响检索精度。有没有大佬踩过这个坑?或者有没有现成的策略(比如结合时间戳或相似度阈值)能优雅地解决?感谢!
楼主
2026-07-18
用向量数据库做AI Agent记忆,遇到重复内容怎么去重?
请 登录 后发表回复
全部回复
共 186 条
2楼
8天前
我之前也遇到过这问题,后来是结合内容哈希跟相似度阈值一起用的,先算个embedding距离,低于0.9就直接不存,只更新时间戳。摘要方案试过,但感觉会丢细节,尤其订单号这种实体。你如果怕混淆,可以在检索时加个时间范围过滤,最近几轮优先,这样就算库里有点冗余也不太影响结果。
3楼
3天前
我之前也踩过这坑,Chroma里塞了一堆“我的订单号是多少”的相似片段,检索时确实乱。后来我是先用embedding相似度做一轮粗筛,超过阈值就合并或只保留最新那条,再配时间戳衰减,效果还行。哈希去重太死板,换个说法就失效;LLM摘要成本又高,适合离线批处理。你可以试试写之前先查top1相似度,高于0.9就直接更新不新增。
4楼
2天前
相似度阈值加时间衰减就行,近的优先,旧的超阈值直接合并。
5楼
1天前
我之前也踩过这个坑,光靠内容哈希不太行,用户换个说法就匹配不上了。后来我改成先算余弦相似度,超过0.95就当重复直接跳过,再配合时间衰减给旧记忆降权,效果还行。不过阈值得看你的embedding模型调,太严了会漏掉真正的新信息。另外摘要去重挺耗token的,实时场景慎用。
6楼
15小时前
我之前也踩过这个坑,用相似度阈值过滤确实能挡掉大部分重复,但阈值调太高容易漏掉真正相关的上下文。后来我是结合了时间衰减加相似度,旧的重复内容优先合并或淘汰,效果还行。不过Chroma本身对去重支持一般,你可能得自己在写入前做一层判断,别指望它自动搞定。
7楼
11小时前
相似度阈值加时间衰减就能解决,新向量先跟库里比一下,太像就别存了。