☰
AIRI 记忆系统详解:如何用 DuckDB WASM + pgvector 为 AI 伴侣实现长期记忆
2026/9/25 5:59:32 网站建设 项目流程

AIRI 记忆系统详解:如何用 DuckDB WASM + pgvector 为 AI 伴侣实现长期记忆

【免费下载链接】airi💖🧸 自托管、归你拥有的 Grok 风格 AI 伴侣与 waifu / 赛博生命灵魂容器,目标是接近 Neuro-sama 的高度;支持实时语音聊天、Minecraft 和 Factorio 游玩,支持 Web / macOS / Windows。项目地址: https://gitcode.com/moeru-ai/airi

想让 AI 伴侣拥有长期记忆吗?开源项目 AIRI 用 DuckDB WASM 与 pgvector 两套向量存储方案,为 AI 伴侣(AI waifu / 数字伙伴)搭起了从「向量嵌入」到「记忆遗忘曲线」的完整长期记忆系统。本文带你读懂它的设计思路、关键文件和核心文件路径,无需大量代码也能快速上手。

为什么 AI 伴侣需要长期记忆?

普通的聊天机器人「一问一答」,聊完就忘。而 AIRI 的目标是让虚拟角色真正「住」进你的设备里,像 [Neuro-sama] 那样记得你说过什么、你们一起经历过什么(这里的链接已省略)。

记忆系统的难点在于:

  • 持久记忆 vs 工作记忆:长期记忆难以按关系和依赖遍历查询,而工作记忆容量有限;
  • 语义检索:需要用 embedding 模型把「文本」变成「固定长度的向量」,再做相似度搜索;
  • 像人一样遗忘:较新的记忆应比旧的更容易被想起,情绪与时间都会影响召回。

💡 AIRI 的开发者在 DevLog-2025.04.06 中明确说:目标是做出「当下最先进、最强大、最健壮」的记忆系统,思想深受人类记忆系统启发。

核心架构:DuckDB WASM 与 pgvector 双存储方案

AIRI 没有押注单一向量数据库,而是「浏览器端 + 服务端」两手准备:

DuckDB WASM:跑在浏览器里的向量数据库

浏览器里的记忆实验由@proj-airi/drizzle-duckdb-wasm封装包提供(已迁移至独立仓库,见 packages/duckdb-wasm/README.md)。

在 packages/stage-ui/src/composables/use-duck-db.ts 中,Web 端通过 Web Worker 加载 DuckDB 的 WASM bundle,并用 Drizzle ORM 建表:

CREATE TABLE IF NOT EXISTS memory_test (vec FLOAT[768]);

关键点:

  • 纯 WASM 运行:不依赖任何后端,768 维向量直接存在浏览器内存/本地;
  • Mutex 单例管理:用锁保证数据库实例全局唯一,避免多标签页并发踩踏;
  • Drizzle ORM 加持:TypeScript 类型安全,查询即代码。

pgvector.rs:服务端的向量检索引擎

服务端(如 services/telegram-bot 的 Telegram 机器人)选择 Rust 重写的 pgvector 兼容实现pgvector.rs,原因是它支持超过 2000 维的向量,为未来更大的 embedding 模型留足空间。

初始化脚本 services/telegram-bot/sql/init.sql 只有两件事:

ALTER SYSTEM SET vectors.pgvector_compatibility=on; CREATE EXTENSION vectors;

配合 services/telegram-bot/docker-compose.yaml 即可一键拉起向量数据库容器。而 packages/memory-pgvector/src/index.ts 则是一个基于@proj-airi/server-sdk的记忆服务模块,负责接入配置并常驻监听——这就是 AIRI 服务化记忆的入口骨架。

记忆如何工作:从对话到召回的 4 步

① 嵌入(Embedding):文本 → 固定长度向量数组。注意维度是固定的:切换 embedding 模型后需要重新索引所有记忆。

② 存储(Storage):向量写入 DuckDB(浏览器)或 pgvector.rs(服务端),并附带时间戳、场景、情绪等元数据。

③ 检索(Retrieval):按语义相关性 + 时间关联度打分,支持重排序(rerank)。

④ 衰减(Decay):借鉴人类遗忘曲线,为不同记忆类型(工作记忆 / 短期记忆 / 长期记忆 / 肌肉记忆)设定各自的强化曲线与半衰期,让「越新的记忆越容易被想起」。

除了确定性的衰减,AIRI 还模拟了随机闪回与情绪偏置——记忆可能突然被想起,也会被情绪左右:

文件导航:记忆相关代码都在哪?

模块路径作用
浏览器端 DuckDB 封装packages/stage-ui/src/composables/use-duck-db.tsWeb Worker 中初始化 WASM 向量库
Drizzle + DuckDB WASMpackages/drizzle-duckdb-wasm/README.md封装包迁移说明
服务端 pgvector 模块packages/memory-pgvector/src/index.ts记忆服务骨架
向量库初始化 SQLservices/telegram-bot/sql/init.sql开启 vectors 扩展
记忆系统设计文docs/content/zh-Hans/blog/DevLog-2025.04.06/index.md完整设计思路与交互 Demo
项目总览docs/content/zh-Hans/docs/overview/index.mdAIRI 定位与模块地图

写在最后

AIRI 的记忆系统给了三个值得借鉴的工程决策:

  1. 双后端策略——DuckDB WASM 让「零部署」的浏览器也能做向量检索,pgvector.rs 扛住服务端高维向量;
  2. 把遗忘建模成算法——衰减曲线、半衰期、情绪偏置,让 AI 伴侣的记忆更像人;
  3. 用 ORM 管理向量——Drizzle 让向量表和关系表共享一套 TypeScript 类型体系。

如果你想动手体验,可以先从 services/telegram-bot/docker-compose.yaml 拉起向量库,再阅读 DevLog-2025.04.06 里的交互 Demo 源码,一步步理解「AI 伴侣的记忆」是如何被存下来、检索出来的。

【免费下载链接】airi💖🧸 自托管、归你拥有的 Grok 风格 AI 伴侣与 waifu / 赛博生命灵魂容器,目标是接近 Neuro-sama 的高度;支持实时语音聊天、Minecraft 和 Factorio 游玩,支持 Web / macOS / Windows。项目地址: https://gitcode.com/moeru-ai/airi

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询