RAG分塊優化之語義分塊方法CrossFormer模型技術思路
筆者在前期文章中總結了RAG的分塊《RAG常見13種分塊策略大總結(一覽表)》,本文介紹一個語義分段的工作,該工作解決的問題是文本語義分割,即將文檔分割成多個具有連續語義的段落。傳統方法通常依賴于預處理文檔以分段來解決輸入長度限制問題,但這會導致段間關鍵語義信息的丟失。RAG系統中的文本分塊方法主要分為基于規則和基于LLM的方法。
插入一個思路,其實,語義分段的方式筆者在很早實踐過一個思路,不管是RAG分塊還是基于規則分塊,都會或多或少的都是段落信息,如何通過語義的方式分割段落?筆者之前的思路最初的想法來源于序列標注模型,那么是否能應用序列標注的方法,來預測文本行之間的跳轉概率?答案是肯定的,以pdf為例,具體實施步驟如下: 先放上筆者之前的老圖:
標注方式
- 從pdf讀取程序或ocr引擎中得到文本行及其坐標;
- 使用神經網絡對第i行的文本進行編碼,得到文本嵌入向量text_emb(i);
- 提取對應行的圖像,得到圖像嵌入向量img_emb(i);
- 提取字號、文字長度特征,并進行歸一化得到特征向量;
- 聚合步驟2、3、4得到的向量,得到行嵌入line_emb(i);
- 使用神經網絡對行向量序列[line_emb(i)]進行序列標注。
整體方案流程圖如下:
圖片
接下來,本文介紹的方法有異曲同工之處,也是采用序列標注的方式進行,供參考。
方法-CrossFormer
圖片
任務定義
文檔預處理
圖片
由于文本語義分割任務通常涉及長文檔,需要采用適當的建模方法來有效處理這些文檔。論文中采用了截斷和分段的方法。步驟如下:
跨段融合模塊 (CSFM)
CSFM 是 CrossFormer 的核心組件,用于增強文檔段之間的語義連貫性。原理如下:
訓練模型使用交叉熵損失函數即可。
通過這種方式,CSFM 能夠有效地捕捉文檔段之間的語義依賴關系,提高分割性能。
CrossFormer 作為 RAG 文本塊分割器
圖片
CrossFormer 可以作為RAG系統中的文本塊分割器,生成更具語義連貫性的文本塊。流程如下:
流程圖
- 分割長文檔:首先使用 CrossFormer 對輸入文檔進行分割,生成一系列文本塊。
- 長度評估:評估每個文本塊的長度。如果長度超過預設閾值,則將其輸入分割隊列進行進一步處理,直到確定不需要額外分割或文本塊長度低于指定閾值。
- 檢索和生成:使用分割后的文本塊進行檢索和生成。通過檢索器和問題提示進行相關性檢索,生成上下文,并將其輸入到LLM中以獲得最終答案。
局限性
- CrossFormer不能精確控制文本塊長度的上限。因此,可能需要結合基于規則的方法來輸出合適的長度。
- 作為線性文本語義分割模型,CrossFormer不能輸出部分重疊的文本塊,這在RAG系統的某些場景中是必需的。
實驗效果
文本語義分割的結果
在RAG基準測試上的結果
圖片
參考文獻:CrossFormer: Cross-Segment Semantic Fusion for Document Segmentation,https://arxiv.org/pdf/2503.23671v1