RAG分塊優(yōu)化之語義分塊方法CrossFormer模型技術(shù)思路
筆者在前期文章中總結(jié)了RAG的分塊《RAG常見13種分塊策略大總結(jié)(一覽表)》,本文介紹一個(gè)語義分段的工作,該工作解決的問題是文本語義分割,即將文檔分割成多個(gè)具有連續(xù)語義的段落。傳統(tǒng)方法通常依賴于預(yù)處理文檔以分段來解決輸入長度限制問題,但這會(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í)施步驟如下: 先放上筆者之前的老圖:
標(biāo)注方式
- 從pdf讀取程序或ocr引擎中得到文本行及其坐標(biāo);
- 使用神經(jīng)網(wǎng)絡(luò)對(duì)第i行的文本進(jìn)行編碼,得到文本嵌入向量text_emb(i);
- 提取對(duì)應(yīng)行的圖像,得到圖像嵌入向量img_emb(i);
- 提取字號(hào)、文字長度特征,并進(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ù)定義
文檔預(yù)處理
圖片
由于文本語義分割任務(wù)通常涉及長文檔,需要采用適當(dāng)?shù)慕7椒▉碛行幚磉@些文檔。論文中采用了截?cái)嗪头侄蔚姆椒ā2襟E如下:
跨段融合模塊 (CSFM)
CSFM 是 CrossFormer 的核心組件,用于增強(qiáng)文檔段之間的語義連貫性。原理如下:
訓(xùn)練模型使用交叉熵?fù)p失函數(shù)即可。
通過這種方式,CSFM 能夠有效地捕捉文檔段之間的語義依賴關(guān)系,提高分割性能。
CrossFormer 作為 RAG 文本塊分割器
圖片
CrossFormer 可以作為RAG系統(tǒng)中的文本塊分割器,生成更具語義連貫性的文本塊。流程如下:
流程圖
- 分割長文檔:首先使用 CrossFormer 對(duì)輸入文檔進(jìn)行分割,生成一系列文本塊。
- 長度評(píng)估:評(píng)估每個(gè)文本塊的長度。如果長度超過預(yù)設(shè)閾值,則將其輸入分割隊(duì)列進(jìn)行進(jìn)一步處理,直到確定不需要額外分割或文本塊長度低于指定閾值。
- 檢索和生成:使用分割后的文本塊進(jìn)行檢索和生成。通過檢索器和問題提示進(jìn)行相關(guān)性檢索,生成上下文,并將其輸入到LLM中以獲得最終答案。
局限性
- CrossFormer不能精確控制文本塊長度的上限。因此,可能需要結(jié)合基于規(guī)則的方法來輸出合適的長度。
- 作為線性文本語義分割模型,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