跳转至

OpenViking 三论文:VikingMem 记忆管理 + TrieHI 目录感知向量检索 + VikingRAG 分层按需读取

📊 Level ⭐⭐⭐ | 10.9KB

OpenViking 三论文:VikingMem + TrieHI + VikingRAG

字节/火山 OpenViking 团队围绕 Agent 上下文管理的三个问题各发一篇论文:怎么记(VikingMem,VLDB 收录,arXiv:2605.29640)、怎么存(TrieHI,ICDE 收录,arXiv:2606.16903)、怎么读(VikingRAG,arXiv:2609.11390)。

一、VikingMem:记忆是持续更新的档案,不是只进不出的收藏夹

Agent 记错(如预算数字过期)的根因不是没记住,而是记得太多:新旧内容并存,查询时都被召回但不知道该信哪条。VikingMem 把记忆分两层:Event(日记,何时发生了什么)与 Entity(档案,由算子按需调用大模型维护的"当前状态")。维护时能直接算的(计数)不调模型,只有需要语义理解的合并与冲突判断才交给大模型。

三个关键机制: - 写入时合并:去掉闲聊后,把散在多轮对话的同一件事合成一条完整记录——去掉这一步 LoCoMo 得分从 88.83 掉到 83.51,是所有环节中影响最大的。 - 旧事衰减:近期保留细节,久未提及的压缩成周报/月报式摘要。 - 低成本档案更新:模型只输出"改动"(旧文字→新文字),系统按编辑距离定位原地替换,不再调一次模型——单次抽取成本从 $0.35 降到 $0.07(-80%),得分基本不变。

实验数据:LoCoMo 88.83 vs 第二名 MIRIX 78.66 vs 全历史塞给模型 77.47(信息最全分数反而更低);查询延迟 ~0.2s(MIRIX 10s+);存储只占原始记录约 1/6;LongMemEval 75.80 vs 63.81(+11.99pp)。搜索结果再做 ColBERT 式多向量精排,向量写入时算好并压缩。已在 100+ 真实企业应用上线。

二、TrieHI:目录不是给人看的,是搜索的边界

两个项目同名《技术方案》拿错的根因:向量数据库没有文件夹概念,所有资料在同一空间按内容相似度召回。TrieHI 把目录存成树,每个文件夹挂一张清单(该目录及所有子目录的资料索引);搜索时先定位文件夹、只在清单内候选做向量检索;移动文件夹只更新沿路几个上级清单,资料本体不动。目录清单定位耗时从 365ms 降到 273μs(1000+ 倍)。

OpenViking 实现为 viking:// 统一 URI:ov find viking://projects/项目A "技术方案"——Agent 先浏览目录结构再自己决定进哪层找。这与通用文件系统组织知识、记忆和技能的定位一致。

三、VikingRAG:先看简介再下钻,按需读取 + 经验路线复用

人查资料的习惯(先看目录→定位→细读→够了就停)被显式建模为 L0/L1/L2 三层读法:L0 一句话简介判断相关性、L1 目录概要决定下一步、L2 完整原文。每读完一段检查证据是否足够,够了就停止查询。

  • VikingRAG-E(Experience Edge):记住"上次问什么、从哪开始、在哪找到",下次相似问题直接沿路线取回。与知识图谱的区别:KG 记"A 与 B 有什么关系",Experience Edge 记"上次问这类问题最后在哪儿找到的"。
  • VikingRAG-E+(自适应先快后全):先快速查找,证据足够直接答,不够才进完整多轮查找。
  • 实验:六个结构化文档数据集上准确率基本持平,token 用量仅为高准确率方法的 11.6%–51.9%(加 E/E+ 后 5.1%–32.5%)。短板:"数据足够可以停"的判断仍有 >5% 误判;L0/L1/L2 与经验记忆已上线,自适应先快后全仍在实验阶段。

四、组合效果与定位

三项合起来的实测:LoCoMo 问答准确率接 OpenClaw/Hermes/Claude Code 后从 24%–57% 升到 80%–83%(查询时间与输入 token 同降);HotpotQA 91% 准确率、每题 ~1.25 万 token、检索 0.23s(LightRAG 同实验 89% / 2.8 万 token / 75s)。

