资讯

Apple 训练小网络给 RAG 检索带路,路由快了近一倍

2026-11-064 分钟阅读热点
TL;DR做过 RAG 的兄弟都懂那种感觉:模型换了一茬又一茬,回头一看,卡延迟的有时是前面那步“去库里找文档”。

做过 RAG 的兄弟都懂那种感觉:模型换了一茬又一茬,回头一看,卡延迟的有时是前面那步“去库里找文档”。

2026 年 11 月 5 日,Apple 机器学习研究团队在官方博客讲了一篇检索提速的工作,对应今年 ICML 2026 上发表的论文《Amortizing Maximum Inner Product Search with Learned Support Functions》。做法是离线训练小神经网络,让它学会把查询更准地送进对的分区。Apple 自己的数据显示,路由召回率达到 95% 的耗时从 3.36 毫秒降到 1.74 毫秒。我们 AI主线 的看法是:这篇论文把“用户的问题长什么样”这条一直被忽略的信息用进了向量检索,思路站得住,但目前所有数字都来自 Apple 自测,离直接换进生产系统还差第三方复现。

找书为什么总跑偏?

先把 MIPS(最大内积搜索)说成人话。问题和文档都被变成向量,库里有几百万条文档向量,要挑出内积最大、也就是最对口的那一条。挨个比太慢,常规套路是先把库切成 k 个区,每个区记一个“中心点”,来了问题先跟中心点比,再进最近的区细找。

这就像图书馆按区找书,只看每个区的“平均长相”决定往哪走。万一最对口的那本是冷门怪书,缩在某个区的角落,离区中心很远,你就会直接路过那个区。

Apple 这篇换了个问法。一个区里“最高的那个内积得分”,在数学上叫这个区的支撑函数,是凸分析里的老朋友。它是凸函数,在某个查询处求梯度,得到的正好是最匹配的那条向量。结构这么现成,为什么不让神经网络直接去学它?

两个小网络,各干各的活

Apple 训了两种网络。SupportNet 用输入凸神经网络(ICNN)学支撑函数,一口气给 k 个分区打分,回答的是“这个区里最对口的那条,对这个问题有多对口”,然后拿最高分的区去搜。

KeyNet 更直接:输入问题,输出它猜的最佳向量,相当于一个查询改写器。改写后的向量交给现成的 FAISS IVF 索引,索引本身一行不用动。

训练方式像提前刷题。从预期会出现的查询分布里采样一批问题,用暴力搜索把标准答案算好存下来,网络照着答案学回归。这笔训练开销是一次性的,Apple 管它叫摊销,论文标题里的 Amortizing 说的就是这个。

数字挺好看,前提也得摆出来

先看成绩。测试用的是 Natural Questions,约 260 万段落、切成 128 个分区。小号 SupportNet 到 95% 路由召回只要 1.74 毫秒,质心路由要 3.36 毫秒,快了近一倍,这个耗时已经把跑小网络的开销算进去了。

KeyNet 配 FAISS IVF 更有看头。要到 99% 召回,最大号网络用 0.23 毫秒,直接拿原始查询搜要 1.8 毫秒,约 8 倍。它没碰索引,只改了输入,这种“插在前面就能用”的形态对工程团队很友好。

再说前提。官方给的 XS 到 L 四档网络,规模分别取数据库规模的 1%、5%、10% 和 20%,这个“小”是相对的,L 档并不轻。网络是针对一个固定的 key 库、一套已知的查询分布训出来的。Apple 说对轻度的分布偏移还算稳,数据库更新后要不要重训,没给答案。

评测也有局限。图里展示的是 Natural Questions 一个数据集,Apple 说另有几个数据集趋势一致,数字全是自家实验室跑的,目前没有别人复现。

跟 ScaNN 这些老炮是什么关系?

向量检索这个圈子从来不缺老炮。FAISS 是 Meta 开源的库,也是 Apple 这次拿来当底座的东西。Google 在 2020 年 7 月开源了 ScaNN,靠各向异性向量量化来压缩库里的向量,Google 当时说在 glove-100-angular 上,同样精度下每秒处理的查询量约是第二名的两倍。

两条路一个在数据库这边下功夫,一个在查询这边下功夫,我的判断是更像两层能叠的东西,不是二选一。但 Apple 展示的对照只有质心路由和原始查询,ScaNN 不在其中,两家数字不在同一个基准上,别拿来硬比。

对谁有用?查询分布稳定、库又相对固定的场景最对口,比如企业内部文档问答、客服知识库。库天天大改的业务,摊销成本能不能回本,现在还说不准。目前这仍是一篇研究,Apple 没宣布它要进哪个产品。

我们 AI主线 接下来盯三件事:有没有人换数据集复现这组数字,库更新后重训的代价到底多大,Apple 会不会放出代码。这三件有了答案,再看它是不是真香也不迟。