RAG分塊優(yōu)化之語義分塊方法CrossFormer模型技術(shù)思路 原創(chuàng)
筆者在前期文章中總結(jié)了RAG的分塊《??RAG常見13種分塊策略大總結(jié)(一覽表)??》,本文介紹一個(gè)語義分段的工作,該工作解決的問題是文本語義分割,即將文檔分割成多個(gè)具有連續(xù)語義的段落。傳統(tǒng)方法通常依賴于預(yù)處理文檔以分段來解決輸入長(zhǎng)度限制問題,但這會(huì)導(dǎo)致段間關(guān)鍵語義信息的丟失。RAG系統(tǒng)中的文本分塊方法主要分為基于規(guī)則和基于LLM的方法。
插入一個(gè)思路,其實(shí),語義分段的方式筆者在很早實(shí)踐過一個(gè)思路,不管是RAG分塊還是基于規(guī)則分塊,都會(huì)或多或少的都是段落信息,如何通過語義的方式分割段落?筆者之前的思路最初的想法來源于序列標(biāo)注模型,那么是否能應(yīng)用序列標(biāo)注的方法,來預(yù)測(cè)文本行之間的跳轉(zhuǎn)概率?答案是肯定的,以pdf為例,具體實(shí)施步驟如下: 先放上筆者之前的老圖:
- 從pdf讀取程序或ocr引擎中得到文本行及其坐標(biāo);
- 使用神經(jīng)網(wǎng)絡(luò)對(duì)第i行的文本進(jìn)行編碼,得到文本嵌入向量text_emb(i);
- 提取對(duì)應(yīng)行的圖像,得到圖像嵌入向量img_emb(i);
- 提取字號(hào)、文字長(zhǎng)度特征,并進(jìn)行歸一化得到特征向量;
- 聚合步驟2、3、4得到的向量,得到行嵌入line_emb(i);
- 使用神經(jīng)網(wǎng)絡(luò)對(duì)行向量序列[line_emb(i)]進(jìn)行序列標(biāo)注。
整體方案流程圖如下:
接下來,本文介紹的方法有異曲同工之處,也是采用序列標(biāo)注的方式進(jìn)行,供參考。
方法-CrossFormer
任務(wù)定義
CrossFormer 將文本語義分割任務(wù)定義為句子級(jí)別的序列標(biāo)注問題。給定一個(gè)文檔 ,包含 個(gè)句子,每個(gè)句子 被分配一個(gè)二分類標(biāo)簽 。標(biāo)簽 表示由語義連貫性統(tǒng)一的一個(gè)段落的終端邊界,而 表示在同一主題段落內(nèi)的連續(xù)性。目標(biāo)是訓(xùn)練一個(gè)函數(shù) ,能夠根據(jù)上下文預(yù)測(cè)每個(gè)句子的標(biāo)簽 。
為了實(shí)現(xiàn)這一點(diǎn),模型在每個(gè)句子 的末尾添加一個(gè)特殊的標(biāo)記 [SENT],并評(píng)估這個(gè)標(biāo)記是否標(biāo)志著一個(gè)段落邊界。通過這種方式,文檔被分割成一組不相交的語義段落。
文檔預(yù)處理
由于文本語義分割任務(wù)通常涉及長(zhǎng)文檔,需要采用適當(dāng)?shù)慕7椒▉碛行幚磉@些文檔。論文中采用了截?cái)嗪头侄蔚姆椒?。步驟如下:
- 分段:根據(jù)任務(wù)指定的分隔符(如換行符或句號(hào))對(duì)文檔進(jìn)行分段。
- 截?cái)?/strong>:將每個(gè)句子截?cái)嗟阶畲箝L(zhǎng)度 。
- 拼接:將截?cái)嗪蟮木渥影错樞蚱唇樱纬啥鄠€(gè)文檔段,每個(gè)段的長(zhǎng)度不超過 。
- 批處理:將這些文檔段組裝成一個(gè)批次,并輸入模型進(jìn)行訓(xùn)練或推理。
跨段融合模塊 (CSFM)
CSFM 是 CrossFormer 的核心組件,用于增強(qiáng)文檔段之間的語義連貫性。原理如下:
- 全局語義表示:通過選擇預(yù)訓(xùn)練的特殊標(biāo)記 [CLS] 和 [SEP],提取每個(gè)段落的語義表示 。然后,通過最大池化從這些表示中獲取最大的語義成分,得到全局語義信息 。
- 拼接和線性變換:將全局語義嵌入 與每個(gè)分隔符嵌入 進(jìn)行拼接,并通過兩個(gè)線性層進(jìn)行處理,得到 ,即結(jié)合了全局語義信息的分隔符表示。
- 分類:將 輸入線性層并應(yīng)用 Softmax 函數(shù),得到分類結(jié)果,從而確定段落邊界。
訓(xùn)練模型使用交叉熵?fù)p失函數(shù)即可。
通過這種方式,CSFM 能夠有效地捕捉文檔段之間的語義依賴關(guān)系,提高分割性能。
CrossFormer 作為 RAG 文本塊分割器
CrossFormer 可以作為RAG系統(tǒng)中的文本塊分割器,生成更具語義連貫性的文本塊。流程如下:
流程圖
- 分割長(zhǎng)文檔:首先使用 CrossFormer 對(duì)輸入文檔進(jìn)行分割,生成一系列文本塊。
- 長(zhǎng)度評(píng)估:評(píng)估每個(gè)文本塊的長(zhǎng)度。如果長(zhǎng)度超過預(yù)設(shè)閾值,則將其輸入分割隊(duì)列進(jìn)行進(jìn)一步處理,直到確定不需要額外分割或文本塊長(zhǎng)度低于指定閾值。
- 檢索和生成:使用分割后的文本塊進(jìn)行檢索和生成。通過檢索器和問題提示進(jìn)行相關(guān)性檢索,生成上下文,并將其輸入到LLM中以獲得最終答案。
局限性
- CrossFormer不能精確控制文本塊長(zhǎng)度的上限。因此,可能需要結(jié)合基于規(guī)則的方法來輸出合適的長(zhǎng)度。
- 作為線性文本語義分割模型,CrossFormer不能輸出部分重疊的文本塊,這在RAG系統(tǒng)的某些場(chǎng)景中是必需的。
實(shí)驗(yàn)效果
文本語義分割的結(jié)果
在RAG基準(zhǔn)測(cè)試上的結(jié)果
參考文獻(xiàn):CrossFormer: Cross-Segment Semantic Fusion for Document Segmentation,https://arxiv.org/pdf/2503.23671v1
公眾號(hào)大模型自然語言處理 作者:余俊暉
