在資訊檢索領域,向量搜索技術因能處理高維語義資料而廣受應用,但其缺乏可解釋性與關鍵字匹配能力,導致無法完全滿足用戶需求。Apache Solr 自 Solr 9.0 版本起逐步整合向量搜索功能,並透過混合搜索技術(Hybrid Search)解決上述問題。本文深入解析 Solr 混合搜索的實現機制、技術特性與應用策略,協助讀者掌握此技術的核心價值與實作方法。
向量搜索依賴高維度數值向量計算相似度,但其結果難以解釋單一維度對相關性影響,且缺乏語義與相似度的直接對應關係,導致無法明確回應用戶對結果的質疑。
用戶習慣透過關鍵字進行搜尋,而向量搜索可能忽略顯著關鍵字,造成結果位置偏移。此問題在處理「關鍵字未出現結果」的用戶投訴時尤為明顯。
向量搜索基於相似度搜尋,易產生重複結果,需額外邏輯處理才能提升結果多樣性,影響搜尋體驗。
prefilter
、include tags
、exclude tags
使用 Boolean 查詢解析器,結合語義搜索(KNN)與傳統關鍵字搜索,範例語法如下:
{!edismax qf=text} keyword_query AND {!knn field=vector_field topK=10} vector_query
結果集大小為兩者結果數量總和,Solr 自動去重以避免重複。
交集方式:語義結果與關鍵字結果的重疊部分,類似後過濾(post-filter)機制,但直接於查詢階段處理。
include tags
/ exclude tags
管理過濾器應用範圍function
查詢解析器定義加權公式:{!func} sum(normalized_lexical_score, vector_similarity_score)
透過訓練集(查詢-文檔對)訓練機器學習模型,特徵定義包含:
Solr 6.4 開始支援 LTR,9.3 版本整合向量相似度功能,此功能源自 Lucene 貢獻。
結合多個檢索函數與排序函數的混合策略,相關功能已提出 PO(Product Owner)請求,預計於柏林會議展開討論。
繼續提升 KNN 搜索效能與靈活性,支援更多相似度計算方式(如歐氏距離、餘弦相似度)。
增強 LTR 模型的自適應能力,結合更多語義特徵,支援更複雜的特徵組合與模型訓練流程
混合搜索透過結合向量與關鍵字查詢,有效解決向量搜索的可解釋性與關鍵字匹配缺失問題。Solr 提供 Union、Intersection 等組合策略,以及加權求和、乘積運算等得分組合方式,並整合 LTR 技術提升排序準確性。未來發展方向包含 Rank Fusion 與向量搜索優化,建議根據應用場景選擇合適的組合策略,並持續關注 Solr 的版本更新以掌握最新功能。