HtmlRAG:在 RAG 系統中,HTML 比純文字更適合建模檢索到的知識
المفاهيم الأساسية
HtmlRAG 是一種新的 RAG 方法,它使用 HTML 作為外部知識的格式,透過保留 HTML 文件中的結構和語義資訊來提高 RAG 系統的效能。
الملخص
HtmlRAG:在 RAG 系統中,HTML 比純文字更適合建模檢索到的知識
إعادة الكتابة بالذكاء الاصطناعي
إنشاء خريطة ذهنية
من محتوى المصدر
HtmlRAG: HTML is Better Than Plain Text for Modeling Retrieved Knowledge in RAG Systems
檢索增強生成 (RAG) 已被證明可以提高知識能力並減輕大型語言模型 (LLM) 的幻覺問題。網路是 RAG 系統中使用的主要外部知識來源,許多商業系統(例如 ChatGPT 和 Perplexity)都使用網路搜尋引擎作為其主要檢索系統。通常,此類 RAG 系統會檢索搜尋結果,下載結果的 HTML 原始碼,然後從 HTML 原始碼中提取純文字。純文字文件或區塊被輸入到 LLM 中以增強生成。然而,在這個基於純文字的 RAG 過程中,HTML 中固有的許多結構和語義資訊(例如標題和表格結構)都會丟失。為了減輕這個問題,我們提出了 HtmlRAG,它使用 HTML 而不是純文字作為 RAG 中檢索到的知識的格式。我們相信 HTML 在建模外部文件中的知識方面優於純文字,並且大多數 LLM 都具有理解 HTML 的強大能力。然而,利用 HTML 也帶來了新的挑戰。HTML 包含額外的內容,例如標籤、JavaScript 和 CSS 規範,這些內容會給 RAG 系統帶來額外的輸入標記和雜訊。為了解決這個問題,我們提出了 HTML 清理、壓縮和修剪策略,以縮短 HTML 的長度,同時最大程度地減少資訊的丟失。具體來說,我們設計了一種基於塊樹的兩步修剪方法,該方法修剪無用的 HTML 塊並僅保留 HTML 的相關部分。在六個問答數據集上的實驗證實了在 RAG 系統中使用 HTML 的優越性。
大型語言模型 (LLM) 已被證明在各種自然語言處理任務中具有強大的能力。然而,與此同時,LLM 也表現出一些缺陷,例如忘記長尾知識、提供過時的知識和產生幻覺。檢索增強生成 (RAG) 利用檢索系統來獲取外部知識並增強 LLM。事實證明,它可以有效地減輕 LLM 的幻覺。許多 RAG 系統,例如 Perlexity 和 SearchGPT,都已經被開發出來,它們通常使用網路搜尋引擎作為底層檢索系統。
傳統的 RAG 流程管道通常使用純文字作為檢索到的知識的格式。來自網路的 HTML 文件通常會被轉換為純文字,並在輸入到 LLM 之前與使用者的查詢連接起來。我們發現將 HTML 轉換為純文字會導致結構和語義資訊的丟失。圖 1 說明了一個包含表格形式的網頁在轉換為純文字時會變得混亂。更糟糕的是,表示重要資訊的原始 HTML 標籤(例如“”和“”)在轉換過程中會被丟棄。因此,在本文中,我們傾向於研究一個直觀的想法:我們是否可以將 HTML 作為 RAG 系統中外部知識的格式,以便在更大程度上保留 HTML 文件中的資訊?
將 HTML 作為外部知識的格式具有多項優勢,而不僅僅是保留 HTML 文件中固有的資訊。在預訓練期間,LLM 已經遇到過 HTML 文件,這意味著它們天生就具有理解 HTML 的能力,而無需進一步的微調。最近,專有和開源 LLM 都開始支援越來越長的輸入窗口,這使得輸入更廣泛的 HTML 文件成為可能。此外,Latex、PDF 和 Word 格式的文檔可以轉換為 HTML,並且損失最小,這擴展了 HTML 作為外部知識格式的潛在應用。
然而,將 HTML 用作 LLM 的知識格式也帶來了處理更長輸入序列和雜訊上下文的挑戰。我們的初步實驗表明,來自網路的真實 HTML 文件平均包含超過 80K 個標記,其中超過 90% 的標記是 CSS 樣式、JavaScript、註釋或其他無意義的標記。與當前 LLM 的常見最大上下文窗口(範圍從 32K 到 128K)相比,80K 的單個文檔長度是不可接受的。上述 HTML 文件中的無意義標記也會影響 LLM 的生成質量。為了解決這個問題,在本文中,我們設計了一個 HTML 清理模組,用於刪除 HTML 文件中語義上不相關的內容,同時保持主要內容完整。我們還調整了 HTML 樹結構,而不會丟失語義資訊,例如,合併多層單個嵌套的 HTML 標籤並刪除空標籤。這些過程將 HTML 的長度減少到其原始大小的 6%。
即使在清理之後,HTML 文件對於 LLM 來說仍然相對較長(每個超過 4K)。為了縮短輸入上下文並消除原始檢索到的文檔中包含的雜訊,現有的 RAG 系統使用了不同類型的檢索後結果優化器。這些優化器從文檔中提取與使用者查詢和 LLM 偏好相關的文本塊或關鍵句子,並丟棄其他內容。這些基於純文字的優化器不能直接應用於 HTML,因為簡單地對 HTML 進行分塊而不考慮其結構可能會生成不合理的塊。因此,我們進一步設計了一個 HTML 修剪模組,該模組基於 HTML 的內在樹結構。修剪過程包括以下步驟:(1) 構建塊樹。每個 HTML 文件都可以解析為 DOM 樹。我們不只是在 DOM 樹上修剪 HTML,因為它太細粒度了,這會帶來很大的計算成本。相反,我們建議構建一個相應的塊樹,其中原始的 DOM 樹節點被合併到分層塊中。塊樹的粒度可以通過合併程度來調整。(2) 基於文本嵌入的塊修剪。然後,我們使用現成的嵌入模型來修剪塊樹,因為這是一種基於嵌入相似度來計算塊與使用者查詢的相關性分數的簡單但有效的方法。我們應用了一種貪婪修剪算法,該算法刪除相似性分數較低的塊,並保留相似性分數較高的塊。然而,我們觀察到嵌入模型可能無法很好地處理細粒度的塊,因為為這些小塊學習到的嵌入通常是模糊且不準確的,因此此修剪步驟僅限於粗粒度的塊樹。(3) 生成式細粒度塊修剪。為了進一步修剪塊樹,我們擴展了修剪後的塊樹的葉節點,並構建了一個更細粒度的塊樹。由於生成模型具有更長的上下文窗口,因此它可以對塊樹進行全局建模,而不僅限於一次對一個塊進行建模。因此,我們進一步開發了一個生成模型,用於在細粒度塊上修剪 HTML。生成模型應該為每個塊計算分數,該分數由指示該塊的唯一序列的生成概率給出。該序列由 HTML 標籤的路徑給出,從根標籤開始,一直到塊的標籤和文本(例如,“塊內容...”)。最後,根據塊分數,我們應用類似的貪婪修剪算法來獲得最終修剪的 HTML。
我們在六個數據集上進行了廣泛的實驗,包括模糊問答、自然問答、多跳問答和長格式問答。實驗結果證實了 HTML 作為外部知識格式優於純文字。
我們的貢獻有三方面:(1) 我們建議將 HTML 作為 RAG 系統中知識的格式,這保留了原始 HTML 的資訊;(2) 我們提出了一種簡單但有效的 HTML 清理算法;(3) 我們提出了一種兩階段 HTML 修剪算法。這可以應用於大多數 RAG 系統,並在效率和有效性之間取得了平衡。
note
data_sheet
一個真實的 HTML 文件平均包含超過 80K 個標記。
超過 90% 的 HTML 標記是 CSS 樣式、JavaScript、註釋或其他無意義的標記。
HTML 清理過程將 HTML 的長度減少到其原始大小的 6%。
quotes
"我們相信 HTML 在建模外部文件中的知識方面優於純文字,並且大多數 LLM 都具有理解 HTML 的強大能力。"
"將 HTML 用作 LLM 的知識格式也帶來了處理更長輸入序列和雜訊上下文的挑戰。"
further_questions
如何進一步優化 HtmlRAG 的效能,例如使用更先進的 HTML 修剪算法?
HtmlRAG 是否可以應用於其他類型的結構化數據,例如表格數據或圖數據?
將 HTML 作為外部知識格式的長期影響是什麼?它會如何影響 RAG 系統的發展?
استفسارات أعمق
如何進一步優化 HtmlRAG 的效能,例如使用更先進的 HTML 修剪算法?
可以通過以下幾個方面進一步優化 HtmlRAG 的效能:
1. 更精細化的區塊分割: 現有的區塊分割主要基於詞彙數量,可以考慮結合 HTML 標籤的語義信息進行更精細化的分割,例如將列表項、表格單元格等視為獨立的區塊,以保留更完整的結構化信息。
2. 基於強化學習的修剪算法: 現有的修剪算法主要基於貪婪策略,可以考慮使用強化學習算法,例如深度 Q 網絡(DQN)或策略梯度算法,以學習更優的修剪策略,在保留關鍵信息和縮短文本長度之間取得更好的平衡。
3. 多模態信息融合: HTML 中除了文本信息外,還包含圖片、表格等多模態信息,可以考慮將這些信息融入到修剪算法中,例如根據圖片的標題或表格的結構信息判斷其重要性,以進一步提高修剪的準確性。
4. 上下文感知的修剪: 現有的修剪算法主要基於單個 HTML 文檔進行處理,可以考慮將多個相關的 HTML 文檔作為上下文信息,例如利用網頁之間的超鏈接關係,以更好地理解文檔之間的語義關聯,進而提高修剪的準確性。
5. 動態調整修剪粒度: 可以根據不同的下游任務和 LLM 的上下文窗口大小,動態調整 HTML 修剪的粒度,例如對於需要精確答案的任務,可以採用更細粒度的修剪策略,而對於需要概括性答案的任務,則可以採用更粗粒度的修剪策略。
HtmlRAG 是否可以應用於其他類型的結構化數據,例如表格數據或圖數據?
是的,HtmlRAG 的核心思想是利用結構化數據的內在結構信息來提高 RAG 系統的效能,因此其可以應用於其他類型的結構化數據,例如表格數據或圖數據。
1. 表格數據: 可以將表格數據的行列結構轉換為類似 HTML 的樹狀結構,例如將表格的每一行視為一個區塊,並根據其與查詢的相關性進行修剪。
2. 圖數據: 可以將圖數據的節點和邊轉換為類似 HTML 的樹狀結構,例如將每個節點視為一個區塊,並根據其與查詢的相關性以及在圖中的重要性進行修剪。
需要注意的是,對於不同類型的結構化數據,需要設計相應的結構轉換和修剪算法,以充分利用其結構信息。
將 HTML 作為外部知識格式的長期影響是什麼?它會如何影響 RAG 系統的發展?
將 HTML 作為外部知識格式,將對 RAG 系統的發展產生以下長期影響:
1. 推動 RAG 系統更好地理解和利用 Web 資訊: Web 是最大的信息來源,而 HTML 是 Web 的基石。使用 HTML 作為外部知識格式,可以讓 RAG 系統更直接地訪問和理解 Web 資訊,從而提高其知識的覆蓋面和時效性。
2. 促進多模態 RAG 系統的發展: HTML 本身就支持多種媒體格式,例如圖片、影片和音頻。將 HTML 作為外部知識格式,可以促進多模態 RAG 系統的發展,讓 RAG 系統能夠處理更豐富的信息類型。
3. 推動更精細化的知識表示和推理: HTML 的標籤和結構信息可以被視為一種語義標注,可以幫助 RAG 系統更好地理解文本信息,並進行更精細化的知識表示和推理。
4. 促進 RAG 系統與其他信息系統的整合: HTML 是一種通用的數據交換格式,被廣泛應用於各種信息系統中。將 HTML 作為外部知識格式,可以促進 RAG 系統與其他信息系統的整合,例如知識圖譜、數據庫等。
總之,將 HTML 作為外部知識格式,將推動 RAG 系統朝著更強大、更全面的方向發展,使其能夠更好地理解和利用人類知識,並為各種應用場景提供更智能化的服務。