RAG分塊策略基準測試:固定大小 vs 語意 vs 文件感知
控制變數基準測試,比較五種RAG分塊策略——固定大小、遞迴、語意、文件感知和滑動視窗——涵蓋檢索精度、延遲、token效率和最佳適用場景。
分塊是任何RAG管道中影響力最大的決策。做對了,檢索精度提升15到30個百分點。做錯了,再多的提示工程或模型升級都無法彌補。
然而,大多數團隊選擇分塊策略時依據的是部落格文 章或所選框架的預設設定,而非經驗資料。本文提供了這些資料。我們在標準化的企業文件語料庫上對五種分塊策略進行了基準測試,並測量了真正重要的指標:檢索精度、延遲、token效率和跨文件類型的穩健性。
五種策略
在展示數據之前,先簡要介紹每種方法。
固定大小分塊將文件分割為預定token數量的塊(通常256-512 tokens),可選重疊。這是最簡單的方法,也是大多數RAG框架的預設設定。每個塊的大小相同,與內容結構無關。
遞迴字元分割使用分隔符階層結構——段落分隔、然後句子邊界、然後單詞邊界——在保持目標塊大小的同時在自然斷點處分割文件。LangChain推廣了這種方法,它仍然是生產系統中最常部署的策略。
語意分塊使用嵌入模型偵測文件內的主題邊界。相鄰句子根據其嵌入的餘弦相似度進行分組,當相似度降至閾值以下時開始新的塊。這產生與連貫主題對應的可變大小塊。
文件感知分塊利用文件結構——標題、章節、表格、清單——來定義塊邊界。一個帶標題的章節成為一個塊。表格保持完整而非在列中間分割。這需要一個理解 文件版面而非僅處理原始文字的解析器。
滑動視窗以固定間隔建立重疊塊,每個塊與其相鄰塊共享一定百分比的token(通常20-50%重疊)。這確保沒有資訊落在邊界上,代價是增加索引大小和token使用量。
測試方法
我們從四種企業文件類型建構了基準測試語料庫:
- 合約(50份文件):多方協議,包含巢狀條款、定義術語和交叉引用
- 技術手冊(50份文件):結構化文件,包含標題、程式碼區塊、表格和編號程序
- 財務報告(50份文件):年度報告,包含敘事性章節、資料表、腳註和圖表
- 支援工單(50份文件):非結構化文字,包含短訊息、時間戳記和混合格式
對於每種文件類型,我們建立了100個基準真值問答對,其中答案存在於特定段落中。檢索精度用Recall@5衡量——正確段落出現在前5個檢索塊中的查詢百分比。
嵌入模型: OpenAI text-embedding-3-large(3072維) 向量儲存: Qdrant with HNSW索引 目標塊大小: 512 tokens(適用時) 重疊: 固定大小和滑動視窗策略使用20%
所有策略在相同硬體(32核CPU、64GB RAM)上使用相同的嵌入模型和向量儲存配置進行測試。
基準測試結果
| 策略 | 檢索精度(Recall@5) | 平均延遲(ms) | Token效率 | 索引大小(相對) |
|---|---|---|---|---|
| 固定大小(512 tokens) | 71.3% | 12ms | 1.0x(基線) | 1.0x |
| 遞迴字元 | 78.6% | 14ms | 1.05x | 1.02x |
| 語意 | 83.2% | 38ms | 0.92x | 0.95x |
| 文件感知 | 86.7% | 16ms | 0.88x | 0.91x |
| 滑動視窗(50%重疊) | 76.8% | 13ms | 1.82x | 1.45x |
結果講述了一個清晰的故事。文件感知分塊實現了最高的檢索精度(86.7%),同時也是token效率最高的。語意分塊在精度上接近(83.2%),但由於索引期間基於嵌入的邊界偵測,延遲顯著更高。固定大小分塊儘管是最常見的預設設定,但在檢索精度上排名最後。
按文件類 型的結果
彙總數字掩蓋了不同文件類型之間的重要差異。
| 策略 | 合約 | 技術手冊 | 財務報告 | 支援工單 |
|---|---|---|---|---|
| 固定大小 | 64.0% | 73.0% | 68.0% | 80.0% |
| 遞迴字元 | 72.0% | 81.0% | 76.0% | 85.0% |
| 語意 | 80.0% | 84.0% | 82.0% | 87.0% |
| 文件感知 | 89.0% | 91.0% | 88.0% | 78.0% |
| 滑動視窗 | 70.0% | 79.0% | 74.0% | 84.0% |
文件感知分塊在結構化文件(合約、手冊、報告)上佔主導地位,這些文件的標題和章節邊界承載語意含義。然而,它在支援工單上表現不如其他方法——這類非結構化、短文字沒有可靠的文件結構可以利用。對於非結構化內容,語意分塊是最強的選擇。
這是關鍵洞察:最佳分塊策略取決於您的文件組合。主要處理結構化企業文件(合約、報告、手冊)的團隊應預設使用文件感知分塊。處理非結構化或混合格式內容的團隊更受益於語意分塊。
延遲分解
上表中的延遲衡量的是查詢時檢索延遲,而非索引時間。索引延遲差異更為顯著:
| 策略 | 索引時間(200份文件) | 索引時間(1萬份文件) |
|---|---|---|
| 固定大小 | 4分鐘 | 3.2小時 |
| 遞迴字元 | 5分鐘 | 3.8小時 |
| 語意 | 22分鐘 | 18.4小時 |
| 文件感知 | 8分鐘 | 6.1小時 |
| 滑動視窗 | 6分鐘 | 4.8小時 |
語意分塊的索引時間是其他方案的4-5倍,因為它必須對每個句子進行嵌入以偵測主題邊界。對於頻繁重新索引或處理大量文件的管道,這一成本會不斷累積。文件感知分塊需要有能力的文件解析器,但避免了索引期間的嵌入開銷。