你已经有一批文本向量,准备把另一个团队的向量接进来。两边都使用余弦相似度,向量也恰好一样长。把它们放在同一个索引里,似乎只差一次数据导入。
真正需要回答的问题是:两边的数字在描述同一个空间吗?
向量模型的输出是学习得到的坐标。一个模型的第 17 维,与另一个模型的第 17 维没有天然对应关系。即使它们对同一批文本有很相近的理解,坐标的写法也可能不同。
ToWow 研究中的 NAC(Nested Anchor Coordinates,嵌套锚点坐标)由此出发:让各方用自己的模型观察一组共同参照,再交换观察结果。下面先用一个可以手算的例子解释这个动作,再讨论它怎样用于寻找合作对象。
一个旋转就足以使直接比较失效
设想一个二维模型 A。它把某段文本放在 x = (1, 0)。模型 B 对同一段文本的表示是 x′ = (0, 1)。两串数字直接做余弦相似度,结果是 0。
然而,在这个教学例子中,B 只是把 A 的整个空间逆时针旋转了 90 度。所有文本之间的夹角都保持不变。两个模型内部的检索结果可以完全相同,刚才的跨模型比较却把同一段文本当成了正交方向。
现在加入两个共同参照对象 a 和 b。它们在 A 中的位置分别是 (1, 0) 和 (0, 1);旋转后,在 B 中分别是 (0, 1) 和 (-1, 0)。
我们让每个模型回答两个问题:这段文本与 a 有多相似?与 b 有多相似?
| 模型 | 文本的原始坐标 | 与参照 a 的余弦相似度 | 与参照 b 的余弦相似度 |
|---|---|---|---|
| A | (1, 0) |
1 | 0 |
| B | (0, 1) |
1 | 0 |
原始坐标不同,参照结果都是 [1, 0]。比较两列参照结果,就能识别这个例子中的一致性。
转动空间,比较两组数字
这里只模拟整体旋转。真实模型中的相对关系需要另行测量。
这里没有学习一个把 B 转回 A 的矩阵。每一方都在自己的空间内计算合法的相似度,再把结果按共同顺序写出来。交换的是对同一组对象的关系描述。
公共参照怎样成为坐标
NAC 中,一个参照可以是一段固定文本或一个共同可获取的例子。协议先确定参照集合及其顺序。每个参与者用自己的编码器 E 编码本地内容 x 和所有参照 a₁…aₘ,生成:
c_E(x) = [cos(E(x), E(a₁)), …, cos(E(x), E(aₘ))]
这时,第一个位置的含义是“与第一个参照的关系”,第二个位置是“与第二个参照的关系”。模型 A 的原生向量可以有 384 维,模型 B 可以有 1,024 维;只要两者计算同一批 m 个参照,就都能输出 m 个关系值。
相对表示已有明确的研究来源。Moschella 等人在 ICLR 2023 的 Relative Representations 中,使用样本与锚点之间的相似度构造表示,并研究潜空间比较与模型组件拼接。NAC 采用这一类坐标思想,进一步研究开放 Agent 网络需要的分段传输、关系方向和版本演化。
共同参照消除了“第几个数对应什么”的歧义。能保留多少语义,则取决于模型和参照的实际性质。刚才的旋转例子特别顺利,是因为旋转保持夹角;现实模型还可能学会不同的区别。
比如,一个模型很重视“可以借用设备”与“正在采购设备”的差异,另一个模型把两者都归在设备主题附近。公共参照让这种分歧出现在可比较的表面上,后续仍需要判断它是否损害检索。
从一份关系表,走到一次合作发现
考虑一个设备试验的设计示例。小团队正在做热成像质检,需要两小时设备使用和现场指导。附近实验室有空余时段;另一位工程师也在寻找同类相机。
两位寻找者写出的文本可能最相似。设备名称、试验目标和技术词汇都高度重合。实验室的介绍可能写着“仪器平台”“短时开放”“操作支持”,反而在措辞上离需求更远。
因此,信号还需要说明这段内容在关系中扮演什么角色。NAC 的设计允许将一份本地描述拆成不同方向的片段:寻找、提供和背景。需求方的“寻找设备”,首先与实验室的“提供设备”比较。另一个寻找者仍可能带来经验或引荐,只是需要另一种合作理由。
一次信号生成可以写得很具体:
- 本地 Agent 选出与本次需求有关、允许参与发现的内容。
- 用本地模型计算这段内容相对于公共参照的关系值。
- 附上“寻找”方向、参照版本与有效期。
- 接收方用对应的“提供”片段形成候选比较。
这里真正交给网络的是一份有语义方向的关系描述。时间是否吻合、设备是否合适,可以在后续对话中逐步补充。
按传输预算展开坐标
一个发现网络可能需要先做便宜的粗筛,再把计算投入少数候选。NAC 因此把参照排成稳定顺序,让信号可以先发送较短前缀,需要时继续增加。
例如,第一轮只交换前 32 个关系值;候选值得进一步查看时,再扩展到 128 个。这两个长度只是解释方式的示例。有效配置需要在任务上测量:短前缀漏掉多少有用对象,增加一段后补回多少,付出多少计算与传输。
这种顺序需要认真设计。如果前 32 个参照都在描述相似的工业采购场景,它们可能对艺术合作或教学关系没有足够区分力。一个长向量可以表现良好,它的开头却很差。因此“可以截断”与“截断后有用”是两个需要分别处理的问题。
这也解释了 NAC 与 Matryoshka Representation Learning 的关系。后者通过训练让不同长度的表示都具备实用性;NAC 将可分段的顺序放在外部参照上,从而允许参与者保留自己的编码器。新的自由度带来了新的实验问题:怎样选择与排序参照,才能让每个传输预算都有可用信号?
模型可以更换,共同参照也会变化
只交换一个浮点数组还不够。接收者需要知道使用哪一版参照、收到了多长的前缀,以及这些信息何时生成。否则,两串等长数组可能分别对应不同题目。
NAC 因此将版本与方向和坐标一起携带。当本地模型升级时,Agent 可以回到原始材料,重新计算参照结果。参照集合更新时,则需要新旧版本的过渡安排:一段时间内同时生成两版信号,或让明确支持同一版本的节点相互比较。
这里最有意思的设计选择,是把共享依赖从“大家安装同一个模型”,移到“大家能取得并解释同一份参照”。模型选择由各方维护,参照的质量和演化成为网络共同面对的问题。
什么时候值得采用
如果所有内容都可以交给同一个服务编码,共享编码器往往是很直接的起点:向量天然处于同一空间,接入与检索都更简单。已有向量必须跨空间复用时,也可以学习变换;vec2vec 就研究了从嵌入分布中学习翻译的路线。
NAC 值得研究的环境,是参与者希望保留本地模型,同时需要一份共同可解释、能够逐步增加细节的交换表示。工程选择需要同时看检索质量、参照计算、传输体积,以及更换模型后的维护成本。
目前,ToWow 已形成信号设计与参考实现,跨模型发现效果仍是待验证的问题。此前的本地诊断包含锚点坐标和其他表示,但未完成足以确定这套跨厂商方案的完整评估。本文介绍的是机制及其设计理由。
共享编码器、学习映射和公共参照,把维护成本放在了不同位置。NAC 的选择是让模型继续由各方维护,同时共同维护参照的质量与顺序。它能否成为合适的交换表示,取决于这笔成本换回了多少可用的跨模型比较。
研究材料:NAC 机制档案与 Discovery Front 当前状态记录;本地定位见出版包 SOURCE-NOTES.md。文中的二维坐标、设备场景和 32/128 前缀用于解释,没有作为模型实验结果使用。
