ToWow / ToWow 算法解读

NAC 公共锚坐标:如何比较不同模型生成的向量

异构编码器之间的候选匹配:将原始坐标转换为相对共同参照的相似度。

向量模型会把一段文字转换为一串数字,用于检索和匹配。在合作发现中,需求方可以把“需要什么”编码成向量,候选方也可以把“能提供什么”编码成向量,再比较两者。但多个 Agent 未必使用同一个编码器:即便两串数字一样长,相同位置也未必具有相同含义,直接比较缺少通用的保证。

本文介绍 NAC 中的公共锚坐标投影。双方先约定一组相同且有固定顺序的公开文本,称为锚点;各自使用自己的编码器,计算本地内容与每个锚点的相似度。输出的新向量中,每个位置都对应同一份公开参照,两端随后比较这些关系。本文只讨论这一投影和评分操作,以及它在一轮本地检索诊断中的表现。

跨模型比较的问题:相同对象可以具有不同坐标

这里用二维教学向量,暂时把语言模型拿开。模型甲把一个对象写成 (1,0),把另一个对象写成 (0,1)。模型乙把整张地图旋转了九十度,于是同样两个对象分别变成 (0,1) 和 (-1,0)。

两张地图内部的关系完全没变:两个对象仍然互相垂直。余弦比较的是向量方向,值为 1 表示方向一致,0 表示垂直,−1 表示相反;它不是匹配成功的概率。可是如果拿第一个对象在甲中的 (1,0),去和它在乙中的 (0,1) 直接算余弦,相似度会是 0。同一个对象在这个计算里像是毫不相干。

现在双方约好,把这两个对象作为共同地标,而且顺序固定。甲描述第一个对象时,报出“与地标一的余弦是 1,与地标二的余弦是 0”,得到 (1,0)。乙用自己的地图做同样的计算,也得到 (1,0)。两边终于可以比较相同含义的位置:第一项都指与地标一的关系,第二项都指与地标二的关系。

表示方式 甲端的对象 乙端的同一对象 两端直接算余弦
原始坐标 (1,0) (0,1) 0
相对共同地标的坐标 (1,0) (1,0) 1

这个例子的条件很强:两张地图只发生了整体旋转。因此内部角度保持不变。真实编码器之间的差异可能远比旋转复杂,这张表解释的是方法为何可能成立,不能用来宣布所有模型已经互通。

公共锚坐标:教学机制图

锚坐标投影:用同一组公开文本建立比较位置

回到 Agent 的世界,地标可以是一组双方都能读取的公开文本。每一端先用自己的编码器把这些文本变成向量。接到一段本地文本时,再逐一计算它与各个地标的余弦相似度。

假设为了教学只选三个参照:“修理物品”“教别人做事”“运送物品”。一张候选卡在甲端得到 (0.8,0.2,0.1),相关需求在乙端得到 (0.7,0.3,0.1)。这些数是示意值,并非实际模型输出。把两串数归一化后算余弦,结果约为 0.987。另一张偏向运送的卡片若得到 (0.1,0.2,0.8),与这项需求的余弦约为 0.329。按这个分数只选一张卡,系统就会把第一张排在前面。

从运算上看,改变很明确。原先我们在问“两端原始向量是不是指向同一方向”;现在问“两端对象各自对一组共同文本的相似度分布,是不是接近”。比较发生在一组被显式命名的位置上。

本地投影器会检查锚点版本,并允许比较双方共有的坐标前缀。前缀的作用是让较短和较长的表示仍能在同一批参照上比较;它不能让未传来的地标关系凭空出现。版本相同、顺序相同,保证的是我们确实在对齐同一组参照,不保证两种模型理解参照的方式完全一致。

本次诊断使用了 128 个公共锚点。它既比较“甲模型的需求、乙模型的候选”,也比较“乙模型的需求、甲模型的候选”,再将这两项分数取平均。本文解释的就是这项公共锚坐标操作。该评分函数没有执行一套嵌套递归过程,不能把它的结果扩写为完整 NAC 系统的所有能力。

与统一编码器、线性对齐的比较:锚点覆盖决定保留哪些差异

这种想法有明确的已有研究。Moschella 等人的相对表示工作,用样本与固定锚点之间的相似关系来建立可比较的表示,并研究了等距变换、缩放等条件下的性质。它为理解这条路线提供了直接参照。Relative representations enable zero-shot latent space communication

其他路线也值得认真比较。最直接的是统一编码器:如果所有参与者都愿意采用同一个模型,许多对齐困难一开始就不存在。另一种是利用成对参照学习一个变换。正交 Procrustes 寻找旋转、反射一类保持几何形状的映射;岭回归允许更一般的线性变换,同时用正则项限制拟合。我们在同一诊断实现中保留了这些比较。

锚坐标路线的吸引力,是先交换参照关系,而不要求所有端改用相同编码器。但代价也在这个动作里:我们把对象能表达的差异,压到了所选参照能够照见的部分。

如果全部地标都围绕木工,两个在编程能力上差别很大的对象,可能对这些地标都同样不相似。它们的锚坐标很接近,并不意味着它们可以互相替代。继续增加同类地标也未必补上缺口;问题可能是参照覆盖,而不是数量。

所以,128 只是这轮配置的锚点数。要判断更多锚点是否值得,需要同时看比较质量、计算和传输成本,以及新增锚点实际补出了哪些差异。一个更长的向量本身不是结果。

诊断结果:固定 128 锚点方案未胜过直接跨空间比较

在本地 M1 诊断表中,公共锚坐标这一臂的平均 Recall@100 约为 0.529,直接跨空间比较约为 0.595。Recall@100 看的是前一百名找回了多少已标注相关项,这里先在每个案例内计算,再对 37 个有可评估正例的案例求平均。前十排序指标 nDCG 则关注相关候选有没有排得更靠前;两种方法分别约为 0.166 和 0.173。它们来自同一份部分标注的诊断报告,不是跨所有模型和任务的结论。这些点估计也不能单独推出差异显著。

这个结果值得留下,正因为它不符合最省事的叙述。几何上缺少通用保证的直接跨空间比较,在这组数据上得分反而更高。我们不能为了把地标方法讲得漂亮,就省掉这一行。

我们目前能解释方法在什么条件下恢复可比性,也能指出它在哪里丢失信息;这轮固定配置并没有因此自动成为胜出方案。两种编码器之间到底共享了多少结构、参照是否偏向某类语义、诊断样本是否给某种表示特殊优势,都需要进一步区分。现有结果没有替我们选定其中一个原因。

这篇文章因此留下两件可以同时成立的事。共同参照给异构表示提供了一种清楚的比较办法;把这种办法放到具体任务里,仍然需要和统一模型、直接比较及学习对齐一起检验。理解了第一件事,我们知道怎样实现它;看见第二件事,我们才知道什么时候值得用它。


实现与证据。 NAC 投影器(实现定位保留于编辑档案);跨空间诊断比较(实现定位保留于编辑档案)。实测读数取自 M1 的部分标注诊断集,不能当作完整盲测或真实协作成功率。本文两个数值例均为教学构造,已复算。

公众号排版与配图

本篇另备有明亮、适合手机连续阅读的公众号排版稿,配图按照本文机制单独绘制。查看公众号版,或下载 Markdown、HTML、PNG 与 SVG 配图包。

下一步

如果你的团队正在把 agent 放进真实业务,想了解 Flowness,或想聊企业 AI 落地怎么做,请在“联系我们”页写下行业和想解决的问题,我们按这些内容回复。 联系我们