游乐游手机版
首页/AI教程/文章详情

SinoVec打造生产级中文长期记忆系统的技术实践

时间:2026-06-01 20:53
SinoVec:打造生产级中文长期记忆系统的技术实践 题图由 AI 生成 | SinoVec 核心架构概念图 聊到 AI Agent 的“长期记忆”,这绝对是个让人头大的问题。Agent 要能记住用户偏好、历史对话里的关键事实、项目进度——这些直接决定着体验是否连贯、是否真正“智能”。但现实是,用

SinoVec:打造生产级中文长期记忆系统的技术实践

题图由 AI 生成 | SinoVec 核心架构概念图

聊到 AI Agent 的“长期记忆”,这绝对是个让人头大的问题。Agent 要能记住用户偏好、历史对话里的关键事实、项目进度——这些直接决定着体验是否连贯、是否真正“智能”。但现实是,用 OpenClaw 的时候经常失忆,原生方案不好用不说还收费,于是干脆自己动手搭了一套记忆系统。

市面上已有的方案各有短板:原生文件记忆透明但检索弱,没法做语义匹配;第三方记忆服务(像 Mem0、Zep)方便但有 API 成本,中文支持也一般;自建 RAG 技术门槛高,得维护向量数据库和整套检索链路。针对这些,SinoVec 应运而生——一个专为中文场景设计的本地化、高精度、零 API 成本的长期记忆系统。

一、核心架构:六层检索漏斗 + 混合存储

整个系统的核心是一个渐进式检索漏斗,从粗到精逐层筛选最相关的记忆:

用户查询
↓
jieba 分词(中文处理)
↓
LLM 查询扩展(可选,提升召回率)
↓
向量 + BM25 混合检索(动态权重,默认 70:30)
↓
时间衰减(近期记忆权重更高)
↓
LLM 重排(可选,对 Top-15 二次打分)
↓
MMR 多样性去重(避免结果同质化)
↓
返回 Top-K 结果

1. 向量 + BM25 混合检索

  • 向量检索:用 BAAI/bge-small-zh-v1.5 将文本映射到 512 维语义空间,计算余弦距离
  • BM25 全文检索:基于 PostgreSQL 全文索引,精准匹配关键词
  • 动态权重:根据查询长度、专有名词数量、召回重叠度自动调整向量/BM25 比例(默认 70:30)

2. 可选增强模块

LLM 查询扩展
└─ 调用本地 Ollama(qwen2.5:7b)生成同义词,提升召回率
LLM 重排
└─ 对 Top-15 候选结果进行二次打分,优化排序
MMR 多样性去重
└─ Maximal Marginal Relevance,避免结果过于同质化

3. L1 + L2 分层存储

层级技术用途
L1pgvector 向量库高效语义检索,所有记忆的向量表示
L2.HOTMarkdown当天日志,>2天自动流转
L2.WARMMarkdown近期待办,项目进度
L2.COLDMarkdown永久事实,只增不删

这个分层设计正好贴合人类记忆的遗忘曲线——越近的记忆越容易被召回,越久的记忆越不需要高频检索。

二、为什么选择完全本地化?

对比项云端 APISinoVec(本地)
向量生成OpenAI Ada-002($0.0001/1K tokens)FastEmbed 免费
LLM 重排GPT-3.5/4 付费Ollama 免费
数据隐私数据传输到第三方数据不出内网
检索延迟200-500ms20-50ms(不含重排)
中文支持一般深度优化(jieba 分词)

具体实现上,SinoVec 用 FastEmbed 做本地向量化(BAAI/bge-small-zh-v1.5,512 维,约 250ms/条),Ollama 跑本地 LLM(qwen2.5:7b),PostgreSQL + pgvector 做向量数据库——整套下来零外部 API 依赖。

三、生产级安全加固:v1.0.2 实践

项目开源后收到一份详细的代码审查报告,指出了多个安全问题。于是 v1.0.2 安全加固版本诞生了:

1. 移除硬编码数据库密码

# ❌ 修复前:硬编码密码
DB_CONFIG = {"password": "admin123"}
# ✅ 修复后:强制环境变量
_db_pass = os.getenv("MEMORY_DB_PASS", "")
if not _db_pass:
    raise RuntimeError("MEMORY_DB_PASS environment variable is not set.")

2. HTTP API 认证中间件

支持三种认证方式,按需选用:

Authorization: Bearer 
X-API-Key: 
?api_key=

通过环境变量 MEMORY_API_KEY 控制,未配置时仅开发模式跳过认证。

3. 防时序攻击

# ❌ 修复前
if api_key == expected_key:  # 时序攻击漏洞
# ✅ 修复后
import hmac
if hmac.compare_digest(api_key, expected_key):  # 防时序攻击

4. 向量缓存 TTL 限制

# ❌ 修复前:无界字典,可能 OOM
_cache = {}
# ✅ 修复后:限制 1000 条、TTL 1 小时
from cachetools import TTLCache
_cache = TTLCache(maxsize=1000, ttl=3600)

5. 连接池线程安全

使用 double-checked locking 确保多线程下只创建一次连接池。