与库内 OpenViking 经验记忆 的关系:那篇讲 Experience 层(Session→Trajectory→Experience 进化闭环,跨会话学习"怎么做");本篇三论文讲 基础设施层(记忆怎么存对、目录怎么圈范围、文档怎么按需读),两篇互补构成 OpenViking 完整记忆/检索栈。Event/Entity 双层与 Context Engineering 的分层上下文思想互证。

深度分析

三篇论文是同一条"上下文供应链"的三道工序

开头的三个故障场景——预算数字过期、拿错同名文档、把几十份文档重读一遍——并非三个孤立的痛点,而是一次自上而下的问题分解:怎么记对应记忆的写入治理,怎么存对应检索的边界圈定,怎么读对应读取的下钻与停止策略。三篇论文各卡住供应链的一道工序,组合评测(LoCoMo 接入后 24%–57% → 80%–83%)证明三者收益可叠加而非互相替代。

与传统 RAG 栈的分野:治理、边界、停止条件

  • 信息过载是准确性问题,不只是成本问题:把全部聊天历史塞给模型只得 77.47,低于 VikingMem 的 88.83——信息最全分数反而更低,无关内容会把模型带偏。这与 上下文窗口经济学 的判断互证。
  • 传统 RAG 只优化相似度召回这一个变量;TrieHI 补上结构硬边界(目录树 + 清单,定位 365ms → 273μs),VikingRAG 补上停止条件(证据足够即停)。token 降到高准确率基线的 11.6%–51.9%,说明准确率持平时大部分 token 花在"不知道该在哪停"上。
  • Experience Edge 是以查询为中心的记忆:知识图谱记"A 与 B 有什么关系",它记"上次问这类问题最后在哪儿找到的"——不建模世界结构,只建模检索路径的复用,比 KG 轻且更贴近 Agent 实际工作流。

工程经济学:把大模型调用从热路径上摘掉

全文反复出现同一个原则:大模型只出现在必须理解语义的地方,其余退回确定性计算。能计数的直接计数;档案更新让模型只输出"旧文字→新文字"的改动,系统按编辑距离定位原地替换,$0.35 → $0.07(-80%)而得分基本不变;向量写入时预计算并压缩,精排压在百毫秒级;目录清单定位到微秒级。而影响最大的单点反而是写入时的语义合并(去掉它 LoCoMo 掉 5.32 分)——成本要前移到写入端花在刀刃上,而非均匀摊在每次查询。这与 Context Engineering 的分层思想一致。

成熟度梯度本身就是工程判断信号

三个组件的落地状态明显分层:VikingMem 的 Event/Entity 方案已在 100+ 真实企业应用上线;L0/L1/L2 分层与经验记忆已上线;自适应先快后全仍在实验阶段,且"数据足够可以停"的判断仍有超过 5% 的误判。这条梯度把"已被生产验证"与"仍在验证"的边界直接画进了论文叙述,接入方可据此分配信任。与库内 OpenViking 经验记忆 对照:那篇覆盖 Experience 层的跨会话进化闭环,本篇覆盖其下的基础设施层,两者叠加才是完整记忆/检索栈。

实践启示

  1. 记忆系统先做减法再做加法:写入时合并/去闲聊是全链路影响最大的单点(去掉它 88.83 → 83.51),优先投资写入端治理,再谈检索优化。
  2. 不要用"塞更多上下文"来提准确率:全历史召回 77.47 低于治理后的 88.83,过时与无关内容是负资产,旧事衰减和归档不是可选项。
  3. 给向量检索加结构硬边界,而不是靠标签过滤:标签要人工预打、条件一宽就漏;目录树 + 清单把"只在此文件夹内搜"做成数据库层能力(273μs),且移动/合并文件夹只需更新沿路清单。
  4. 为检索设显式停止条件:每读完一段检查证据是否足够,够即停——这是 token 降至 11.6%–51.9% 的主要来源之一,也顺带减轻无关内容带偏。
  5. 记"查找路线"而不只记"事实":Experience Edge 让第二次相似查询免于从头翻目录,是低成本高杠杆的经验复用形态,可迁移到任何 Agent 检索系统设计。
  6. 把模型调用限制在语义判断处:计数、编辑距离定位、预计算向量都用确定性计算替代,单次抽取成本 -80% 而得分不变——每接一次模型前先问"这一步真的需要理解语义吗"。
  7. 接入前按成熟度分配信任:L0/L1/L2、按需读取、经验记忆已上线可依赖;自适应先快后全仍在实验,停止判断有 >5% 误判,关键链路要保留人工核对出口。

相关实体

→ 原文存档