检索增强生成(RAG)技术是挖掘核心知识的关键。而在 RAG 系统中,切块(chunking)策略的运用至关重要,它直接关乎系统的性能与效果,决定着能否精准、高效地从庞大信息库中提取并利用知识。
一、理解RAG切块策略:RAG 的基石
切块,简单来说,就是将大块信息拆解为更易管理且富含上下文的小部分。在 RAG 系统的信息处理流程里,它承担着基础性却又十分关键的任务。通常在预处理阶段,长文档会被切分成段落或句子等小块,就像把一本厚厚的百科全书拆解成一页页便于翻阅的资料。
这一过程极大地优化了人工智能模型的信息处理效率。通过将信息组织成语义连贯的小单元,模型能更迅速、准确地定位和提取与问题相关的内容。以向量数据库为例,切块能够提升嵌入(embeddings)质量。嵌入是数据的数值表示,GenAI 模型依此理解和使用数据。当每个切块聚焦特定信息时,嵌入模型就能为向量数据库中的数据创建更精确、详细的数值表征,为 RAG 系统的高效运行提供有力支撑。
二、何时启用RAG切块策略
任何希望借助 GenAI 从大型文档和数据存储中提取、处理信息的组织,都应重视切块策略。无论是处理企业内部的合同文档、技术手册,还是科研机构的研究报告,切块都能显著提升检索结果的相关性和准确性。
从成本和效率角度来看,切块也意义重大。它减少了发送给大型语言模型(LLM)的文档部分,从而降低计算成本和响应延迟。在 RAG 系统中,成功的切块策略关键在于找到合适的切块大小与检索精度的平衡点,在保证信息完整性的同时,提升系统运行效率。
三、确定理想的上下文窗口
上下文窗口是模型在一次处理中能接受的最大文本量,通常以标记(token,如单词或符号)为单位衡量,多数大型语言模型都有其上限。切块的大小需适配模型的上下文窗口,合理设置上下文窗口对发挥 RAG 系统效能至关重要,它直接影响结果的准确性、相关性及模型整体性能。
如果上下文窗口设置过小,切块与文档其他部分的语义联系会被削弱,模型难以理解其完整含义;而设置过大,模型检索的针对性会下降,无法精准获取生成回复所需的关键信息。一般建议先限制上下文窗口大小,再根据检索性能进行调整。例如,Cohere Embed 的最大切块大小为 512 个标记,若文档段落平均长度约 200 词,250 词左右的切块大小可能较为合适。这种 “滑动窗口” 式的重叠策略,有助于从前后文本中收集更多上下文信息。研究发现,较小的上下文窗口(100 – 300 词)更利于模型准确捕捉文本语义,通常几百个标记的窗口能使模型性能达到较优状态,超过 500 个标记后性能可能显著下降。
四、RAG切块策略的多元方法
企业在制定RAG切块策略时,往往需处理多种数据类型,针对非结构化文本,有以下常见且有效的切块方法:
- 固定大小切块:按照预先设定的大小对内容进行划分,如将所有文档都切成 512 个标记的片段。该方法简单易行、成本较低,但可能会丢失上下文信息,尤其不适用于篇幅较短的文档。
- 句子级切块:把文本拆分成单个句子,便于进行细致的语义分析。这种方式能深入理解每个句子的含义,但缺乏文本整体的上下文联系,适合处理简短查询或聚焦特定句子的场景。
- 段落级切块:相较于句子级切块,它保留了更多上下文信息,更适用于处理跨句子或段落的较长查询,能满足对更广泛语义理解的需求,且无需像滑动窗口那样为保持语义连贯性而设置重叠。
- 滑动窗口切块:利用一个 “窗口” 在文档中滑动,每次捕获并处理一定数量的连续句子。与段落级切块不同,它常与前一个切块产生重叠,以确保语义连贯,在处理长查询时效果显著,能维持更广泛的上下文,准确捕捉文档内的语义关系。
- 递归切块:根据文本的自然断点,如句子或段落结尾进行拆分,而非固定间隔切割。这种方式使文本更易读、易理解,能较好地保留语义,但设置过程相对复杂,管理不同大小的切块也颇具挑战。
五、结构化文档的切块难题与对策
处理如 PDF 文件中的表格这类结构化文档时,切块面临独特挑战。表格中的每个单元格数据,若脱离其表头和相邻数据,可能就失去了意义。如果切块不当,会破坏语义联系,导致检索结果脱离上下文或产生误导。
为解决这一问题,需采用专门的RAG切块策略。在分割表格时,要确保每个切块都包含相应的表头信息,以便在检索时能重构完整表格。同时,在切块中应尽可能多地包含元数据,如表格标题、关键词和日期等,这有助于 RAG 系统更准确地理解每个切块的上下文,并依据元数据与查询的相关性筛选信息。
六、助力RAG切块策略的实用工具
对企业而言,处理海量数据的切块任务繁重且耗时。幸运的是,有诸多工具可助力简化这一流程。Unstructured、LangChain 和 LlamaIndex 等工具,能依据数据结构类型提取数据并进行合理切块。以存储为 PDF 格式的研究报告为例,这类工具可从 PDF 中提取数据,为文本和表格分别标注,实现更具针对性、高效的切块操作。
尽管大规模数据的初次处理可能因计算资源不同,耗时从数小时到数天不等,但后续更新处理速度会大幅提升,这些工具能在几秒或几分钟内完成新文档的提取和切块。而且,这些工具具备水平扩展能力,支持分布式处理,可应对不断增长的工作量。
七、优化切块策略:持续迭代之路
RAG切块策略并非一成不变,需要持续测试和迭代。不同的应用场景和数据类型,决定了不存在 “放之四海而皆准” 的切块方案。为实现优化,企业需评估切块对搜索性能的影响,并据此调整策略。
起初,可通过人工评估特定查询的检索切块相关性,初步判断模型性能。但为进行更全面的评估,需引入更详细的指标。Recall@k 和 Precision@k 是常用的衡量切块性能的指标,前者衡量检索到的相关切块数量,后者衡量检索到的切块中相关的比例,通过这两个指标可计算出平衡精度和召回率的 F-1 分数。此外,平均准确率均值(MAP)能综合反映多个查询的排序质量,归一化折损累计增益(NDCG)则在评估检索结果排序质量时,考虑了相关切块的位置因素。
借助这些指标,企业可针对性地调整RAG切块策略,如改变切块大小、调整滑动窗口范围,或者增加、更改元数据类型,观察这些调整对检索结果的影响。由于首次尝试很难达到理想的切块效果,在实际应用中,尤其是在大规模生产环境下,随着数据量和业务需求的变化,持续优化切块策略是确保 RAG 系统性能稳定、高效的关键。