在无服务器的AI智能体中引入持久的语义记忆,利用DynamoDB的向量搜索与Amazon Bedrock的嵌入模型,不再需要专门的向量数据库或复杂的同步机制。在测试中,结合这套方案的写入速度比传统S3向量快约2.5倍,搜索速度则快约1.4倍,特别适用于智能体在活跃情况下的记忆需求。智能体出现“失忆”的问题主要是由于会话之间的信息缺失。当用户询问之前的对话内容时,智能体因为无法访问之前的会话而无法作答,这在AWS Lambda环境中尤其常见。每次调用都会重置智能体,导致其无法保留之前的对话背景。
为了解决“遗忘”问题,我们需要理解这涉及三个不同的生命周期。倘若不加以区分,就可能出现“记住了不该记的、忘了该记的”错误。可以把状态比作桌上的便利贴,而会话则好比今天会议的笔记,长期记忆则是智能体长期保留的偏好信息。Strands Harness提供了两个控制选项,一个用于维护当前会话数据,另一个则用于跨会话保持数据,二者功能独立,确保智能体的记忆得以贯通。
在DynamoDB的向量搜索中,向量和条目共存于同一表格,这样就能将业务存储与向量索引结合。一开始创建表时就需声明向量索引,若后期添加索引将产生额外的费用。此时,两个重要参数必须一致:维度与嵌入模型的输出须对齐,距离函数也必须与生成向量的方式一致。此外,向量索引按需计费。
在创建表之后,确认其状态为ACTIVE但并不足够,因为搜索端点可能仍未准备好。通过在重试循环中进行一次有效的SearchVectors调用,确认索引可用。接下来,将文本转换为向量的工作由代码调用Bedrock的Titan V2模型完成,输入文本、维度和归一化参数,输出浮点数列表。经过归一化处理后,生成的单位长度向量符合之前选择的COSINE距离函数的要求。将这两个步骤结合后,智能体的记忆管理无需依赖单独的向量库,写入与检索都能通过同一表格进行,从而降低了额外基础设施的需求,使智能体能够在不同实例间保持记忆。
发表评论