稠密文段檢索(Dense Passage Retrieval)是什麼?

使用深度學習模型進行端到端訓練的文段檢索方法,將查詢和文段都編碼為密集向量,通過向量相似度進行匹配。|本頁含完整原理、應用場景、iPAS 考試重點與 3 個常見問答。

英文
Dense Passage Retrieval
主題標籤
檢索增強、自然語言處理、機器學習
考點定位
非 iPAS 核心術語
最後更新
2026/06/23
稠密文段檢索(Dense Passage Retrieval)是什麼? 檢索增強自然語言處理
術語快查

搜尋意圖: 如果你在找「稠密文段檢索 是什麼」或「稠密文段檢索 和相近概念差在哪」,先看這頁的短定義、完整說明與延伸比較。

TL;DR: 使用深度學習模型進行端到端訓練的文段檢索方法,將查詢和文段都編碼為密集向量,通過向量相似度進行匹配。

實用情境: 適合用在閱讀 AI 文章、產品文件或和同事討論時,先用一頁快速對齊概念。

下一步: 先讀完定義,再往下看延伸比較與對應工具,把概念轉成實際應用。

使用深度學習模型進行端到端訓練的文段檢索方法,將查詢和文段都編碼為密集向量,通過向量相似度進行匹配。

核心概念

稠密文段檢索(Dense Passage Retrieval,DPR)是一種將查詢和文段映射到共享向量空間的檢索方法。「稠密」指的是編碼向量的每個維度都包含信息,與此相對的是傳統檢索中的「稀疏」向量(大多數維度為 0)。DPR 的核心創新是端到端的訓練範式:系統不再依賴於人工設計的特徵或啟發式規則,而是通過機器學習在真實的問答對上學習最優的編碼表示。

DPR 架構由兩個獨立但相互關聯的編碼器組成。查詢編碼器接收自然語言問題,將其編碼為一個 d 維的密集向量。文段編碼器接收候選文段,同樣將其編碼為 d 維向量。查詢向量與所有文段向量之間計算內積或余弦相似度,相似度最高的文段被認定為最相關的。這種簡潔高效的匹配機制使得 DPR 可以在大規模知識庫上實現快速檢索。

訓練 DPR 的關鍵是選擇合適的損失函數。通常採用對比損失(Contrastive Loss),鼓勵相關查詢和文段的向量相近,同時推遠無關的對。在沒有大量標註資料的情況下,可以使用弱監督信號,例如從問答資料集中直接抽取文段作為正例。

運作原理

DPR 的訓練過程包括資料準備、編碼器初始化和對比學習三個步驟。

在資料準備階段,系統需要大量的查詢文段對。對於開放域問答任務,通常使用公開問答資料集(如 SQuAD 或 Natural Questions)中的問題和包含答案的維基百科文段作為正例。負例的選擇至關重要,一般採用 BM25 檢索到的高排名但不包含正確答案的文段,這些「硬負例」對於訓練有效的模型特別重要。

編碼器初始化通常基於預訓練的語言模型,例如 BERT。查詢編碼器和文段編碼器共享相同的基礎模型,但分別進行初始化和微調,允許它們在訓練過程中發展出不同的表示。

對比學習階段使用批次內負採樣和難負例挖掘。給定一批查詢,系統計算每個查詢與批次內所有文段的相似度,並使用對比損失函數。更進階的技術包括聯合訓練多個編碼器,使用強化學習進行困難負例選擇,以及採用異步更新策略以減少計算成本。

在推理階段,首先對知識庫中的所有文段進行離線編碼,將密集向量存儲在向量索引結構中(如 FAISS)。給定查詢時,即時編碼查詢向量,然後在索引中執行最近鄰搜尋,返回相似度最高的 K 個文段。這種離線編碼 + 在線搜尋的設計使得系統具有良好的延遲特性。

實際應用

DPR 在開放域問答系統中表現優異。維基百科文段作為知識源,DPR 能夠快速定位包含答案的相關文段,為後續的閱讀理解模型提供支持。在這類系統中,DPR 的檢索準確度直接影響最終的問答效果。

