介绍一下我的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 融合
相关推荐
ly76891 小时前
性能剖析与压测方法论:JMH、async-profiler 与分层瓶颈定位的可复现实验
服务器·前端·数据库·压测·jmh·性能剖析·async-profiler
longerxin20201 小时前
Ubuntu 22.04 ARM64 云镜像开启 root 密钥登录(保留 ubuntu 密钥登录,禁止密码登录)
数据库·ubuntu·postgresql
OxYGC1 小时前
[工程] Redis 配置文件redis.conf全解析
数据库·redis·bootstrap
YuanDaima20481 小时前
系统架构与数据库理论基础:PostgreSQL 与 pgvector
数据库·人工智能·docker·postgresql·系统架构·产品经理
2601_957084844 小时前
2026年生产型服装供应链SCM系统丨水洗参数、产能与验收节点架构
数据库·scm·服装供应链系统·服装scm·服装供应链
IvorySQL10 小时前
PostgreSQL 日报|恢复期 COPY TO 未日志表修复(10 月 21 日)
数据库·postgresql·区块链
贝猫说python11 小时前
大模型比赛2.3智能体开发(工具调用智能问答助手)
数据库·oracle
许彰午12 小时前
28-ORA-01110数据文件读取错误
数据库·oracle
凯凯姜12 小时前
MySQL 联合索引设计与索引失效
数据库·mysql