在大規模向量檢索的應用場景中,往往既需要衡量向量間的相似度,又要對數據點施加額外的屬性過濾。傳統的近似最近鄰(ANNS)方法只關注向量相似度,對“向量 + 屬性”混合查詢(hybrid query)的支持能力不足。5月發佈在 arXiv 的 Lin 等人最新綜述《Survey of Filtered Approximate Nearest Neighbor Search over the Vector-Scalar Hybrid Data》對這一研究領域做了系統梳理,給我帶來不少啓發。
一、從定義到評價:釐清“混合數據”與“混合查詢”
過去各家論文中,對“混合數據集”(vector-scalar hybrid data)與“混合查詢”(hybrid query)的定義並不統一:有人把屬性當數值,有人當枚舉標籤;有人只做等值過濾,有人又支持範圍乃至任意表達式;評估指標上,“選擇率”(selectivity)和“特異度”(specificity)概念也時常混淆。Lin 等人從頭出發,形式化地定義了:
- 混合數據集 D = {p = (s, v)}:每個數據點 p 同時包含屬性元組 s ∈ S(標量域)和向量 v ∈ ℝᵈ;
- 混合查詢 q = (fₛ, fᵥ, v_q, k):屬性過濾器 fₛ、向量相似度函數 fᵥ、查詢向量 v_q、目標結果數 k;
- 過濾後的近似最近鄰(FANNS)問題:在滿足屬性過濾 fₛ 的點集中尋找近似 kNN;
- 評估指標:recall@k 衡量近似性,selectivity = 1 – |D₍fₛ₎| / |D| 衡量過濾率。
通過精確定義,消除了不同論文間的歧義,也為後續算法分類和公正評測奠定了基礎。
二、四種修剪策略:比“時機”更重要的是“方式”
Lin 等人指出,現有文獻多按“屬性過濾是在索引前(pre)、中(in)、後(post)”來劃分方法,既脱不開框架、也難刻畫改進細節。他們提出一個“修剪(pruning)”為中心的框架,把混合檢索過程看作對候選集的“向量修剪”(跳過相似度計算)和“屬性修剪”(跳過不滿足 fₛ 的點)兩類操作,組合成四種策略:
- VSP(Vector-Solely Pruning):只做向量修剪,常見於將原始 ANNS 引擎直接套用到混合查詢的“後過濾”思路;
- SSP(Scalar-Solely Pruning):只做屬性修剪,針對高選擇率(屬性過濾率高)的場景啓用暴力掃描或壓縮掃描;
- VJP(Vector-Centric Joint Pruning):以向量結構為主、在搜索過程中做屬性判定;
- SJP(Scalar-Centric Joint Pruning):以屬性分區/索引為主、而後在子集合內再按向量檢索。
這一框架比“pre/in/post”更細緻,也更具擴展性:當出現多階段過濾或混合索引(例如先按屬性分區再構建多級向量索引)時,同樣落在上述四個策略之中。
三、Beyond Selectivity:引入“分佈差異”度量查詢難度
混合檢索難度目前常用單一維度——selectivity 來衡量:過濾率高,VSP 類方法困難;過濾率低,SSP 類方法吃力。然而在現實數據中,不同屬性子集的向量往往呈現“聚類”或“離羣”分佈,屬性值不同的查詢向量落在同一簇裏,顯然更易檢索;若真正跨簇(分佈外,OOD),就更難。Lin 等人通過 MNIST-8M(屬性=數字標籤,向量呈 10 個簇)和 MTG(卡牌屬性,分佈高度重疊)兩組實驗,發現:
- MNIST-8M 上,跨簇(OOD)查詢的 recall 顯著低於同簇(ID)查詢;
- MTG 上,各屬性子集分佈相似,查詢難度幾乎一致;
- 這一現象在 IVF、HNSW 兩種索引均成立。
同時,他們探索了 Mahalanobis 距離、Wasserstein 距離對衡量分佈差異的作用,發現這些度量雖能對比同簇/跨簇有一定解釋力,但在半重疊(POD)場景下仍有盲區。真正要系統化評測 FANNS 算法,我們應在二維空間 —— (selectivity, distribution) 上構造測試集,才能全面覆蓋高/低過濾率與高/低分佈差異的組合。
四、未來方向:從索引創新到系統級集成
閲讀這篇綜述後,我尤其關注以下幾條未來研究脈絡:
- 通用過濾結構:能支持更復雜屬性語義(範圍、模糊匹配、布爾組合)的數據結構,與向量索引深度融合;
- 分佈感知索引:實時估計查詢向量與索引簇的分佈距離,在檢索時動態調整搜索策略和參數;
- 工作負載自適應:在線學習屬性查詢的分佈/selectivity 特徵,自動在 VSP/SSP/VJP/SJP 之間切換;
- 系統級混合策略:類似數據庫優化器,針對到達後台的查詢制定最優混合檢索計劃,並進行成本建模。
總的來説,Filtered Approximate Nearest Neighbor Search 是向量檢索與傳統數據庫屬性過濾結合的必然產物。Lin 等人的系統化定義、分類框架與“分佈差異”視角,為我們從理論到工程一站式地理解和改進混合查詢檢索算法提供了寶貴思路。期望未來能有更多開源庫、評測基準和生產系統落地,讓這條研究路線越走越寬。