分塊策略是一種將大型文檔分解為較小、可管理的部分的方法,用于 AI 檢索。糟糕的分塊會導致結果不相關、效率低下并降低業務價值。它決定了獲取相關信息以獲得準確 AI 響應的有效性。有如此多的可用選項(頁面級、部分級或基于 token 的分塊,大小不等),您如何確定哪種方法最適合您的特定用例?
這篇博文分享了我們對不同數據集進行的大量實驗的見解,這些實驗可幫助您優化檢索增強生成 (RAG) 系統的分塊策略。
簡介
分塊是 RAG 工作流中的關鍵預處理步驟。它涉及將文檔拆分成更小、可管理的部分,以便高效地索引、檢索,并在生成響應時用作上下文。如果處理不當,分塊可能會導致不相關或不完整的響應,讓用戶感到沮喪并破壞對系統的信任。它還會迫使檢索器或生成器處理過多或不必要的信息,從而增加計算負擔。
另一方面,智能分塊策略提高了檢索精度和上下文一致性,直接提高了生成答案的質量。對于用戶而言,這意味著交互更快、更準確、更有用。對于企業而言,這意味著更高的用戶滿意度、更低的流失率,以及更高效的資源利用,從而降低運營成本。簡而言之,分塊不僅僅是一個技術細節,而是決定整個 RAG 系統有效性的基本設計選擇。
我們的研究跨多個數據集評估了不同的分塊策略,以根據您的特定內容和用例制定選擇最佳方法的指南。
實驗性設置

