假設性文檔嵌入 HyDE:大模型 + 對比學習,從關鍵詞相似度搜索到語義搜索
- 提出背景
- 流程圖
- 解法拆解
- 類比
- 1. 單一文檔嵌入空間的搜索
- 2. 指令跟隨型語言模型(InstructLM)的引入
- 3. 生成文檔的嵌入編碼
?
提出背景
論文:https://arxiv.org/pdf/2212.10496
代碼:https://github.com/texttron/hyde
HyDE 特別適合,當需要捕獲廣泛的語義內容并減少對關鍵詞直接依賴時。
比如醫學一個概念有很多術語,比如用戶搜索感冒,數據庫是風熱流感,這倆的相似度很低,相似度匹配解決不了,只能語義匹配。
相似度搜索工作原理:
- 相似度搜索依賴于直接比較查詢詞與數據庫中文檔的關鍵詞的匹配度。
- 使用如TF-IDF(詞頻-逆文檔頻率)或余弦相似度等算法來評估查詢與每個文檔的相似度。
- 最終的輸出是根據相似度分數排序的文檔列表,分數最高的文檔最相關。
應用場景:
- 醫生輸入查詢:“膝關節炎治療方法”。
- 檢索系統在醫學文檔數據庫中查找包含“膝關節炎”和“治療方法”這些關鍵詞的文檔。
- 返回的結果直接反映了關鍵詞的出現頻率和文檔中的分布情況。
HyDE工作原理:
- HyDE首先通過一個生成性語言模型根據輸入的查詢“膝關節炎治療方法”生成一個內容豐富的、假設性的答案或文檔,這個文檔詳細描述了可能的治療方法,如藥物治療、物理治療、手術選項等,即使這樣的文檔在實際數據庫中并不存在。
- 然后,這個生成的假設文檔被轉換成嵌入向量,使用對比編碼器進行編碼。
- 系統使用這個向量與數據庫中文檔的向量進行相似度比較,尋找與假設文檔內容相似的實際文檔。
應用場景:
- 通過假設性文檔生成和后續的向量比較,HyDE能夠捕捉查詢的深層意圖和復雜內容,不僅限于關鍵詞匹配。
- 這使得即使醫生的查詢用詞非常專業或非常通俗,系統也能理解并返回最相關的、專業的醫療建議和研究成果。
相似度搜索比作使用地圖找到特定地址,而HyDE則像是先繪制一個詳盡的旅行指南,然后再在地圖上尋找與之最匹配的路徑。
相似度搜索直接依賴于現有的、明確的標記和路徑,而HyDE通過創造性地解釋和拓展查詢內容,提供更深層次的匹配和理解。
通過這種方式,HyDE不僅提高了檢索的相關性和準確性,還能處理更復雜和多樣化的查詢,特別適用于需要高度解釋性和語義理解的領域,如醫療、法律和科研文獻檢索。
流程圖
這張圖是對Hypothetical Document Embeddings (HyDE) 模型的說明。
這個模型通過以下步驟來處理和檢索信息:
-
輸入指令和查詢:HyDE接收一個查詢指令,例如“寫一個段落來回答這個問題”。
這個查詢可以涵蓋各種主題,如圖中示例所示,包括“智齒拔除需要多長時間”,“COVID-19大流行如何影響心理健康?”,以及“??? ?? ?? ??????”(人類何時開始使用血液?)。
-
生成文檔:根據查詢指令,一個基于GPT的語言模型生成一個假設的文檔。
這個文檔不是真實的,但它旨在模擬相關文檔的內容。
例如,對于智齒拔除的查詢,生成的文檔可能會說“通常需要30分鐘到兩小時來拔除智齒”。
-
文檔編碼與檢索:生成的文檔被送入一個對比學習的編碼器(如圖中的Contriever),該編碼器將文檔轉換成嵌入向量。
然后,這個向量被用來在語料庫中查找最相似的真實文檔。
-
返回結果:模型根據生成的文檔與真實文檔之間的語義相似性返回查詢結果。
例如,關于智齒拔除的查詢可能返回一些解釋智齒拔除過程的真實文檔。
這個模型的特點是它不直接計算查詢與文檔之間的相似度,而是通過生成文檔和編碼這兩個步驟間接地處理查詢,使得系統能夠以零樣本的方式工作,即不依賴于具體的相關性標簽進行訓練。
這使得HyDE模型能夠適應多種語言和任務,即使在沒有明確訓練數據的情況下也能進行有效的文檔檢索。
解法拆解
目的:解決零樣本密集檢索的問題,這是因為在沒有相關性判斷或評分的情況下,傳統的密集檢索模型難以學習查詢和文檔的嵌入表示。
解法:HyDE模型設計
-
子解法1:單一文檔嵌入空間的搜索
- 特征:只需學習文檔之間的相似性,無需處理查詢的嵌入。
- 原因:這通過使用無監督的對比學習來實現,可以簡化學習過程,因為它不依賴于外部的相關性標簽。
?
例如,通過Izacard等人的研究(2021),已經證明無監督對比學習在沒有明確監督的情況下有效地學習文檔特征。 -
子解法2:指令跟隨型語言模型(InstructLM)的引入
-
特征:通過生成“假設文檔”來間接捕獲查詢的相關性。
-
原因:InstructLM能根據給定的指令生成內容,這種方法將查詢相關性的建模負擔從傳統的表示學習轉移到了更容易泛化的自然語言生成模型上。
?
這使得模型即使在缺乏明確相關性數據的情況下也能有效工作。
例如,如果指令是“寫一個回答問題的段落”,InstructLM生成的文檔雖然不是真實的,但能夠反映出與查詢相關的內容模式。
-
-
子解法3:生成文檔的嵌入編碼
-
特征:通過文檔編碼器將生成的“假設文檔”轉化為嵌入向量,再進行相似性搜索。
-
原因:使用文檔編碼器f作為損失壓縮器,可以過濾掉生成文檔中的冗余細節,只保留與查詢相關的核心內容,從而實現高效的文檔檢索。
?
這種方法利用了文檔之間的相似性嵌入,進一步將假設向量與實際語料庫中的真實文檔對齊。
-
邏輯鏈:這些子解法形成一個線性邏輯鏈,每個步驟都是為了解決零樣本密集檢索中遇到的具體問題。
首先通過無監督學習建立文檔嵌入,然后利用指令跟隨模型生成與查詢相關的假設文檔,最后通過文檔編碼器壓縮和過濾信息,執行有效的檢索。
這個過程通過結合無監督學習和自然語言生成技術,創新性地解決了無法直接從標注數據學習的難題。
?
類比
想象一下你正在組裝一套復雜的家具,但你沒有明確的說明書,只有一些基本的工具和一些不標記的零件。
這就是傳統密集檢索系統在沒有相關性標簽時面臨的挑戰:它們需要準確地匹配查詢和文檔,但缺乏直接指導他們如何完成任務的明確指示。
HyDE模型的設計就像是給你一個能夠生成使用說明的智能工具,同時也提供了檢測哪些工具和零件最適合當前步驟的能力。
1. 單一文檔嵌入空間的搜索
類比:這就像使用一個高級的金屬探測器在沙灘上尋找金屬物體。
探測器不需要知道每個物體具體是什么,只需要識別出哪些地方有金屬物體。
在HyDE模型中,這個過程相當于用對比學習探測文檔庫中的文檔,識別它們之間的相似性,而不是直接尋找與特定查詢完全匹配的文檔。
2. 指令跟隨型語言模型(InstructLM)的引入
類比:想象你有一個能夠根據你描述的需要自動生成建議方案的智能助手。
比如你說:“我需要一個可以放雜志的小桌子。”
即使你沒有直接說明要用木頭制作,智能助手也能生成一個包括材料和設計的建議方案。
在HyDE中,InstructLM正是這樣一個智能助手,它能根據查詢生成一個假設性的“方案”(即文檔),捕捉查詢的核心需求。
3. 生成文檔的嵌入編碼
類比:這就像把一份詳細的設計圖紙轉換成一個更簡潔的部件清單。
在建造時,你不需要再次查看復雜的圖紙,只需根據這個清單挑選正確的材料和工具即可。
HyDE模型中的編碼器就是這樣一個工具,它將生成的文檔轉換為核心特征的集合(即向量),使得檢索系統能夠快速有效地找到與這些特征匹配的真實文檔。
通過這種方式,HyDE模型有效地解決了傳統密集檢索在無標注數據情況下的局限,通過創新的方法優化了信息檢索過程,使其更加智能和適應性強。
這種模型不僅適用于學術和科研領域,也可以廣泛應用于醫療、法律、商業等信息密集型行業,提高檢索的準確性和效率。