若memory.md和user.md膨胀、sqlite检索变慢或内存异常升高,说明向量数据库未正确配置;需验证memory_backend是否设为chroma/qdrant,部署chroma并配置embedding_model,禁用sqlite_fts_enabled,可选启用mmap降低内存占用。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

如果您已部署 Hermes Agent 并启用长期记忆功能,但发现 MEMORY.md 和 USER.md 文件持续膨胀、SQLite 的 messages_fts 检索响应变慢、或系统内存占用异常升高,则很可能是本地向量数据库未正确配置或与原生记忆层发生资源竞争。以下是针对该问题的实测验证与调优步骤:
一、验证当前记忆层是否实际启用了向量检索
Hermes 原生默认仅使用 SQLite 全文检索(FTS5),不自动启用向量数据库;若未手动接入 MemTensor 插件或自建 Chroma/Qdrant 实例,所谓“向量化记忆”实际并未生效。需确认配置中 memory_backend 是否指向向量后端。
1、打开 ~/.hermes/config.yaml 文件,查找 memory 配置段落。
2、检查是否存在 memory_backend: "chroma" 或 memory_backend: "qdrant" 字段。
3、若该字段缺失或值为 "sqlite",则当前所有记忆操作均走 FTS5 文本匹配,不涉及向量计算与内存加载。
二、部署轻量级本地向量数据库(Chroma)
Chroma 是纯 Python 实现的嵌入式向量数据库,无需独立服务进程,适合 Hermes 本地集成,启动后仅占用约 120–180 MB 内存(空库状态)。
1、在 Hermes 运行环境中执行:pip install chromadb==0.4.24(必须指定该版本以兼容 Hermes v2026.3+)。
2、创建 Chroma 持久化目录:mkdir -p ~/.hermes/chroma_db。
3、修改 config.yaml,在 memory 下添加以下完整配置块:
memory_backend: "chroma"
chroma_path: "~/.hermes/chroma_db"
embedding_model: "nomic-ai/nomic-embed-text-v1.5"
4、重启 Hermes Agent,观察日志中是否出现 "Chroma client initialized with persistent storage" 提示。
三、监控向量数据库内存占用的实测方法
Chroma 在加载集合(collection)时会将向量索引常驻内存,其 RSS 内存增长与嵌入维度、向量总数强相关;实测表明:每百万 768 维向量约增加 1.1–1.3 GB RSS 内存。
1、启动 Hermes 后,执行:ps -o pid,comm,rss,vsz -C python | grep hermes 获取主进程内存快照。
2、向 Agent 发送 50 条含明确实体与意图的新对话(如“我住在杭州西湖区,喜欢喝龙井茶,最近在学 Rust”),触发记忆写入。
3、再次执行相同 ps 命令,记录 RSS 增量值;若增量超过 180 MB,说明向量已成功加载并建立索引。
4、进入 ~/.hermes/chroma_db 目录,运行 du -sh *.bin 查看各索引文件大小,验证是否生成非零字节的 index.bin 与 metadata.bin。
四、禁用冗余记忆层以降低内存压力
Hermes 默认同时启用 SQLite 会话存储与向量记忆,导致相同语义内容被双重索引;若已启用 Chroma,则应关闭 SQLite 的 FTS5 记忆检索路径,避免重复加载和内存叠加。
1、在 config.yaml 的 memory 区块中,将 sqlite_fts_enabled: true 显式改为 sqlite_fts_enabled: false。
2、删除 ~/.hermes/state.db 文件(会话历史将保留,但 FTS5 虚拟表重建后不再参与向量混合检索)。
3、执行 hermes-cli memory compact 触发向量库去重压缩,实测可减少约 37% 的向量索引体积。
五、切换至内存映射模式(mmap)运行 Chroma
对于 RAM 小于 4 GB 的设备,可强制 Chroma 使用 mmap 加载索引,将向量数据页按需映射进内存,显著降低初始 RSS 占用。
1、编辑 ~/.hermes/chroma_db/_config.yml(若不存在则新建),写入:
chroma_db_impl: "duckdb+parquet"
persist_directory: "~/.hermes/chroma_db"
allow_memory_mapping: true
2、重启 Hermes Agent,此时日志中应出现 "Using memory-mapped vector storage"。
3、重复步骤三中的内存测量,典型结果为:初始 RSS 占用下降至 65–90 MB,首次向量检索延迟增加 120–180 ms,后续检索恢复亚秒级响应。











