偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

全新語義分塊算法 Late Chunking:讓文本檢索更精準的秘密武器?

人工智能
在RAG全鏈路中,高質量的文本分塊技術是RAG檢索效果的關鍵一環(huán)。前面介紹了基于Sentence-Transformer的語義分塊方法,今天來看一種名為Late Chunking的新型分塊方法,不同于傳統的 “先分割再嵌入” 模式,而是通過 “先嵌入再分割” 的創(chuàng)新思路,讓文本塊的語義表示更加精準。

在RAG全鏈路中,高質量的文本分塊技術是RAG檢索效果的關鍵一環(huán)。前面介紹了基于Sentence-Transformer的語義分塊方法,今天來看一種名為Late Chunking的新型分塊方法,不同于傳統的 “先分割再嵌入” 模式,而是通過 “先嵌入再分割” 的創(chuàng)新思路,讓文本塊的語義表示更加精準。下面,將從研究動機、算法詳解、實驗結果和總結四個方面,詳細了解下這個方法。

論文地址:https://arxiv.org/pdf/2409.04701

項目地址:https://github.com/jina-ai/late-chunking

一、研究動機:傳統分塊方法的痛點與突破方向

在檢索增強生成任務中,將文本文檔分割成較小的塊(chunks)是常見操作,目的是為了更好地進行語義表示和檢索。然而,傳統的 “naive chunking” 方法(固定大小分塊、按符號分塊、先分割文本再進行嵌入等)存在一個致命缺陷 —— 會導致文本塊丟失上下文信息,進而嚴重影響檢索效果。

舉個簡單的例子,當文檔中出現 “柏林是德國的首都,它有著悠久的歷史” 這樣的句子時,傳統分塊可能會將 “柏林是德國的首都” 和 “它有著悠久的歷史” 分割成兩個塊。由于后一個塊中的 “它” 失去了前文 “柏林” 的上下文支撐,在檢索 “柏林的歷史” 時,就很難被準確匹配到。這就是因為相關文本塊的信息依賴于其他文本塊時,傳統的嵌入方法無法很好地捕捉這種長距離的語義依賴關系,導致檢索結果不夠準確。

圖 1 展示了一篇被分割成句子塊的維基百科文章 ??梢钥吹剑?“its” 和 “the city” 這樣的短語指代 “Berlin”,而 “Berlin” 僅在第一句中提到。

再看研究現狀,大多數現代文本嵌入模型基于 Transformer 架構,使用均值池化等方法將文本轉換為密集向量表示。但這些模型在處理長文本時存在上下文長度限制,通常需要對文本進行分割。常見的文本分割方法包括固定長度分割、按句子或段落分割等,一些更復雜的方法如語義分割會根據句子嵌入的相似性來確定最優(yōu)的分割位置,但這些方法都存在丟失上下文信息的問題。

雖然有一些研究提出增強文本塊上下文的方法,如使用重疊分割或借助大型語言模型(LLM)來為文本塊添加相關上下文信息,但這些方法要么計算成本較高,要么需要額外的模型訓練,實用性受限。

正是在這樣的背景下,Late Chunking 方法應運而生,它作為一種新穎的文本塊嵌入方法,先對整個長文本進行嵌入,再在 Transformer 模型之后、均值池化之前進行文本分割,從而讓每個文本塊的嵌入能夠包含整個文檔的上下文信息,這便是其核心的研究動機和創(chuàng)新點。

先看結果:表 1 顯示,使用樸素分塊時,即使上下文中的兩個句子都指的是柏林市,不包含 “Berlin” 一詞的文本的相似性得分也很低。使用Late Chunking時,可以看到相似性得分要高得多。后期分塊策略將 “Berlin” 編碼到 “Its” 和 “the city” 的嵌入中,因為它在分塊之前會在上下文中看到它們。

圖片

二、Late Chunking 的核心邏輯與實現步驟

圖片

核心思想

Late Chunking 方法的核心邏輯在于利用嵌入模型的長上下文輸入窗口,解決傳統分塊方法的上下文丟失問題。具體來說,這種方法首先對整個長文本進行處理,生成包含整個文檔上下文信息的標記嵌入(token embeddings),然后再進行分塊。這樣,每個文本塊的嵌入都能包含整個文檔的上下文信息,從而提高嵌入的質量和檢索的準確性。

