1. 长期记忆常用数据库
向量数据库:Pinecone、Milvus/Zilliz、Qdrant、Weaviate、Chroma。适合存语义记忆、历史对话片段、文档片段,用 embedding 做相似度检索。Pinecone、Milvus、Qdrant 都明确定位于向量检索/语义检索场景。(Pinecone Docs)
关系型/混合数据库:PostgreSQL + pgvector、Supabase、MySQL。适合同时存结构化用户画像、任务状态、权限、时间戳、embedding。
搜索引擎:Elasticsearch、OpenSearch。适合关键词检索、混合检索、日志型记忆。
图数据库:Neo4j、NebulaGraph、Amazon Neptune。适合实体关系、用户偏好关系、项目依赖、知识图谱记忆。
文档/键值数据库:MongoDB、Redis、DynamoDB。适合会话状态、短期缓存、用户 profile、JSON 记忆对象。MongoDB 也已被用于 LangGraph 长期记忆后端。(MongoDB)
专用记忆层/框架:Mem0、Zep、Letta/MemGPT、LangGraph Store、LlamaIndex Memory。LangChain 区分跨 session 的长期记忆,LlamaIndex 支持短期 FIFO 记忆与长期 memory blocks,MemGPT/Letta 强调多层记忆管理。(Docs by LangChain)
2. AI-Agent 记忆机制核心组件
核心组件通常包括:短期记忆、长期记忆、记忆写入器、记忆检索器、记忆压缩/摘要器、重要性评分器、冲突消解器、遗忘/衰减机制、权限与隐私控制、以及上下文组装器。
更工程化地说:
短期记忆负责当前会话上下文,通常是最近 N 轮消息或滑动窗口。LlamaIndex 默认把短期记忆实现为 FIFO 消息队列,超限后可 flush 到长期记忆。(Developer Documentation)
长期记忆负责跨会话保留信息,例如用户偏好、事实、历史任务、实体关系、决策记录。LlamaIndex 将长期记忆抽象为 Memory Block,可包括静态信息、事实提取、向量检索等。(LlamaIndex)
检索器负责根据当前任务查询相关记忆,常见方式是向量检索、关键词检索、图查询、时间过滤、用户/项目 namespace 过滤、rerank。
写入器负责判断"什么值得记住",把对话、任务结果、用户偏好、失败经验等转成结构化 memory item。
上下文组装器负责把检索到的记忆合并进 prompt,避免塞入低相关、过期或互相冲突的信息。
3. 核心运行流程
典型流程是:
用户输入 → 识别意图与当前任务 → 从短期记忆读取最近上下文 → 用当前输入生成查询 → 检索长期记忆 → rerank/filter → 组装 prompt → Agent 推理/调用工具 → 生成回复或行动 → 判断本轮是否产生可记忆信息 → 抽取事实/偏好/任务状态 → 去重与冲突处理 → 写入数据库 → 更新短期记忆。
可以简化成三步:先检索,再推理,后写入 。很多实践框架也是这个模式:在每轮 Agent 调用前取回相关记忆,LLM 完成推理后,再把新交互中值得保留的信息写入长期存储。(Atlan)
一个成熟实现通常还会加上:记忆重要性评分、TTL/遗忘策略、人工可编辑记忆、隐私隔离、审计日志、以及"不要记住敏感信息"的策略。