介绍一下我的agent项目中记忆、RAG系统的相关数据库

本文介绍四层记忆系统分别怎么实现以及使用到的各种数据库分别存储什么内容

四层记忆的数据库归属

记忆层 运行态(工作副本) 持久化数据库 存的具体内容
1. 短期记忆 JVM 内存 List<ConversationMessage>(滑动窗口 maxTurns*2 条,默认 10 条) PostgreSQL chat_history 每轮 user/assistant 原话 + 时间戳
2. 长期记忆 JVM 内存 List<MemoryItem> + TF 词表(向量召回/去重/衰减都在内存算) PostgreSQL long_term_memory content 事实文本、importance 重要度、embedding(JSONB 向量)、created_at、last_accessed
3. 偏好记忆 JVM 内存ConcurrentHashMap<String,String> PostgreSQL user_preferences 用户画像KV(user_id+key+value,如 姓名/城市/喜好);同一份也会写成一条长期记忆进 long_term_memory("用户喜好: xxx",importance 0.7~0.8)
4. 图记忆 无独立工作副本,只在 LongTermMemory 之上叠加引用 Neo4j :Memory {mem_id, content, importance} 节点 + FOLLOWS / SIMILAR_TO / CAUSES / BELONGS_TO 四类边。注意:记忆正文的真身仍在 PostgreSQL,Neo4j 只存关系结构和 mem_id(mem_id 就是 PG 的 id)

RAG 知识层(易混)

HybridStore 的"三路混合检索"是 PG + Milvus + ES + Neo4j 四库协作,

和记忆层共享Neo4j 与 PG

数据库 结构 存什么
Milvus collection rag_chunks:pg_id(主键) + content + embedding(FloatVector, dim=1024, IVF_FLAT/L2) 文档分块的语义向量
Elasticsearch index rag_chunks:pg_id(long) + content + doc_hash + chunk_idx 分块原文,跑 BM25 关键词召回
PostgreSQL 表 rag_chunks 分块正文 + embedding(JSONB),是取回内容的唯一来源(Milvus/ES 只回传 pg_id 再来 PG 查正文)
Neo4j :Entity 实体关系图 文档实体/关系,第三路召回,分数经 RRF 融合
相关推荐
进击的荆棘2 小时前
MySQL——库的操作
数据库·mysql
2601_967980112 小时前
“小程序·云开发”上线 助力开发者的高效利器
数据库·存储管理·小程序云开发·云函数·开发者工具
zhangjw342 小时前
1-9 SELECT 查询基础:where、group by、having、order by、limit offset
数据库·postgresql·pg数据库
唐老板3 小时前
Postgres 慢查询,先取证再动手
数据库·ai编程
笃行35010 小时前
数据库性能优化的五处内核改造,KingbaseES 配了四件诊断工具
数据库
非优秀程序员12 小时前
第02章 杭电的英语老师与一台服务器|《互联网产品恩仇录》
数据库·node.js·代码规范
SelectDB16 小时前
SelectDB 是哪个公司的?是国产数据库吗?一篇讲清飞轮科技与 Apache Doris 的关系
数据库
这个DBA有点耶17 小时前
库内计算推理:一条SQL背后的算子融合,和外挂方案差了几次网络往返
数据库·人工智能·sql
这个DBA有点耶19 小时前
函数索引的“完全一致”有多苛刻:写法、字符集、类型,差一处就失效
数据库·mysql·代码规范
星恒随风19 小时前
MySQL 从零入门(三):表的约束详解
linux·服务器·数据库·笔记·mysql