具體步驟

  1. 分塊:使用分塊策略 S 將文本 T 分割成多個塊圖片。這些塊可以基于固定大小、句子邊界或語義邊界等策略生成。
  2. 標記化:對整個文本 T 進行標記化,生成標記序列圖片和每個標記的字符長度圖片。標記化是將文本轉換為模型可以處理的標記(tokens)的過程。
  3. Transformer 處理:將標記序列圖片輸入到嵌入模型的 Transformer 部分,生成每個標記的向量表示圖片。這些向量表示包含了整個文本的信息。
  4. 確定塊邊界:遍歷每個標記,計算當前塊的字符長度 ochunk。當 ochunk 達到當前塊的字符長度圖片時,記錄當前塊的起始和結束標記索引 (cuestart, cueend) 。更新 cuestart 和 ochunk,繼續(xù)處理下一個塊。
  5. 池化:對每個塊的標記嵌入進行平均池化,生成每個塊的嵌入表示圖片。平均池化是將塊內所有標記嵌入的平均值作為塊的嵌入表示。

圖片

長文本后期分塊(Long Late Chunking)

盡管許多嵌入模型支持較長的上下文長度(如 8192 個標記),但對于非常大的文檔,這些模型可能仍然無法一次性處理整個文檔。此外,隨著標記數量的增加,編碼所需的內存會呈指數級增長,導致一次性編碼所有標記變得不可行。

為了解決這一問題,提出了一種長文本后期分塊方法(Long Late Chunking)。該方法將文本分割為包含多個小塊的“宏塊”(macro chunk),每個宏塊包含圖片個標記。每個宏塊通過后期分塊方法單獨處理,以避免一次性處理整個文檔帶來的內存問題。為了避免上下文缺失,宏塊之間會增加一定數量的標記 ω 作為重疊部分,這些重疊的標記在后期分塊過程中作為補充上下文信息。

圖片

訓練方法

雖然 Late Chunking 方法本身無需額外訓練即可工作,但使用平均池化訓練的模型可能不太適合對包含周圍標記額外信息的塊標記嵌入進行編碼。因此,提出一種改進的訓練方法,使用 “跨度池化”(span pooling)技術,訓練模型將注釋文本跨度中的相關信息專門編碼到其標記嵌入中。

平均池化是一種常用的文本嵌入方法,它通過計算一組標記嵌入的平均值來生成文本的嵌入表示。這種方法簡單且有效,尤其適用于處理固定長度的文本塊。然而,平均池化有一個關鍵的局限性:它假設所有標記對最終的文本表示都有相同的貢獻,而忽略了標記之間的語義關系和上下文信息。

在 Late Chunking 方法中,文本被分割成多個塊,每個塊的嵌入需要包含整個文檔的上下文信息。這意味著每個塊的嵌入不僅要反映塊內的內容,還要包含來自其他塊的相關信息。例如,一個塊可能包含對另一個塊中提到的實體的引用,這些引用需要在嵌入中得到體現。

訓練數據由查詢 q、相關文檔 d 和文檔中相關跨度注釋 ?start,end? 組成的元組(q,d,?start,end?)??缍茸⑨屩付宋臋n中包含答案的相關部分。

損失函數主要包括:

  1. InfoNCE 損失:使用 InfoNCE 損失函數對文本對進行訓練,確保查詢向量和相關文檔向量之間的相似性。
    圖片
    其中,查詢向量圖片通過將嵌入模型按常規(guī)方式應用于查詢文本圖片獲得。對于文檔嵌入圖片,通過將模型應用于文檔圖片獲得標記嵌入集合,并僅對跨度 
  2. 雙向損失:使用雙向 InfoNCE 損失函數,確保查詢和文檔之間的雙向相似性。
    圖片
    其中圖片通過交換批次 B 中的成對順序獲得。

三、Late Chunking 的性能驗證

評估方法

使用 BeIR benchmark 中的小型檢索任務進行評估。評估的模型包括 jina-embeddings-v2-small、jina-embeddings-v3、nomic-embed-text-v1。使用的分塊策略包括固定大小邊界(每個塊包含固定數量的標記,如 256 個標記)、句子邊界(每個塊包含固定數量的句子,如 5 個句子)、語義句子邊界(根據句子嵌入的相似性動態(tài)確定塊的邊界)。

評估指標使用 nDCG@10(Normalized Discounted Cumulative Gain at 10)作為主要評估指標。

實驗設計為:將文檔分割為較小的塊,編碼并存儲到嵌入索引中。對于每個查詢嵌入,通過其歸一化向量表示的 k - 近鄰(kNN)確定對應的塊。將塊的 kNN 排名轉換為文檔的 kNN 排名(對于在排名中多次出現的文檔,僅保留首次出現)。將生成的排名與真實 QRels 文件對應的排名進行比較,并計算 nDCG@10 等檢索指標。

主要結果