經過測試的分塊策略
我們測試了三種主要的 chunking 方法,以了解它們對檢索質量和響應準確性的影響:
- 基于標記的分塊:使用 NVIDIA NeMo Retriever 提取的內容,將文檔拆分成固定大小的標記塊。 測試大小:128、256、512、1,024 和 2,048 個令牌 數據塊之間有 15% 的重疊 (我們測試了 10%、15% 和 20% 的重疊值,并發現 15% 的重疊值在 FinanceBench 上具有 1,024 個令牌塊,表現最佳。雖然不是全網格搜索,但此結果與行業實踐中常見的 10–20% 重疊情況相符。)
- 頁面級分塊:文檔的每一頁都成為一個單獨的分塊。 使用 NeMo Retriever 提取和 NeMo Retriever-parse 實現,確保公平比較不同的分塊策略。
- 章節級分塊:使用 nemoretriever-parse,根據文檔的原生組織 (例如標題、段落和其他格式元素) ,根據結構化文檔布局部分對文檔進行分割。 為進行公平比較,我們使用相同的 nemoretriever-parse 提取模型比較了頁面級和章節級分塊。
數據集
我們在不同的數據集中評估了這些策略:
- DigitalCorpora767:由 Digital Corpora 767 個 PDF 文件組成的公共數據集,包含 991 個人工注釋的問題,涵蓋文本、表格、圖表和信息圖。
- 收入:包含 512 個 PDF (收入報告、咨詢演示文稿) 的內部集合,其中每個包含 3000 多個圖表、表格和信息圖實例,以及 600 多個人工注釋的檢索問題。
- FinanceBench:一個基準數據集,用于評估大語言模型 (LLM) 在回答與上市公司相關的財務問題時的性能,使用 10-K 提交和收益報告等真實的財務文檔。
- KG-RAG:Docugami KG-RAG 數據集是一個文檔和帶注釋的問答對的存儲庫,旨在評估檢索增強生成 (RAG) 系統,具有逼真的長篇商業文檔,以及單個和多個文檔中不同的問題復雜性。
- RAGBattlePacket:德勤稅務咨詢 PDF 報告合集。
評估方法
我們建立了一個全面的評估框架,以系統比較不同數據集的 chunking 策略,并衡量其對 RAG 系統性能的影響。
- 主要指標:端到端 RAG 回答準確性
- 評估流程:每個配置進行多個試驗,并使用多個判斷模型
評估指標
在評估中,我們使用了 RAGAS 評估框架中的 NV 答案準確性指標,該指標用于測量模型的響應與給定問題的參考地面實況之間的一致性。
答案準確性(Answer Accuracy)指標的工作原理是:
- 使用 LLM-as-a-judge 來評估生成的回答的正確性。
- 將模型的輸出與 ground-truth 參考進行比較。
- 評分標準為 0-4,其中: 0:響應不準確或無法解決問題。 2:響應與引用部分對齊。 4:響應與引用完全一致。
為確保魯棒性,每次評估都涉及對不同的判斷模型進行多次判斷,并對分數進行平均值,以生成最終的準確度指標。在實驗中,我們使用以下功能強大的模型作為評委:
- Mixtral 8x22B Instruct (mistralai/mixtral-8x22b-instruct-v0.1)
- Llama 3.1 70B Instruct (meta/llama-3.1-70b-instruct)
使用這些大語言模型擔任評委可提供高質量的評估,而多評委方法 (即“評委委員會”) 有助于最大限度地減少來自任何單個評估器模型的偏差,從而在不同的分塊策略中實現更可靠的性能測量。
攝取框架
在實驗中,我們使用了兩種不同的文檔提取框架,以確保公平比較不同的分塊策略:
- NVIDIA NeMo Retriever:用于為頁面級和基于 token 的分塊策略提取內容。這組微服務專為解析復雜的非結構化 PDF 和其他企業文檔而設計,使我們能夠: 在保留文檔結構的同時提取高質量文本。 從財務報告和技術文檔中截取表格和圖表。 高效處理來自不同數據集的數百份文檔。
- nemoretriever-parse:專門用于部分級分塊的模型,因為它可以智能檢測部分標題和文檔結構。為了公平地比較頁面級和部分級分塊,我們還使用 nemoretriever-parse 提取進行版本的頁面級分塊測試。
這種雙框架方法使我們能夠利用每個工具的優勢,同時確保我們的分塊策略比較反映真正的性能差異,而不是提取偽影。在比較頁面級與部分級分塊時,我們使用相同的 nemoretriever-parse 提取來消除基于提取的任何方差,從而提供更可控的比較。
需要注意的是,雖然我們的 chunking 策略 (page-level, section-level, 和 token-based) 應用于文檔的文本內容,但表格和圖表是作為單獨的實體提取的。這些元素未被分割或分塊,而是作為完整單元保留,以保持其完整性和上下文。這種方法可確保復雜信息在檢索過程中保持不變,允許 RAG 系統在需要時訪問完整的表格和圖表。
RAG 系統實現
在實驗中,我們使用了 NVIDIA RAG Blueprint 中的組件,該組件為企業級 RAG 工作流提供了全面的參考實現。此藍圖提供:
- 模塊化微服務架構,可實現輕松的組件交換和評估。
- 支持 multimodal 數據處理 (包含文本、圖像、圖表和表格的文檔) 。
- 與先進的 NeMo Retriever 微服務集成,用于嵌入、重排序和 LLM 推理
- 廣泛的可配置性,可用于試驗不同的hyperparameters。
NVIDIA RAG Blueprint 特別適合分塊實驗,因為它提供:
- 多種預構建 chunking 策略。
- 用于高效存儲和檢索的 Vector database 集成。
- 用于衡量性能差異的 Robust 評估功能。
如果您要進行 chunking 實驗或構建生產級 RAG 系統,此藍圖可以作為一個很好的起點,在縮短開發時間的同時提供定制所需的靈活性。
為確保對分塊策略進行公平、可靠的評估,我們在 RAG 工作流中對以下組件進行了標準化:
- 嵌入模型:NVIDIA/LLAMA-3.2-NV-embedqa-1b-v2
- 重排序模型:NVIDIA/LLaMA-3.2-NV-RerankQA-1B-V2
- 檢索 top-k:10 (用于生成的檢索上下文數量)
- 生成器模型:NVIDIA/LLaMA-3.1-Nemotron-70B-Instruct
通過在所有實驗中保持這些組件的一致性,我們確保性能差異可歸因于分塊策略,而非 RAG 工作流其他部分的變化。NVIDIA 的這些先進模型為我們的檢索和生成功能奠定了基礎,幫助我們區分不同的分塊策略對整體 RAG 性能的影響。
結果和分析
我們的實驗跨數據集產生了一些有趣的模式。
按分塊策略劃分的整體性能

