檢索增強生成

稠密檢索與稀疏檢索(dense vs sparse retrieval)

檢索大致分成兩個家族。稠密檢索(dense retrieval)使用學到的嵌入——之所以叫「稠密」,是因為向量很短,而且每一維都帶有某種意義。稀疏檢索(sparse retrieval)的經典例子是 BM25,它依關鍵字的重疊來給文件評分;它的向量很巨大且大半是零,詞彙表每個字一格,只有真正出現的字那格才被點亮。一個用意義思考,另一個用字面詞彙思考。

兩者各有典型的盲點。稠密檢索能捕捉意義、同義詞與換句話說,卻可能在精確詞彙、罕見專有名詞和特定數字上失手。稀疏檢索對精確關鍵字和類似代碼的比對很在行,卻對改寫視而不見——你搜「car」,它永遠找不到只寫了「automobile」的段落。針對某個語料庫,判斷你能容忍哪一種失敗,便引導了選擇,也常促使人們把兩者一起使用。