云数据库 PostgreSQL 多 Agent 长期记忆

在多 Agent 协作场景中,Agent 需要跨会话保持上下面记忆,避免重复提问、遗忘关键信息。传统方案需要自建 Mem0 + Redis + Neo4j 等多套中间件,运维复杂且数据分散。

相关产品
云数据库 PostgreSQL 产品页,含版本规格、价格与购买入口。

一、背景

云数据库 PostgreSQL 提供原生的 Agent 长期记忆能力,基于向量 + 图 + 关系三位一体架构,在一个 PostgreSQL 实例内解决 AI Agent 的全部记忆需求。

二、三位一体记忆模型

┌─────────────────────────────────────────────────────┐│ Agent 长期记忆层 │├─────────────────────────────────────────────────────┤│ ││ ┌─────────────┐ ┌──────────────┐ ┌───────────┐ ││ │ 语义记忆 │ │ 关系记忆 │ │ 事实记忆 │ ││ │ (pgvector) │ │ (Apache AGE) │ │ (关系表) │ ││ │ │ │ │ │ │ ││ │ 模糊回忆 │ │ 实体关系 │ │ 精确查询 │ ││ │ 相似度检索 │ │ 因果推理 │ │ 元数据 │ ││ │ RAG 增强 │ │ 知识图谱 │ │ 审计日志 │ ││ └─────────────┘ └──────────────┘ └───────────┘ ││ ││ ┌─────────────────────────────────────────────┐ ││ │ RLS 行级安全 → 多租户 / 多 Agent 数据隔离 │ ││ └─────────────────────────────────────────────┘ │└─────────────────────────────────────────────────────┘

三、数据模型

— 核心表结构CREATE SCHEMA memory;– 记忆记录表(append-only,不可变)CREATE TABLE memory.records ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), tenant_id UUID NOT NULL, — 租户隔离 agent_id UUID NOT NULL, — 所属 Agent project_id UUID, — 所属项目(可选) content TEXT NOT NULL, — 记忆内容 embedding vector(1024), — 向量嵌入 memory_type TEXT DEFAULT 'episodic', — 记忆类型 importance FLOAT DEFAULT 0.5, — 重要性权重 metadata JSONB DEFAULT '{}', — 扩展元数据 created_at TIMESTAMPTZ DEFAULT NOW(), expires_at TIMESTAMPTZ — 过期时间(可选));– 向量索引CREATE INDEX idx_memory_embedding ON memory.recordsUSING hnsw (embedding vector_cosine_ops);– RLS 策略ALTER TABLE memory.records ENABLE ROW LEVEL SECURITY;CREATE POLICY tenant_isolation ON memory.records USING (tenant_id = current_setting('app.tenant_id')::uuid);

四、记忆类型

类型 说明 典型用途
episodic 情景记忆 对话历史、操作记录
semantic 语义记忆 知识片段、概念定义
procedural 程序记忆 工作流程、操作步骤
preference 偏好记忆 用户偏好、习惯模式

五、核心功能

注意:说明:

注意:以下示例中的 <your-llm-model>、bge-m3 等模型名称仅为示意;请根据实际开通的 tencentdb_ai 模型列表替换。

六、记忆写入

— 写入一条记忆INSERT INTO memory.records (tenant_id, agent_id, content, embedding, memory_type)VALUES ( '550e8400-e29b-41d4-a716-446655440000', 'agent-planner-001', '用户偏好使用 Python 进行数据分析,喜欢简洁的代码风格', tencentdb_ai.get_embedding('bge-m3', '用户偏好使用 Python 进行数据分析'), 'preference');

七、记忆检索(语义搜索)

— 根据当前上下文检索相关记忆SELECT content, memory_type, 1 – (embedding <=> query_vec) AS relevanceFROM memory.recordsWHERE agent_id = 'agent-planner-001' AND (expires_at IS NULL OR expires_at > NOW())ORDER BY embedding <=> tencentdb_ai.get_embedding('bge-m3', '用户的编程偏好是什么?')LIMIT 5;

八、记忆衰减与遗忘

— 基于时间和重要性的记忆衰减SELECT content, importance * EXP(-0.01 * EXTRACT(EPOCH FROM (NOW() – created_at)) / 86400) AS current_weightFROM memory.recordsWHERE agent_id = 'agent-planner-001'ORDER BY current_weight DESCLIMIT 10;

九、记忆总结与压缩

— 使用大模型对旧记忆进行总结压缩SELECT tencentdb_ai.chat_completions( '<your-llm-model>', '请将以下多条记忆总结为一段话:' || string_agg(content, E'\\n'))FROM memory.recordsWHERE agent_id = 'agent-planner-001' AND created_at < NOW() – INTERVAL '7 days'GROUP BY DATE(created_at);

十、多租户隔离

基于 PostgreSQL RLS(行级安全策略)实现多租户数据隔离:

— 每个 Agent / 租户只能访问自己的记忆SET app.tenant_id = '550e8400-e29b-41d4-a716-446655440000';SET app.agent_id = 'agent-planner-001';– RLS 自动过滤,无需应用层判断SELECT * FROM memory.records; — 只返回当前租户的数据

十一、接入方式

接入形态 操作方式
PG 协议 直接执行 SQL 读写 memory.* 表
REST API 通过 PostgREST 调用 /memory/records 端点

十二、适用场景

·AI 助手:记住用户偏好,提供个性化服务。

·客服机器人:记住客户历史问题,避免重复询问。

·代码 Agent:记住项目架构和约定,保持一致性。

·研究 Agent:积累调研结论,避免重复搜索。

十三、相关文档

·多 Agent 共享记忆与项目协作。

·基于 OpenClaw 构建 AI Agent 应用。

·pgvector 向量扩展使用指南。

·Apache AGE 图数据库使用指南。

赞 (0)
上一篇 4天前
下一篇 4天前