

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 最佳实践
<a name="agentic-memory-best-practices"></a>

## 内存生命周期管理
<a name="agentic-memory-bp-lifecycle"></a>
+ 将 **TTL 用于短期记忆-在内存**条目上设置相应的 TTL 值以自动使瞬态信息过期。对于会话上下文，请使用 30 分钟到 24 小时的 TTL。对于长期的用户偏好，请使用更长的 TTL 或无限期保留。
+ **实现内存衰减** — Mem0 提供了内置的衰减机制，可随着时间的推移删除不相关的信息。配置这些以防止在代理积累更多交互时内存膨胀。
+ **删除重复内存**-在存储新内存之前，请使用向量相似度搜索来检查是否已经存在类似的内存。更新现有记忆而不是创建重复的记忆。

## 向量索引配置
<a name="agentic-memory-bp-index"></a>
+ **选择正确的索引类型**-`FLAT` 用于可进行精确搜索的小型内存存储（低于 100,000 个条目）。`HNSW`用于大型商店，在这些商店中，近似最近邻搜索在规模上可提供更好的性能。
+ **选择适当的尺寸**-将嵌入尺寸与您的模型相匹配。Amazon Titan 文本嵌入 V2 生成 1024 维矢量。OpenAI 的文本嵌入-3-small 生成 1536 维向量。
+ **使用 COSINE 距离指标** — 对于来自 Amazon Titan 和 OpenAI 等模型的文本嵌入，余弦距离通常是衡量语义相似度的最合适指标。

## Multi-user 隔离
<a name="agentic-memory-bp-isolation"></a>
+ **按用户 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",
  )
  ```

## 大规模内存管理
<a name="agentic-memory-bp-scale"></a>
+ **设置 maxmemory 策略** — `maxmemory-policy allkeys-lru` 在您的 ElastiCache 集群上进行配置，以便在集群达到其内存限制时自动删除最近最少使用的内存条目。
+ **监控内存使用情况**-使用 Amazon CloudWatch 指标来跟踪内存利用率、缓存命中率和矢量搜索延迟。为高内存使用率设置警报，以主动管理容量。
+ **容量规划** — 每个内存条目通常需要大约 4—6 KB（嵌入维度 × 4 字节 \+ 元数据）。一个 1 GB 的 ElastiCache 实例可以存储大约 170,000 到 250,000 个内存条目，具体取决于嵌入大小和元数据。