记忆引用:iSpirit 如何"亮明出处"

每一句助手回复都标出它引用的记忆。深入 iSpirit 背后的 pgvector 流水线 — 让个人 AI 可被核对、而不是"凭信任" — 以及为什么"引用"是这整个品类一直缺失的那块基础原件。

一条助手消息上方挂着小徽章'引用了 5 段过往记忆',下方展开是被引用的记忆片段

"它是不是在编关于我的事?"

用一只个人 AI 的第一个月,有一种特殊的不安 — 用 ChatGPT 的第一个月,没有这种不安。

你让 ChatGPT 总结一篇论文。它给你一段总结。如果哪句话错了 — 至少在原则上 — 你能去查论文。真相在对话之外。你不需要模型"亮明出处",因为出处就是那篇文档,而文档你有。

个人 AI 不一样。真相就是对话本身。或者你的日记。或者六周前你顺口提过的一句话。当你的灵宠说"你已经想这件事一阵子了",落在你心里的那个问题,是你没法随手核对的:真的吗?还是它在替我脑补?

这就是大多数个人 AI 产品悄悄绕过去的那道信任鸿沟。它们优化的是"流畅" — 助手说得很自信,你读了,你点头,继续往下走。流畅就是产品。模型可能在编关于你的事,而唯一会注意到的人,就是那个本来记忆已经在淡去的你。

记忆引用,就是我们关上这道鸿沟的方式。

记忆引用具体在做什么

iSpirits 里的每一句助手回复,上面都会挂一枚小徽章:

引用了 4 段过往记忆。

点开下面的小箭头,一块面板展开。每一条引用都是一段 90 字符以内的预览,来自模型组织这次回复时真的用到的一段记忆,后面挂着出处 — 是一篇日记?是上周四聊天里的一句?是某个目标结束时你写下的反思?把鼠标停在任意一条上,你能看到它的相关性分数:0 到 1 之间的一个数,来自背后那次余弦搜索。

如果徽章写的不是"引用了",而是"鲜明地引用了 5 段过往记忆",那是一次置信度判断:至少 3 段命中,平均相关性 0.8 或更高。意思是模型这次没在"够",它是在记得

大多数时候你不会去点。你读完回复,徽章就在角落里轻声告诉你"这次有依据",然后你信任它的方式,跟你信任一本带脚注的书时不必每条都去翻一样。徽章在做它的事,不管你点不点。

但只要某一句回复感觉不对 — 灵宠说你对一个其实让你疲惫的项目"很兴奋",或者把一种价值观安在你头上、却又似乎不太合身 — 徽章就在那里,一键就是一次审计。你打开它,看见那 4 段记忆。其中两段确实是关于那个项目的;另外两段,重新一读,其实是你在抱怨它。模型把它们平均了。你可以纠正。(纠正这件事下面会讲。)

一个能"亮明出处"的模型,是一个你能纠正的模型。一个不能"亮明出处"的,只能让你二选一:要么完全信任,要么放弃。

从头到尾,它是怎么跑的

产生这些引用的流水线很短。这正是关键。

你加入 iSpirits 的每一段有意义的内容 — 一篇日记、一条聊天、一段向导反思、一条目标笔记 — 都会被 Azure 的 text-embedding-3-small 模型转成一个 1536 维向量,以 MemoryItem 的形式存进一张 Postgres 表里 — 那张表按你的 public_uid 划范围。embedding 列上有一个 HNSW 索引,做余弦相似度搜索。你的那一行,你的那个索引,绝不被汇入任何全局空间。

当你发出一条消息,这条消息本身也被 embed 一次,然后在你的那一行内查询前五位最近邻。结果是 5 个 MemoryItem 加 5 个浮点数 — 每条匹配的余弦得分。越高越近。

这五条会去两个地方。

一:进入响应里的citations字段,被序列化为 { text, source, source_id, confidence },前端把它们渲染成那枚徽章和"引用了哪几段?"的可折叠面板。

二:进入用来生成回复的提示词 — 不是原样塞进去,而是作为另一个由"上下文引擎"组装的、更丰富的上下文块的一部分。那一路用的是稍微紧一点的阈值 0.25,以及 8 条的 top-k。所以负责回复你的模型,眼前是关于你的一张精挑、贴标签的图,而且只挑出在这一轮里相关的那部分。徽章里能看到的那张图,跟模型眼前那张是同一张。

"两用",才是关键。回复有依据,而依据是你也能看见的。没有一个秘密的上下文层在悄悄给模型递耳语 — 然后徽章对此只字不提。

为什么用 pgvector,而不是某个独立向量数据库

2025 年关于 AI 基础设施的一半文章都在写"该选哪个向量数据库" — Pinecone、Weaviate、Qdrant、Milvus 比来比去。我们选了一个无聊的答案:Postgres 里加一列、装上 pgvector 扩展、建一个 HNSW 索引。在个人体量的数据集上,余弦搜索是个位毫秒;按行划范围只要一句 WHERE user_id = …;备份就是这个 App 整体的备份;凌晨三点不用多照看一套基础设施。

它还有一个被讨论得太少的隐私性质:你的记忆和你的关系数据,在同一行,在同一个数据库,在同一套鉴权后面。另一套独立向量库,是另一道需要单独鉴权的边界,而在实际生产里,这道边界经常没鉴权严。泄漏多发于接缝处。

"鲜明地"这个阈值,为什么存在