这些加固措施让 SinoVec 具备了生产环境应有的安全基线。

四、定时任务优化:从失控到高效

生产运行中,我们对三个定时任务做了全面审查和优化,效果相当明显:

任务优化前优化后效果
自动记忆提取每30分钟,去重窗口6h,噪声多每6小时,去重窗口48h,加 _is_noise() 过滤运行次数 -83%,重复记忆 -90%
Session 索引每天2次,运行良好保持现状稳定运行,无需改动
每日记忆整理每天2次,token消耗20k-95k每天1次,修复SQL bugtoken消耗 -50%,bug清零

关键改进

  • 新增 _is_noise() 过滤:自动跳过路径、UUID、JSON 结构、GitHub 仓库名单独出现等噪声
  • 修复 organize SQL 参数化 Bug:COSINE_DIST_MERGE 常量误写为 SQL 文本,导致自动流转失败
  • 三脚本增加环境变量自动加载:解决 cron 任务缺失 MEMORY_DB_PASS 的问题

最终调度时间线

00:05 Session 索引
00:15 自动记忆提取
01:00 每日记忆整理
...
12:05 Session 索引
12:15 自动记忆提取
12:25 每日记忆整理  (午饭期间完成,回来时系统已就绪)
...
18:05 Session 索引
18:15 自动记忆提取
19:00 每日记忆整理

五、性能与数据

在真实生产环境(约 3000 条记忆)下,数据表现如下:

指标数值
检索延迟(无重排)20-50ms
检索延迟(含重排)500-2000ms(可关闭)
向量生成速度~250ms/条(FastEmbed)
数据库大小47 MB(含向量索引)
核心记忆召回率> 95%

六、开源与社区

SinoVec 采用 MIT 许可证,代码完全开源。项目提供了:

  • 一键安装脚本:自动配置 PostgreSQL、创建数据库、安装依赖、注册 systemd 服务
  • Docker 部署:docker-compose up -d 即可启动
  • 详细文档:API 参考、OpenClaw 集成指南、开发路线图

欢迎任何形式的贡献——报告问题、提交代码、撰写文档、分享使用经验。

七、未来规划(v1.1.0)

来源:https://juejin.cn/post/7628583195649310729
上一篇未用先扣25K Token?廉价AI中转站隐藏黑账揭秘 下一篇多个Claude实例并行运行同一项目不冲突技巧
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

补充同频道和同主题内容,方便继续浏览更多相关内容。

同类最新

继续查看同栏目最近更新的文章。

更多
AI大模型对最新机器学习进展的评分如何
AI教程 · 2026-06-01

AI大模型对最新机器学习进展的评分如何

如何有效评估大语言模型的真实能力?近期,一款名为“The latest in Machine Learning”的工具引起广泛关注——该工具专注于大模型在MMLU(多任务语言理解基准)上的评分表现,目前已成为该领域极具权威性的参考指标之一。此工具依托于Papers With Code平台,该平台不仅

WowTo AI用AI轻松创建多语言支持与培训视频,提升客户体验与员工培训效率
AI教程 · 2026-06-01

WowTo AI用AI轻松创建多语言支持与培训视频,提升客户体验与员工培训效率

WowTo AI 产品介绍坦率地说,如今制作客户支持与员工培训视频,早已不再必须依赖专业团队。借助 WowTo 这类人工智能工具,整个流程变得极为直观——即便你毫无剪辑经验,也能生成包含多语言版本、带真人数字人形象的教程视频。它究竟能实现哪些功能?来看几个关键亮点:多语言自动生成:一次制作,即可自动

数字游民专属旅行保险推荐方案
AI教程 · 2026-06-01

数字游民专属旅行保险推荐方案

什么是Nomad Insurance数字游民群体正在持续壮大——他们背着笔记本电脑走遍全球,工作地点随心情而定。然而一个现实难题始终存在:传统保险要么按年捆绑销售,要么按国家划分保障范围,根本无法适应这种说走就走的生活方式。为此,专为数字游民和长期旅行者打造的Nomad Insurance应运而生。

OpenNN开源神经网络库机器学习应用解决方案
AI教程 · 2026-06-01

OpenNN开源神经网络库机器学习应用解决方案

OpenNN神经网络库:开源深度学习框架全面解析 在日常工作中谈及开源神经网络框架,有一个名字经常被开发者提及——OpenNN。它专为机器学习场景打造,核心目标非常明确:帮助用户构建更高效、更强大的模型。该库集成了众多前沿算法与实用工具,覆盖领域广泛,包括能源、市场营销、健康等真实业务场景,能够直接

英伟达GET3D AI 3D世界生成工具评测
AI教程 · 2026-06-01

英伟达GET3D AI 3D世界生成工具评测

提到Nvidia GET3D,这无疑是当前最值得深入研究的3D生成工具之一。它成功解决了行业一大核心难题:如何从普通图像直接生成高精度的三维纹理与形状模型。尤为关键的是,其工作流程非常简洁——只需输入一张或一组图像,模型便能快速输出带有完整纹理贴图的三维网格。对于游戏资产制作、虚拟场景搭建乃至产品设