JOVANA
Explore Library Glossary Getting Started Three Levels Fields How it works Mission
Join the mission
All guides

檢索出正確的段落

稠密、稀疏、混合、重排——這些選擇決定了模型到底看不看得到答案。

檢索才是瓶頸

這是 RAG 一個不太中聽的事實:如果正確的段落根本沒被檢索進來,再聰明的提示也救不了那個答案。生成器只能依據你遞給它的東西來接地。所以檢索品質是整個系統最大的那根槓桿——要先在這裡下功夫,其他都還在其次。

上一篇的語意搜尋是主力:把查詢向量化,向向量倉儲要它的最近鄰(nearest neighbours)。但純粹比對語意有盲點,補上這些盲點正是本篇的重點。

稠密 vs 稀疏

檢索器有兩大流派,搞懂它們的取捨是 RAG 的基本素養。稠密(dense)檢索就是嵌入那套:比對的是語意,所以能找到改寫和同義詞——但它可能對沒學過的精確字串卡關,例如料號 `RX-7G` 或罕見的姓氏。

稠密检索按向量相似度排序:用点积衡量查询与文档嵌入在含义上的方向有多一致。

两个向量的点积等于它们模长之积乘以夹角余弦。

稀疏(sparse)檢索是經典的關鍵字搜尋(想想 BM25):比對的是字詞,並獎勵精確重疊。它能準確命中那個料號和任何字面詞彙——但若問題用了和文件完全不同的詞彙,它就會漏掉。稠密強在稀疏弱的地方,反之亦然。正是這種互補,構成了把兩者結合的全部動機。

混合檢索

混合檢索(hybrid retrieval)同時跑稠密和稀疏兩種搜尋,再把結果合併。常見的合併法是倒數排名融合(reciprocal rank fusion):每個候選依它在各清單裡的名次計分,於是兩種方法都看好的塊會浮到最上面,而只有單一方法僥倖命中的就被打折。實務上混合是個可靠的預設選擇——它把稠密搜尋漏掉的精確相符救回來,又不犧牲語意相符的那些。

\text{RRF}(d)=\sum_{i}\frac{1}{k+\operatorname{rank}_i(d)}

倒数排名融合:每个候选按其在各列表中的排名计分,因此在任一检索器中排名靠前的段落都会在合并后上升。

重排

第一階段的檢索是為速度而生,所以稍嫌粗糙——它把查詢和每一塊分開計分,再比對向量。重排(reranking)加上一道精準的第二關:先撈出寬鬆的一批(例如前 30 名),再跑一個比較慢的交叉編碼器(cross-encoder),把查詢每個候選放在一起閱讀,評出真正的相關度。留下最好的那幾塊。如此一來,你既有快速檢索的召回率,又有細讀的精確度。

  1. 廣撈——用混合搜尋拉出 20–50 個候選,先求召回。
  2. 重排——用交叉編碼器把每個候選對著查詢評分,再依分數排序。
  3. 砍到前 k 名——只把最好的 3–8 塊傳給生成器,讓提示保持聚焦。

調整前先量測。挑幾個真實問題,仔細看回傳了哪些塊,然後自問:答案在裡面嗎?如果檢索一直漏,後面的招數都救不了——回頭調切塊、調嵌入、或加上重排,直到正確段落能穩定出現為止。

检索质量就藏在相关段落与检索段落的交集里——重排序提升精确率,让答案能挺过截取到前 k 个的筛选。

相关文档与检索文档的文氏图,说明精确率与召回率。