在企業文檔檢索中,DPR 可以幫助員工快速找到相關的內部文檔、會議記錄、產品說明書等。相比關鍵詞搜尋,DPR 能夠理解自然語言查詢的真實意圖,提供更相關的結果。

在電商推薦系統中,DPR 可以編碼商品描述和用戶查詢,實現基於語義的商品檢索。用戶可以使用自然語言描述需求,系統找到語義匹配的商品,而不限於詞彙完全匹配。

在學術論文檢索中,研究者可以使用自然語言查詢查找相關論文,DPR 能夠跨越詞彙差異的障礙,找到在概念上相關但表述不同的論文。

在客服場景中,DPR 可以快速定位常見問題解答中的相關文段,為常見問題的自動回答或人工客服的快速參考提供支持。

常見誤區

誤區一:認為更多的訓練資料一定會提升 DPR 效果。實際上,訓練資料的質量遠比數量重要。精心選擇的負例和來自真實任務的訓練對遠優於隨機收集的大規模資料。

誤區二:認為在一個任務上訓練的 DPR 可以直接應用到完全不同的領域。雖然預訓練的編碼器有一定的遷移能力,但最優效果仍需要在目標領域的資料上進行適應性微調。

誤區三:忽視編碼向量的維度選擇。維度過小會損失信息,維度過大會增加計算和存儲成本且可能導致過擬合。在實踐中,768 到 1024 維度已足以應對大多數任務。

誤區四:認為 DPR 能完全消除檢索中的語言偏見。如果訓練資料本身包含偏見,編碼器會學習並複製這些偏見。需要有意識地進行資料審計和去偏差處理。

與相關技術的比較

  • DPR 與 BM25:BM25 是經典的稀疏檢索算法,基於統計和詞彙頻率。優點是簡單高效,無需訓練;缺點是無法處理詞彙多樣性和語義差異。DPR 通過學習編碼表示克服了這些局限,但需要訓練資料和更多計算資源。在實踐中兩者常結合使用,形成混合檢索。

  • DPR 與 ColBERT:DPR 使用全局向量表示,一個查詢對應一個向量。ColBERT 使用詞級別的向量,允許更細粒度的匹配。DPR 計算效率更高,ColBERT 可能提供更精細的匹配信號但計算成本更大。

  • DPR 與傳統 embedding 方法:傳統方法如 Word2Vec 或 TF-IDF 使用無監督或半監督訓練。DPR 使用有監督訓練,利用真實的問答對學習任務特定的編碼。因此 DPR 通常在目標任務上性能更優,但泛化能力可能較弱。

  • DPR 與多向量檢索:多向量方法為每個文段生成多個向量,捕捉不同的語義方面。DPR 使用單個全局向量,簡潔高效。多向量方法可能提供更豐富的匹配信息,但增加了複雜度。

常見問題

為什麼 DPR 需要複雜的負例採樣策略?

負例在對比學習中起著至關重要的作用。簡單的隨機負例難以有效地訓練模型,因為模型很容易將任何不相等的對區分開來。困難負例(hard negatives)是指 BM25 或其他檢索方法排名較高但實際上不是正確答案的文段,這些負例對於訓練區分微妙語義差異特別有效。採用精心設計的負例採樣策略可以顯著提升模型的判別能力,從而在真實檢索場景中取得更好的性能。

DPR 編碼向量的維度如何選擇?

向量維度是效能和效率之間的權衡。較低的維度(如 128 維)計算快速但表達能力有限;較高的維度(如 2048 維)表達能力強但計算和存儲成本高。在實踐中,768 到 1024 維度是常見的選擇,在大多數任務上提供了很好的平衡。具體選擇應該根據知識庫大小、預期延遲、可用的硬體資源以及任務複雜度進行調整。

DPR 可以應用於非英文語言嗎?

可以,但需要針對目標語言進行調整。首先需要目標語言的預訓練語言模型(如多語言 BERT)和目標語言的訓練資料對。許多開放域問答資料集已被翻譯成多種語言,可以直接利用。此外,多語言預訓練模型已經在多語言語料庫上訓練過,對跨語言遷移有一定的幫助。在實踐中,對於低資源語言,可以考慮使用預訓練的多語言模型直接應用,或使用少量資料進行微調。