此圖顯示了每個分塊策略在所有數據集中的平均端到端 RAG 準確率,誤差條表示標準差。值得注意的是,頁面級分塊實現了最高的平均準確率 (0.648) 和最低的標準差 (0.107) ,這表明數據集之間的性能更加一致。與此同時,所有基于 token 的方法都將性能穩定保持在 0.603 和 0.645 之間。

使用相同的nemoretriever-parse提取直接比較頁面級分塊與部分級分塊時,我們發現在測試數據集中,頁面級分塊的平均性能優于部分級分塊。這進一步證實了我們的發現,即頁面級分塊通常是最有效的策略。
特定于數據集的性能

此圖表按數據集和分塊策略分解了 RAG 準確性,揭示了不同內容類型對各種分塊方法的響應方式。某些數據集 (例如 FinanceBench 和 RAGBattlePacket) 在使用中等大小的數據塊 (512-1024 個 token) 時顯示最佳性能,而數據塊較大 (2048 個 token) 時性能下降。其他數據集 (例如 KG-RAG) 在分塊策略方面顯示出更多的可變性,并且數據塊大小與性能之間沒有明確的線性關系。

查看頁面和部分分塊策略之間的數據集特定比較,我們可以看到,在大多數情況下,頁面級分塊的性能優于部分級分塊,只有 FinanceBench 在部分級分塊方面表現出略勝一籌的性能。這表明,雖然文檔結構很重要,但自然頁面邊界通常會提供更連貫、更有效的數據塊進行檢索。
主要觀察結果
- 總的贏家是頁面級分塊:我們的實驗清楚地表明,頁面級分塊在所有數據集中實現了最高的平均準確率 (0.648) 和最低的標準差 (0.107) ,顯示出不同內容類型之間的性能更加一致。與基于token的分塊和部分級分塊相比,頁面級分塊展現出卓越的整體性能。查看特定于數據集的發現,我們可以看到這種模式的明顯證據。一些金融數據集 (例如 KG-RAG) 在使用頁面級分塊 ( 0.520) 時表現最佳,而其他數據集 (例如 FinanceBench) 在使用 1,024-token分塊 ( 0.579) 時表現最佳,但在使用頁面級分塊 ( 0.566) 時仍顯示出強勁的結果。RAGBattlePacket 在使用頁面級分塊 (0.790) 時也表現出了出色的性能,在使用 1,024-token分塊 (0.804) 時非常接近最佳結果。
- 即使在相似的文檔類型中,模式也不一致:即使在同一文檔類別中,最佳分塊策略也存在顯著差異。這一觀察結果在財務文檔中尤為明顯,我們在三個數據集中觀察到三種不同的最佳策略:FinanceBench 在處理 1,024-token 塊時表現最佳 (0.579) ,Earnings 在處理 512-token 塊時表現最佳 (0.681) ,以及 KG-RAG 以頁面級別分塊時表現最佳 (0.520) 。這些變化表明,除了寬泛的內容類別之外,特定的文檔結構、信息密度和查詢的性質也會顯著影響最佳分塊策略。這凸顯了測試多種分塊方法的重要性,即使在處理相似的文檔類型時也是如此。
- 極端數據塊大小顯示收益遞減:非常小 (128 個token) 和非常大 (2048 個token) 的數據塊通常低于中等大小的數據塊。在大多數數據集中,數據塊大小的極端顯示性能較低。對于 KG-RAG,128 個token塊的性能最差 (0.421) ,明顯低于其他策略。同樣,對于 RAGBattlePacket (0.749 vs 0.804) 和 FinanceBench (0.506 vs 0.579) ,2048 個token塊的性能低于 1024 個token塊。這表明,對于大多數文檔類型而言,在中間塊大小范圍內,這是一個“最佳點”。
- 性能曲線并不總是線性的:對于某些數據集,性能并沒有隨著數據塊的大小而呈線性增長或下降。收益呈現非線性模式,其中性能在峰值 512 個token ( 0.681) 時略有下降,為 1024 個token ( 0.663) ,然后進一步下降,為 2048 個token ( 0.651) 。這與 RAGBattlePacket 形成對比,RAGBattlePacket 在下降到 2048 個token (0.749) 之前,從 128 個token (0.749) 增加到 1024 個token (0.804) ,呈現了更線性的改進。這些不同的曲線凸顯了數據塊大小與檢索效率之間的復雜關系。
- 查詢特征會影響最佳數據塊大小:每個數據集中查詢的性質與最有效的數據塊策略相關。DigitalCorpora767 和 Earnings 數據集主要包含尋求特定信息的類因式查詢,在處理中小型數據塊 (256-512 個 token) 時表現良好。這些數據集在較小的數據塊大小上表現出了一致的性能,其中 DigitalCorpora767 保持了相對穩定的準確性 (從 256 個 token 保持到 1,024 個 token),而 Earnings 在 512 個 token (0.681) 時實現了峰值性能。相比之下,FinanceBench、KG-RAG 和 RAGBattlePacket 數據集具有更復雜的分析查詢,需要更廣泛的上下文和更深入的推理,通常受益于更大的塊 (1,024 個 token) 或頁面級分塊。
選擇分塊策略的指南
根據我們的發現,以下是選擇 chunking 策略的實用建議:
1. 首先考慮頁面級 chunking
我們的實驗清楚地表明,page-level chunking可在不同文檔類型中提供非常一致的性能。我們建議:
- 首先,將頁面級分塊作為默認策略 (使用 NeMo Retriever 提取)
- 雖然并非總是適合每個dataset,但它提供了更高的平均準確性和更穩定的性能
- 頁面級分塊可提供更容易的引用和引用功能,因為頁面是靜態邊界,而與基于token的分塊不同,分塊索引取決于所選的塊大小,這會降低不同配置中引用的穩定性
2. 考慮您的內容類型以進行優化
如果您想嘗試頁面級分塊之外的其他功能:
- 財務文檔:如果您的文檔類似于 FinanceBench,請嘗試使用 512 或 1,024-token 塊 (使用 NeMo Retriever 提取) 。章節級分塊對于財務文檔也很有效,有時甚至優于頁面級分塊
- 多樣化文檔:token大小的較小塊 (256-512 個token) 在各種內容集合中表現出色
3. 查詢特征會影響性能
- Factoid 查詢 (尋找特定事實) :頁面級分塊或更小的數據塊 (256-512 個 token,使用 NeMo Retriever 提取)
- 復雜的分析查詢:頁面級分塊或大塊 ( 1024 個 token,使用 NeMo Retriever 提取)
我們建議您根據自己的數據評估這些策略,以確認它們非常適合您的特定用例。不同的查詢模式和內容結構可能需要不同的方法,因此使用實際數據測試對于優化性能至關重要。
4. 測試多種方法
雖然頁面級分塊是我們建議的起點,但我們仍然建議您針對特定用例嘗試多種分塊策略:
- 首先將頁面級分塊作為基準。
- 根據您的內容類型,選擇 1-2 種其他分塊策略。
- 對你的 dataset 進行小規模評估。
- 分析定量指標和定性響應質量。
- 根據結果進行迭代和優化。
總結
我們對不同數據集的全面評估表明,頁面級分塊是 RAG 系統最有效的分塊策略,可提供最高的平均準確性和最一致的性能。與基于 token 的分塊和部分級分塊方法相比,情況確實如此。
雖然特定內容類型偶爾會受益于替代策略,但頁面級分塊提供了一個出色的默認選擇,可平衡文檔類型、查詢樣式和檢索場景之間的性能。這表明,自然分頁邊界通常會封裝非常適合執行檢索任務的一致性信息單元。
針對特定 RAG 系統的最佳分塊策略可能仍會因您的獨特用例、內容類型和查詢模式而異。通過從頁面級分塊開始,并根據本文中提供的指南系統評估替代方案,您可以優化 RAG 系統的性能,并為用戶提供更準確、更相關的響應。
請記住,分塊只是 RAG 系統中眾多超參數之一。為獲得真正的最佳性能,請考慮探索其他維度,例如嵌入模型、重排序策略和生成參數。
開始使用 NVIDIA RAG Blueprint
我們建議您親自試用 NVIDIA RAG Blueprint。此企業級參考實現提供了以下所需的所有組件:
- 在您自己的數據集上試驗不同的chunking策略
- 利用 state-of-the-art 嵌入和重排序模型
- 以更短的開發時間構建生產就緒型 RAG 系統
?