在企業級 RAG 系統中,光靠 向量檢索(Semantic Search)或 傳統關鍵字檢索(Lexical Search)往往不足:
-
向量檢索:語意理解強,但可能「太聰明」,忽略了關鍵字(例如「NOT」、「2024」這種精確匹配需求)
-
關鍵字檢索(如 BM25):能精準匹配詞彙,但缺乏語意理解,無法處理「同義詞、問法多樣化」的問題
因此企業常用 混合檢索(Hybrid Search)+ 查詢智能化(Query Understanding),來同時兼顧 召回率(recall)與 精度(precision)。
混合檢索(Hybrid Search)
BM25 + 向量檢索的協同優勢
1. Lexical Search(BM25 / Elasticsearch)
- 找出和 Query 關鍵詞精確匹配的文件
- 適合處理「數字、代號、專有名詞」
2. Vector Search(Bi-encoder + ANN)
- 找出和 Query 語意相似的文件
- 適合處理「不同說法、同義詞、上下文理解」
3. 融合策略
分數加權融合:
「實務上需要對 BM25 與向量分數做正規化,再進行加權。」
final_score = α × bm25_score + (1-α) × vector_score
結果合併策略:
- 各自取前 K 筆
- 合併後再重排(可使用 RRF - Reciprocal Rank Fusion)
動態權重選擇:
if query_type == "精確匹配":
α = 0.7 # 偏重 BM25
elif query_type == "語義查詢":
α = 0.3 # 偏重向量檢索
else:
α = 0.5 # 平衡權重
這種方式能最大化召回率,避免只靠單一檢索策略而「漏掉答案」。
查詢智能化(Query Understanding)
即使檢索能力很強,如果使用者輸入的 Query 不佳,結果還是可能失敗。因此需要對 Query 進行 優化處理:
1. 查詢改寫(Query Rewriting)
將使用者輸入的口語 Query 改寫成更適合檢索的形式。
範例:
- 原始 Query:「公司最近有沒有新的 AI 產品?」
- 改寫後:「公司 AI 新產品 發表 2024」
2. 同義詞擴展(Synonym Expansion)
加入業務領域的同義詞詞庫,提升召回率。
範例:
- Query:「CRM 系統」
- 擴展:「客戶管理系統」「Customer Relationship Management」
3. 意圖識別(Intent Classification)
判斷 Query 屬於哪種類型(事實查詢 / 文件檢索 / FAQ 問答),依類型決定檢索策略。
策略比較
方法 |
優點 |
缺點 |
適用場景 |
純 BM25 |
精確匹配強 |
無法理解語意 |
法規條文、代碼檢索 |
純向量檢索 |
語意理解佳 |
可能忽略關鍵字 |
FAQ、客服知識庫 |
混合檢索 |
兼顧精度 + 召回 |
成本較高 |
大型企業知識庫 |
查詢智能化 |
提升檢索準確性 |
額外計算開銷 |
用戶 Query 多樣化 |
效果評估
實驗表明:
-
純 BM25 Recall@10 ≈ 50–60%
-
純向量檢索 Recall@10 ≈ 65–75%
-
混合檢索 Recall@10 ≈ 80–90%
如果再加上 查詢改寫 + 同義詞擴展,精度能再提高 5–10%。
企業應用案例
客服中心
- 用戶輸入「密碼鎖定怎麼辦?」
- 系統改寫為「密碼重設 流程」,混合檢索 FAQ 文件
法務文件檢索
- Query:「勞基法 加班費 2024」
- BM25 保證「2024」「勞基法」必須出現,向量檢索找到「加班費相關條文」
產品知識庫
- Query:「CRM 解決方案」
- 同義詞擴展自動加入「客戶管理系統」
BM25 深度解析
BM25 運作流程
-
精確詞匹配 → 找出包含查詢詞的文檔
-
詞頻加權 → 詞彙在文檔中出現越多次,分數越高
-
逆文件頻率 → 稀有詞彙權重更高
-
文件長度正規化 → 避免長文檔佔優勢
BM25 計算公式
BM25(q,d) = Σ IDF(qi) × (f(qi,d) × (k1+1)) / (f(qi,d) + k1 × (1-b+b×|d|/avgdl))
其中:
-
f(qi,d)
= 詞彙 qi 在文檔 d 中的頻率
-
|d|
= 文檔 d 的長度
-
avgdl
= 平均文檔長度
-
k1
, b
= 調節參數
BM25 實例
Query:「蘋果 手機」
- Doc1(蘋果+手機)> Doc2(只有手機)> Doc3(無關)
BM25 限制與解決方案
限制: 如果 Query 出現了索引裡沒有的詞(如「iPhone」),BM25 完全查不到。
解決方案: 靠 查詢改寫、同義詞擴展、向量檢索 來彌補。
總結
混合檢索與查詢智能化,讓企業級 RAG 系統同時兼顧:
-
召回率(Recall):避免漏掉答案
-
精度(Precision):避免答非所問
-
最佳實踐:BM25 + 向量檢索融合,再配合查詢改寫與同義詞擴展
想想看
- 技術債務權衡:混合檢索能提升 10-30 % 精度,但增加系統複雜度和維護成本。什麼情況下這個投資划算?
- 查詢改寫的邊界:過度的查詢改寫可能扭曲用戶原意。如何平衡「理解用戶」和「保持原意」?