opensearch 后端使用 OpenSearch 作为向量存储。记忆文本先经 embedding 模型向量化,再写入 OpenSearch,并按用户隔离索引(实际索引名为 {index}_{user_id}),检索时按相似度召回。它是 LongTermMemory 的默认后端。
何时使用
- 已有 OpenSearch 集群,希望自建向量检索;
- 需要持久化、可跨进程与多实例共享,并对索引与检索有完全掌控。
使用示例
运行前准备可达的 OpenSearch 集群、可创建和访问索引的账号、有效 CA 证书,并设置下文的连接与 embedding 环境变量。向量维度必须与已有索引一致;更换维度需要新建索引并重新写入记忆
也可以通过 backend_config 显式传入连接与 embedding 配置:
LongTermMemory 参数
构造参数
backend_config 支持以下配置项:
OpenSearch 连接配置
opensearch_config 为 OpensearchConfig,环境变量前缀 DATABASE_OPENSEARCH_:
embedding 配置
embedding_config 为 EmbeddingModelConfig,环境变量前缀 MODEL_EMBEDDING_:
环境变量配置
index 必须符合 OpenSearch 命名规则:全小写,仅含 a-z0-9_-.,且不以 _ 或 - 开头,否则会报错。生产环境请配置 cert_path 以启用证书校验,避免安全风险。
验证写入和检索
配置本页依赖与凭证后运行此独立示例。它直接保存用户文本,再检索同一用户的记忆,不需要调用对话模型
结果应包含所保存的语言偏好。托管服务可能异步完成记忆提取,写入返回不保证立刻可检索;空结果也可能来自权限、网络或服务失败,应结合错误日志与服务端记录判断。此方法不返回保存成功的布尔值
最终索引名包含 user_id,因此用户标识也必须符合索引字符要求。相同 index 与 user_id 会访问相同记忆,search_memory(app_name=...) 不会额外隔离索引