Agent-memory-召回设计里分段过滤的重要性

我们都知道,记忆存储后,怎么能够在用户提问时召回几个质量高的记忆是核心之一。

在实战中,我在记忆存储时,让agent给其分配我给定的几个类型,并在召回时设计为,匹配到对应的关键词,并进行综合打分(语义相似度+时间匹配+置信度),结果返回的记忆一塌糊涂。

特征分配

在教程中,我观察到给定的代码是给记忆分配对应类型,进而方便后续召回。但是实际上,我发现并不是每条记忆的信息都很简单,有的记忆有时间信息,有的记忆有任务信息,到这里为止用单一关键词分配记忆类型都没问题,但一旦记忆信息里不止一条,比如"昨天会议总结了项目经验"。

那问题就来了,究竟是分配哪个关键词好呢?分配了历史关键词,那如果召回的记忆里全部是昨天只有少数会议呢,agent根本无法分辨哪个关键词更重要,也无法预知后续召回时用户的意图。那么相对好的办法,其实就是让agent根据记忆信息,自动生成多个特征,先保证不遗漏信息。

那么也许有人会问,那么多个关键词,agent怎么判断哪个优先级高呢。

分段过滤

在RAG中,有粗排和精排。从这个角度出发,我们在召回后可以一个过滤来达到粗排的作用。具体做法是,来了一个用户问题,我们先用embedding+BM25,先召回一部分记忆,然后在这一步,结合用户问题做意图解析,做硬过滤。

以我们刚才的喝水为例,用户问的是昨天会议内容细节,一开始的召回记忆就是找出了与"昨天","会议"相关的记忆,然后我们在第二部做硬性筛选,只召回同时有"昨天"+"会议细节"的记忆内容,然后再进一步做综合得分,这样除了可以去掉上周领导喝水这类垃圾记忆,更关键的是,可以不需要我们去优化综合得分的评判公式,因为如果不这么做,我们需要纠结有些记忆没有时间权重,是否要做权重补偿,即缺失了时间维度的信息,会相对提高其他维度的信息,但这样做很难调整,容易出现质量不高但是综合得分被补偿权重拉上来出现在top-k里的场景

相关推荐
吴佳浩3 小时前
Memory Provider 实战:Hermes、Mem0、Honcho、Hindsight 为什么都这样设计?
人工智能·agent·ai编程
吴佳浩3 小时前
企业级 Agent Memory 选型指南:如何构建可扩展的 Memory Service?
人工智能·agent·ai编程
云烟成雨TD6 小时前
LlamaIndex 系列【31】检索增强策略:命名实体识别(NER)
ai·agent·rag·llamaindex
slacker-kian6 小时前
本地大模型 + 自建 MCP Server + SAP OData:让 LLM 代理 SAP 业务操作
大模型·llm·sap·agent·mcp·odata
Flynt6 小时前
Shopify 弃 React Native 上了 HN 1272 分,我复现了它给 Agent 用的那套无头架构
react native·前端框架·agent
leoZ2317 小时前
第 10 篇 数据飞轮与冷启动:AI 产品的数据从哪来
人工智能·大模型·agent
坐吃山猪8 小时前
Harness Engineering知识总结
llm·agent·harness
李燚9 小时前
Agent 要用 API key,但明文一次都不能进模型——Secret Runtime 落地实录(第110篇)
ai·agent·credential·secret·eino·deepflux·secret runtime
invicinble9 小时前
agent操作Windows的原理,以及操作其他的操作系统里面的数据
agent