本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
最佳实践
内存生命周期管理
将 TTL 用于短期记忆-在内存条目上设置相应的 TTL 值以自动使瞬态信息过期。对于会话上下文,请使用 30 分钟到 24 小时的 TTL。对于长期的用户偏好,请使用更长的 TTL 或无限期保留。
实现内存衰减 — Mem0 提供了内置的衰减机制,可随着时间的推移删除不相关的信息。配置这些以防止在代理积累更多交互时内存膨胀。
删除重复内存-在存储新内存之前,请使用向量相似度搜索来检查是否已经存在类似的内存。更新现有记忆而不是创建重复的记忆。
向量索引配置
选择正确的索引类型-
FLAT用于可进行精确搜索的小型内存存储(低于 100,000 个条目)。HNSW用于大型商店,在这些商店中,近似最近邻搜索在规模上可提供更好的性能。选择适当的尺寸-将嵌入尺寸与您的模型相匹配。Amazon Titan 文本嵌入 V2 生成 1024 维矢量。OpenAI 的文本嵌入-3-small 生成 1536 维向量。
使用 COSINE 距离指标 — 对于来自 Amazon Titan 和 OpenAI 等模型的文本嵌入,余弦距离通常是衡量语义相似度的最合适指标。
Multi-user 隔离
按用户 ID 筛选内存-在存储和搜索内存时,请务必包含一个
user_id参数,以防止用户之间泄露信息。使用 TAG 过滤器实现高效隔离-查询向量索引时,使用 TAG 过滤器(例如
@user_id:{user_123})在执行 KNN 搜索之前按用户对结果进行预过滤。它作为单个原子操作运行,既提供隔离又提供性能。# Example: TAG-filtered vector search for user isolation results = client.execute_command( "FT.SEARCH", "agent_memory", f"@user_id:{{{user_id}}}=>[KNN 5 @embedding $query_vec]", "PARAMS", "2", "query_vec", query_vec, "DIALECT", "2", )
大规模内存管理
设置 maxmemory 策略 —
maxmemory-policy allkeys-lru在您的 ElastiCache 集群上进行配置,以便在集群达到其内存限制时自动删除最近最少使用的内存条目。监控内存使用情况-使用 Amazon CloudWatch 指标来跟踪内存利用率、缓存命中率和矢量搜索延迟。为高内存使用率设置警报,以主动管理容量。
容量规划 — 每个内存条目通常需要大约 4—6 KB(嵌入维度 × 4 字节 + 元数据)。一个 1 GB 的 ElastiCache 实例可以存储大约 170,000 到 250,000 个内存条目,具体取决于嵌入大小和元数据。