文本分块哪家强?LumberChunker、语义分块、段落级、循环分块、HyDE、命题级
检索增强生成(RAG)系统通过将模型生成与上下文相关文档相结合来提高信息的准确性,文本内容如何分割成“块(chunk)”对检索质量有显著影响。
用于问答实验的RAG Pipeline,一些tricks,混合检索:BM25-Top3、密集检索-Top15,BM25的Top1排在前面,Top2-3排在最后;大模型重排序:如果上下文包含六个或更多块,从中间点开始反转块的顺序。
LumberChunker方法利用LLM动态地将文档分割成语义独立的块。这种方法基于一个前提:当内容块的大小可以变化时,检索效率会提高,因为这样可以更好地捕捉内容的语义独立性。LumberChunker通过迭代地提示LLM,在一系列连续段落中识别内容开始转变的点,从而确保每个块在上下文中是连贯的,但与相邻块有所区别。
LumberChunker遵循一个三步流程。首先,按段落对文档进行分割。其次,通过追加连续的块,创建一个组(Gi),直到超过预定义的标记计数θ。最后,将Gi作为上下文输入到Gemini,Gemini确定显著内容转变开始出现的ID,从而定义了Gi+1的开始和当前块的结束。这个过程在整个文档中循环重复。
实验结果表明,LumberChunker在检索性能上优于其他竞争性基线,特别是在DCG@20指标上,比最接近的竞争者(循环分块:Recursive Chunking)高出7.37%;其它的竞争者分别是:语义分块:Semantic Chunking、段落级:Paragraph-Level、HyDE、命题级:Proposition-Level。
在GutenQA(3000个QA)上使用不同粒度的问题和检索语料库段落的段落检索性能(DCG@k和Recall@k)。每列中的最佳得分以粗体突出显示。
当LumberChunker集成到RAG流程中时,它被证明比其他分割方法和竞争性基线更有效。
LumberChunker不足:
- 尽管它在性能上优于所有基线,但它需要使用LLM,这使得它在成本和速度上比传统方法更高、更慢。
- LumberChunker专门设计用于叙事文本,对于高度结构化的文本,可能不是最优解决方案。
附录:
LumberChunker Gemini Prompt示例,用于书籍《小熊维尼》由A. A.米尔恩著
与表2中的例子不同,表3段落中的代词“He”不能被准确共指,导致命题(propositions)有些模糊。因此,如果用户问到“埃隆·马斯克家族中谁曾经做过牛仔表演者?”这样的问题,一个仅使用命题作为检索单元的模型将无法提供准确的回答。
在整个RAG流程中,除了Chunking,还涉及Embedding、Indexing等等,PaperAgent团队RAG专栏进行过详细的归纳总结:高级RAG之36技(术),可私信留言试看:RAG专栏。
https://github.com/joaodsmarques/LumberChunker
https://arxiv.org/pdf/2406.17526
LumberChunker: Long-Form Narrative Document Segmentation
本文转载自PaperAgent