假設一個支援助理要找「取消匯出後如何復原」的說明。向量索引只打開了介紹匯出設定的分區,真正說明復原的段落在另一個分區。模型只能使用檢索送給它的內容。排查這種回答時,可以先問:檢索有查到正確的位置嗎?
算四個點就能看出來
這個示意例子裡,查詢 q = (1, 0),所以內積分數就是向量的第一維。分區 A 有 (3, 1)、(3, −1),分區 B 有 (5, 0)、(−1, 0)。兩個質心的分數分別是 3 和 2。只能查一個分區時,質心路由會打開 A,但全域最高分 5 在 B。四個向量的分數都可以直接手算。
配圖是 Boloop 為這個例子製作的說明圖,展示內積分數,未使用基準測試資料。
Apple 改了什麼
Apple 的研究文章介紹了兩個以離線精確配對結果訓練的模型。SupportNet 估計每個分區可能包含的最高分。KeyNet 預測一個鍵向量,再用預測結果查詢既有的近似索引。兩種方法都可能漏掉最佳配對。ICML 論文的作者是 Theo X. Olausson、João Monteiro、Michal Klein 和 Marco Cuturi。
在 Apple 的 Natural Questions 實驗中,小型 SupportNet 達到 95% 路由召回時耗時 1.74 ms,質心路由為 3.36 ms。這裡的路由召回是成功打開精確最佳配對所在分區的比例。耗時包含該實驗的路由模型推論。你的語料端到端耗時與回答正確率需要另外量測。
如何用自己的索引測試
- 固定語料快照和嵌入模型。準備保留的查詢集,包含短問題、少見詞和新文件的問題。對同一快照做窮舉檢索,保存精確 top-k。
- 在相同召回目標下比較兩條路由。維持相同的硬體、並行量,記錄路由召回、精確近鄰 recall@k 和檢索 p50/p95 延遲。再挑一組人工標註的相關段落,檢查向量最接近的內容能否回答問題。
- 比較前寫好失敗條件,個別觀察少見詞和新文件。如果某一組經常漏掉重要段落,試驗為它多探查幾個分區,量出成本;在影子流量中驗證時保留原路由。
- 把重新訓練和更新索引的時間算進去。語料穩定、類似查詢量大時,訓練成本較容易攤薄。文件或嵌入經常變動時,上線前用較新的快照再測一次。
本站建議:即使學習型路由跑得更快,也保留精確近鄰對照與相關性檢查。回答出錯時,就能追查證據在哪一步遺失。更通用的驗證方式可參閱AI 產生程式碼驗收清單。
Boloop 已核對資料和手算示例。本文未重跑 Apple 的基準測試。