徽章的第一版只写"引用了 N 段过往记忆",没了。能用,但有一个"扁平"的问题:无论这次召回是一次紧凑、高相关的命中(你前两周里清清楚楚写过这件事三次),还是一次"够"出来的(只有一条弱命中,只是因为总得有一条最近邻),徽章看起来一模一样。

所以我们加了第二档。如果回复至少引用了 3 条,且平均相关性 ≥ 0.8,徽章就改写"鲜明地引用了"。一个很小的字面变化 — 同一枚徽章,换了一个动词 — 但它告诉你一件原始计数说不出口的事:这次回复不是在"够",它是在"记得"。

那两个阈值不是魔法数字。它们来自手工翻看大约一百段对话、一段一段把引用面板核完之后,找到那个"对,这就是我说过的"占比从渐变变成断崖的拐点。3 + 0.8 是"鲜明地"这个动词从"营销话"开始变成"真话"的位置。

而且这个判断偏保守。默认徽章是更克制的那一档。我们只在数据撑得起的时候,才上"鲜明地"那句更强的话。反向校准 — 默认自信、被追问时再退坡 — 是 AI UX 里的标准做法,而那也正是这个品类今年信誉受损的原因。

UX 选择:一枚徽章,而不是一墙引用

学术引用是会"打断阅读"的。维基百科里行内的脚注角标会拖慢阅读节奏;一段话里的下划线链接会打散语流。聊天 App 里正确的选择,是不那样做。

徽章浮在消息气泡上方,品牌色 60% 不透明度,一秒之内就读完。它不挡回复。下面的可折叠详情,用的是浏览器原生的 <details> 元素 — 默认收起,无依赖、无动画、无加载圈。打开是一次点击。收起是默认。"去核对"的成本是一次点击;"忽略"的成本是零。

这种做法,更像一篇带脚注的科学论文,而不像典型的 AI 应用。大多数提到"来源"的个人 AI 产品,把它放在某个菜单后面的另一个屏幕上 — 这等于没有 — 因为没人会在心流之中跳进菜单去核对。

有一处小细节,后来发现挺重要:徽章上的视觉小点,是真正的 DOM 元素,不是 emoji。原型阶段我们用过一个闪光 emoji。在 Mac 上看起来还行,在 Windows 上看起来怪怪的,在老 Android 上很糟,在屏幕阅读器里被读成"装饰"。换成的是一颗 12px 的渐变小球 — 跟全站同一套品牌色 — 在所有设备上长一样,在辅助技术下用 aria-hidden 隐去。

信任回路:引用看上去不对时,你能改记忆

记忆引用真正"挣回成本"的地方,是这里。

假设你打开引用面板,看到五条里的一条写着 "对发布很兴奋"(聊天,4 月 12 日),而你记得 4 月 12 日,是你决定推迟发布的那一天。模型从一段矛盾对话里捡了错的那一半。会发生的。

在 iSpirits 里,你可以直接修正这段记忆。点那条引用,编辑文字,保存。下一次模型再去取你的记忆时,它拿到的是你版本的"我那时候到底什么意思",而不是当初被 embed 的那个片段。向量重新生成。下一次再涉及这条线的回复,就基于一段实际上属实的内容。

机制很小,但它建立的回路,是这款产品能"累积"的全部原因。模型说得有点偏 → 你通过引用看见 → 你修正 → 模型下次说得对。没有引用,这个回路连入口都没有:你不知道模型用了什么,所以你也没法改它用了什么。模型悄悄越来越偏,你束手无策。

这也是为什么我们不把"幻觉"单纯当作模型质量问题。一只个人 AI 在关于你的事情上"幻觉",不是靠换更强的基础模型能解的。它要靠一套用户能看到模型用了什么、并能它用了什么的系统来解。

为什么这件事在个人 AI 里这么少见

如果记忆引用真这么有用,为什么几乎没有别的个人 AI 产品做?这问得公平。

一个回答:对那种"记忆层并非真的扎根在用户可控数据上"的产品,记忆引用很不方便。如果你的"记忆"是一份微调过的模型 checkpoint,或者一段塞了合成人格碎片的巨型提示词 — 这都是行业里常见做法 — 你根本没有"引用"可亮。没有可指的东西。回复的依据是模式,不是文档。

另一个回答:亮明出处,等于让自己"可被追责"。一旦用户能核对你的模型用了什么,他们也能核对你的模型用什么、错在了什么。大多数消费级 AI 是建立在"用户不会去查"这一前提上发布的。引用是故意打破这个前提。

最后一个回答,也是这款产品里我们反复回到的那一句:发一个"可被核对"的功能,比发一个"很流畅"的功能要难。一枚显示四段记忆和相关性分数的徽章,前面那一整套基础设施 — 按用户隔离的向量库、嵌入流水线、可审计的数据库结构 — 必须真的存在。在一个含糊的"记忆层"上面,是装不上这枚徽章的。所以这枚徽章本身,是个不错的标识:能给你看记忆引用的个人 AI,几乎按构造就是一只你也能伸手去到它记忆里的灵宠。

来试试

这枚徽章,现在就在聊天里每一句助手回复上。免费版就有。不是设置项,不是开关,不是 feature flag。

如果你也开始厌倦那些"上面光滑、下面无从核对"的个人 AI 产品 — 看到差别最直接的方式,就是给你的灵宠发一条关于你一周前写过的事情的消息,看徽章亮起来。

免费试试 iSpirits

养一只灵宠。看着每一句回复都亮明出处。

开始 →

功能介绍 · 价格

更多文章