Late Chunking 方法在所有模型和分塊策略下均優(yōu)于 Naive Chunking 方法。平均來看,Late Chunking 方法相比 Naive Chunking 方法在 nDCG@10 上有顯著提升。

圖片

分塊大小影響

  • Late Chunking 方法在較小分塊大小下表現更好,尤其是在 NFCorpus 數據集上。
  • 對于某些閱讀理解任務(如 Needle-8192 和 Passkey-8192),Naive Chunking 方法在較大分塊大小下表現更好。這是因為這些任務需要在相對無關的上下文中找到特定的句子或短語,而 Late Chunking 方法在這種情況下可能引入了過多的無關上下文信息。

圖片

長文本后期分塊評估

  • Long Late Chunking 方法在所有分塊大小下均優(yōu)于 Naive Chunking 方法。
  • 與未截斷的實驗相比,nDCG 分數更高,說明 Long Late Chunking 方法能夠有效解決長文檔的上下文丟失問題。

Long Late Chunking 方法在處理非常長的文檔時表現出色,能夠有效解決上下文丟失問題,提高檢索結果的相關性和準確性。

圖片

訓練方法評估

評估提出的跨度池化(span pooling)訓練方法對 Late Chunking 方法性能的影響。

  • 跨度池化方法在大多數數據集上表現優(yōu)于普通平均池化方法。
  • 使用跨度池化方法訓練的模型在檢索任務中表現更好,特別是在需要精確匹配相關跨度的場景中。

圖片

與上下文嵌入的比較

將 Late Chunking 方法與基于大型語言模型(LLM)的上下文嵌入方法進行比較。

方法:使用一個虛構的金融文檔和查詢 “What is ACME Corp’s revenue growth for Q2 2023?” 進行實驗。比較 Late Chunking 方法、Naive Chunking 方法和基于 LLM 的上下文嵌入方法的性能。使用claude-3-haiku-20240307模型從整個文本中選擇相關上下文信息,并將其添加到每個文本塊的開頭。使用jinaai/jina-embeddings-v2-small-en對查詢和增強后的塊進行編碼,計算余弦相似度。

結果顯示:

  • 上下文嵌入方法和 Late Chunking 方法在相關塊上的相似度分數最高。
  • Naive Chunking 方法的相似度分數較低,且低于其他塊的相似度。
  • Late Chunking 方法在不使用額外 LLM 的情況下,能夠達到與上下文嵌入方法相近的性能。

圖片

四、總結

Late Chunking 方法的關鍵在于先對整個長文本進行嵌入處理,生成包含整個文檔上下文信息的標記嵌入,然后再根據預定義的分塊策略進行分塊。這種方法使每個文本塊的嵌入都能包含整個文檔的上下文信息,從而提高嵌入的質量和檢索的準確性。與傳統分塊方法相比,Late Chunking 方法通過在標記嵌入生成之后進行分塊,避免了上下文信息的丟失。

不過,Late Chunking 也并非完美無缺,對于長文本來說,該策略的有效性相對受限,不如 LumberChunker 等基于 LLM 的方法。但總體而言,Late Chunking 為文本檢索領域提供了一種全新的思路和有效的解決方案,尤其在中短文本處理和對上下文依賴性強的檢索任務中,展現出了巨大的潛力。相信隨著技術的不斷發(fā)展,Late Chunking 會得到進一步的優(yōu)化和完善,在更多領域發(fā)揮重要作用。

責任編輯:龐桂玉 來源: 小白學AI算法
相關推薦

2013-10-16 09:28:14

亞馬遜AWSSDN

2013-10-16 09:33:36

亞馬遜AWSSDN

2025-08-01 08:28:46

Kotlin代碼冒號

2014-01-07 10:46:39

2011-08-11 17:05:26

2018-11-28 13:23:19

Kagglefeatexp特征

2024-07-11 08:34:48

2023-05-08 14:54:00

AI任務HuggingGPT

2019-11-27 10:40:34

數據工具CIO

2018-05-07 14:52:27

區(qū)塊鏈扶貧

2022-02-11 10:47:17

CIOIT團隊企業(yè)

2025-08-27 01:00:00

DSPyAI開發(fā)

2009-07-28 10:36:58

云計算Google秘密武器

2019-11-27 10:38:37

數據分析數據準備工具

2025-05-14 00:01:10

RxJS異步編程響應式

2023-02-24 10:26:34

語音AI人工智能

2011-06-02 10:24:11

iTravel蘋果

2015-03-30 16:58:05

秘密武器華為

2023-09-25 15:29:44

Go并發(fā)Goroutines

2024-12-18 16:00:00

C++性能優(yōu)化consteval
點贊
收藏

51CTO技術棧公眾號