混合檢索結合了關鍵字檢索、向量檢索和Rerank的優勢,透過動態加權機制實現最佳檢索效果。情緒加權則進一步考慮了文本的情緒狀態,為檢索結果賦予情緒相關的權重 。
基礎混合檢索公式
final_score = α × bm25_score + (1-α) × vector_score
其中權重α根據查詢類型動態調整 :
精確匹配:α = 0.7(偏重BM25)
語義查詢:α = 0.3(偏重向量檢索)
平衡查詢:α = 0.5
根據最新的Retrieval-Augmented Emotion Reasoning(RAER,是一個革命性的AI框架,專門設計用於增強多模態大語言模型 (MLLMs) 處理複合情緒和情緒推理任務的能力。這個框架來自2025年ACL會議的最新研究成果 )框架,情緒加權通過以下步驟實現:
情緒知識庫建構:多模態情緒資料集編碼為高維向量,附加詳細情緒標註
情緒推理鏈:透過Chain-of-Thought機制引導情緒推理
檢索增強:根據情緒相似度檢索相關情緒知識
BM25演算法的核心公式為:
BM25(q,d) = Σ IDF(qi) × (f(qi,d) × (k1+1)) / (f(qi,d) + k1 × (1-b+b×|d|/avgdl))
參數說明:
現代向量檢索系統採用
HNSW (Hierarchical Navigable Small World:一種高效的近似最近鄰 (Approximate Nearest Neighbor, ANN) 搜尋演算法。它特別擅長在大型資料集中快速找到與查詢點「最相似」的點,即使資料維度很高也表現良好)和
eKNN (exhaustive K Nearest Neighbors,窮舉KNN,aka.暴力KNN)演算法進行相似度計算 。
分數正規化策略
由於BM25分數無界而向量相似度通常在-1到1之間,需要進行正規化處理 :
情緒權重整合
根據EmoRAG系統的實驗結果,情緒加權能顯著提升檢索精度 :
# 情緒加權計算
emotion_weight = emotion_boost if result.emotion == target_emotion else 1.0
final_score = α × normalized_bm25_score × emotion_weight + (1-α) × vector_similarity × emotion_weight
效能評估
實驗數據顯示,混合檢索比單一檢索方式表現更優 :
召回率提升:避免單一策略漏掉答案
精度改善:結合查詢改寫和同義詞擴展可額外提升5-10%
實際應用場景
企業級RAG系統
在企業級應用中,混合檢索特別適合處理 :
數字、代號、專有名詞:BM25優勢
語義理解任務:向量檢索優勢
複合查詢:兩種方法協同作業
EmoRAG系統在SemEval-2025任務中的實驗顯示,該方法在多語言情緒檢測上達到了F1-micro 0.638和F1-macro 0.590的平均分數 。
主要挑戰
計算複雜度:RAER需要較長推理時間
多模態整合:目前缺乏同時支援視覺、音訊、文本的生成模型
類別不平衡:在高度不平衡的類別分佈中可能出現問題
解決策略
動態知識庫更新:透過高信心樣本持續擴充檢索庫
自適應權重調整:根據查詢類型和情緒強度動態調整權重
多輪檢索優化:透過多次檢索迭代提升效果
這種混合檢索與情緒加權的結合,不僅提升了RAG系統的檢索精度,也為情緒感知的人機互動開闢了新的可能性。
實作目標:結合BM25和向量檢索,加入情緒權重
EmotionVectorRetriever 類別:向量檢索
EmotionBM25Retriever 類別: 關鍵字檢索
EmotionHybridRetriever 類別:
main() 函數: