面包屑图标 当前位置: 首页
AI资讯
热点详情

RAG分块大小最佳选择方法详解

AI热点日报
AI热点日报时间:2026-07-05
热点解读

探索如何通过最佳分块策略优化大语言模型应用,有效提升语义搜索与对话式AI(Chatbot)的效率及准确性。核心要点:1 分块在大型语言模型中的作用与重要性2 分块策略对语义搜索与Chatbot的影响3 选择合适分块大小与方法的权衡因素今天我们来深入探讨一个在构建大语言模型(LLM)应用时无法回

探索如何通过最佳分块策略优化大语言模型应用,有效提升语义搜索与对话式AI(Chatbot)的效率及准确性。
核心要点:
1. 分块在大型语言模型中的作用与重要性
2. 分块策略对语义搜索与Chatbot的影响
3. 选择合适分块大小与方法的权衡因素

RAG如何选择最佳分块大小?

今天我们来深入探讨一个在构建大语言模型(LLM)应用时无法回避的核心话题——分块(Chunking)

如果你参与过LLM相关的项目,肯定对“分块”并不陌生。简单来说,分块就是将大段文本拆解成更小的片段。这一过程直接决定了从向量数据库中检索到的内容与用户需求的相关度,尤其是在使用LLM进行嵌入(Embedding)时。

目前,任何内容在索引之前都必须经过嵌入处理。分块的核心目标就是确保嵌入过程中的噪声尽可能少,同时保持语义相关性不丢失。

举个实际场景:进行语义搜索时,需要索引大量文档,每篇文档都包含某主题的重要信息。一个合理设计的分块策略能让搜索结果精准匹配用户的查询意图。分块过小或过大,要么结果不精确,要么遗漏关键内容。

一条经验法则:如果一段文本脱离上下文后对人类而言仍有意义,那么对语言模型来说通常也具备意义。因此,找到适合文档集合的最佳分块大小,是保障搜索准确性与相关性的关键。

当然,分块不仅适用于语义搜索,对话式AI(Chatbot)也高度依赖它。在Chatbot中,嵌入后的分块内容被用来构建基于知识库的上下文,使ChatBot能够依据可靠信息生成回答。选择正确的分块策略主要有两个原因:

第一,它决定了上下文是否与提问真正相关;

第二,它决定了我们能否在将文本发送给外部模型提供者(如OpenAI)之前,将其限制在有限的token窗口内。

某些情况下(例如使用GPT-4这类支持32k上下文的模型),适应大块文本可能不成问题,但需注意——块过大可能稀释检索结果的相关性。

下文将探讨几种不同的分块方法,讨论选择分块大小与方式时需要考虑的权衡,并最后给出实用建议,帮助你找到最适合自己应用的分块方案。

嵌入短内容与长内容的不同表现

对内容做嵌入时,内容长短不同,嵌入的表征也会有所差异。短内容(如句子)与长内容(如段落或整篇文章)的处理方式存在明显区别。

当一个句子被嵌入时,生成的向量主要聚焦于该句的具体含义,比较也在这一粒度上进行。但这种做法可能忽略段落或文档中更广泛的上下文信息。

相比之下,当整个段落或文档被嵌入时,嵌入过程会同时考虑整体上下文以及句子与短语之间的关系。得到的向量表示更为全面,能够捕捉文本的宏观意义和主题。但另一方面,输入文本增大也可能引入噪声,稀释个别句子或短语的重要性,导致查询时难以找到精确匹配。

此外,查询长度也会影响嵌入之间的关联性。较短的查询(如单句或短语)更关注细节,适合与句子级别的嵌入匹配。较长的查询(多句或多段)则倾向于寻找更广义的上下文或主题,因此更适合与段落或文档级别的嵌入匹配。

索引也可能是一种“混搭”——其中包含不同大小的分块嵌入。这既是挑战也是机遇。一方面,长内容与短内容的语义表征不同,查询结果的相关性可能波动。另一方面,混搭索引能捕捉更广泛的上下文,因为不同大小的分块代表了文本的不同粒度,使系统能更灵活地应对各类查询。

分块策略要考虑的因素

选择最佳分块策略时,有几个变量会影响决策,这些变量因应用场景而异。以下是一些关键点:

  1. 要索引的内容性质是什么?是长文档(如文章或书籍)还是短内容(如术语解释或聊天消息)?答案不仅决定哪种模型最合适,也决定了分块策略的基调。
  2. 使用的是哪种嵌入模型,它在哪些分块大小上表现最佳?像sentence-transformer模型在处理单独句子时表现不错,而text-embedding-ada-002这类模型则更适合256或512个token的分块。
  3. 用户查询的长度和复杂性预期如何?查询是简短具体的,还是冗长复杂的?这会影响你对分块策略的选择,以确保嵌入查询与嵌入分块之间更好地匹配。
  4. 检索结果将在具体应用中如何使用?是用于语义搜索、问答、摘要生成还是其他?如果结果要传递给带有token限制的LLM,那就必须考虑限制分块的大小,同时还要权衡一次请求中放入多少个分块。

回答这些问题,能帮助你制定出兼顾性能与准确性的分块策略,让查询结果更相关。

分块方法

分块的方法很多,每种方法在不同情况下各有优劣。我们逐一分析,找出最适合自己场景的方法。

固定大小分块

这是最直接也最常见的方法:决定每个分块包含多少个token,还可以选择让块之间有一定重叠。为了保持语义上下文不丢失,通常会保留部分重叠区域。固定大小分块在大多数常见场景下都是首选。相比其他分块方式,它计算成本低、使用简单,且无需依赖任何NLP库。

下面是一个用LangChain实现固定大小分块的示例:

text = "..." # 文本
from langchain.text_splitter import CharacterTextSplitter
text_splitter = CharacterTextSplitter(
separator = "n",
chunk_size = 256,
chunk_overlap = 20
)
docs = text_splitter.create_documents([text])

“内容感知”分块

这类方法利用待分块内容的特性,实施更复杂的策略。这里举几个例子:

句子分割

前面提到,很多模型在嵌入句子级别内容时表现良好。因此自然想到用句子进行分块,实现方法也很多:

  • 朴素分割:最简单的是按句号(“.”)和换行符直接切分。虽然快速简单,但无法处理所有边界情况。下面是一个极简示例:
text = "..." # 文本
docs = text.split(".")
  • NLTK:自然语言工具包(NLTK)是处理人类语言数据的流行Python库。它提供句子分词器,能将文本切分成句子,从而生成更有意义的分块。结合LangChain使用NLTK的示例如下:
text = "..." # 文本
from langchain.text_splitter import NLTKTextSplitter
text_splitter = NLTKTextSplitter()
docs = text_splitter.split_text(text)
  • spaCy:spaCy是另一个强大的Python NLP库,提供复杂的句子分割功能,能高效地将文本划分为独立句子,更好地保留上下文。结合LangChain使用spaCy的示例如下:
text = "..." # 文本
from langchain.text_splitter import SpacyTextSplitter
text_splitter = SpaCyTextSplitter()
docs = text_splitter.split_text(text)

递归分块

递归分块采用分层迭代的方式,借助一组分隔符将输入文本逐步切分为更小的块。如果第一次尝试未达到期望的大小或结构,该方法会递归调用自身,直至满足条件。这意味着每个块的大小并不绝对相同,但会“趋向”相似的大小。

用LangChain实现递归分块的示例:

text = "..." # 文本
from langchain.text_splitter import RecursiveCharacterTextSplitter
text_splitter = RecursiveCharacterTextSplitter(
# 设置一个非常小的块大小,仅为演示。
chunk_size = 256,
chunk_overlap = 20
)
docs = text_splitter.create_documents([text])

专门分块

Markdown和LaTeX是两种典型的结构化内容。针对它们,可以使用专门的分块方法,在切分时保留原始结构。

  • Markdown:Markdown是常用的轻量级标记语言。通过识别Markdown语法(标题、列表、代码块等),可以智能地根据内容的结构和层次进行切分,生成语义更一致的块。例如:
from langchain.text_splitter import MarkdownTextSplitter
markdown_text = "..."
markdown_splitter = MarkdownTextSplitter(chunk_size=100, chunk_overlap=0)
docs = markdown_splitter.create_documents([markdown_text])
  • LaTeX:LaTeX是文档准备系统和标记语言,常用于学术论文和技术文档。通过解析LaTeX命令和环境,可以创建尊重内容逻辑组织(如章节、小节、公式)的块,从而获得更准确、上下文相关的结果。例如:
from langchain.text_splitter import LatexTextSplitter
latex_text = "..."
latex_splitter = LatexTextSplitter(chunk_size=100, chunk_overlap=0)
docs = latex_splitter.create_documents([latex_text])

语义分块

这是一种较新的方法,由Greg Kamradt首次提出。他在代码示例中指出,全局分块大小可能过于简单,忽略了文档内各段落的含义。仅使用固定大小,无法判断是否将不相关的段落组合在了一起。

代码示例地址:https://github.com/FullStackRetrieval-com/RetrievalTutorials/blob/main/tutorials/LevelsOfTextSplitting/5_Levels_Of_Text_Splitting.ipynb

语义分析有助于创建由围绕同一主题的句子组成的块。

语义分块的工作步骤如下:

  1. 将文档拆解为句子。
  2. 创建句子组:对于每个句子,生成一个包含该句子前后若干句子的组。这个组由“锚定”句子定义。你可以决定组中包含多少个前后的句子——但组内所有句子都与一个“锚定”句子关联。
  3. 为每个句子组生成嵌入,并与该组的“锚定”句子关联。
  4. 顺序比较组间距离:依次查看文档中的句子,只要主题不变,当前句子组与前一句子组的语义距离就较低;相反,较高的距离则表明主题发生了变化。这样可以有效区分不同的块。

LangChain基于Kamradt的工作创建了一个语义分块分割器。

地址:https://python.langchain.com/docs/modules/data_connection/document_transformers/semantic-chunker/

找到适合应用的最佳分块大小

以下建议可以帮助你在常见分块方法(如固定分块)不适用时,确定最佳分块大小。

  • 预处理数据 - 在确定最佳分块大小之前,先要清洗数据以保证质量。例如,如果数据是从网上抓取的,可能需要去除HTML标签或其他仅增加噪声的元素。
  • 选择一系列分块大小 - 数据预处理完成后,下一步是选取一批潜在的分块大小来测试。选择时要考虑内容性质(短消息还是长文档)、嵌入模型及其能力(如token限制)。目标是保留上下文的同时维持准确性。开始时可以尝试多种分块大小:小一些的(如128或256个token)捕捉更细粒度的语义信息,大一些的(如512或1024个token)保留更多上下文。
  • 评估每个分块大小的性能 - 为了测试不同的分块大小,可以构建多个索引。使用一个有代表性的数据集,为待测的分块大小生成嵌入并存入索引。然后运行一系列查询来评估质量,比较不同分块大小的表现。这是一个迭代过程,需要针对不同查询反复测试,直到找到最适合内容和预期查询的分块大小。

结论

分块没有放之四海而皆准的方案,适合一个用例的方法可能不适合另一个。希望这篇文章能帮助你更好地理解如何为自己的应用选择合适的分块策略。

热点追踪提示词
你是一名 AI 行业编辑,请围绕下面这条热点输出一份资讯解读:
热点:RAG分块大小最佳选择方法详解要求:
1. 先用一句话解释这条热点在讲什么
2. 再总结它为什么重要
3. 说明会影响哪些 AI 产品或内容方向
4. 最后给出 3 个适合资讯站使用的标题
来源:https://www.53ai.com/news/RAG/2025040304398.html
ai 人工智能

游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。

相关热点
AI热点2026-07-05 18:02
大模型领域7个常见术语详解

大模型领域的七个核心术语包括参数、Token、注意力机制、思维链、预训练、微调与提示词,分别对应模型内部变量、文本最小单元、动态权重分配、分步推理、通用语言学习、特定任务适配及用户指令引导,共同构成理解大模型技术的基石。

AI热点2026-07-05 18:02
AI时代如何用人脸识别系统保障校园安全

借助AI人脸识别系统,校园安全实现从被动监控向主动预警升级。通过人脸检测、特征提取与比对,系统可识别陌生人员并联动报警,实时统计人流密度并预警,同时自动监管学生出勤情况,有效提升技防水平。

AI热点2026-07-05 18:02
Pure Storage与Meta联合开发AI超级计算机

PureStorage与Meta成功合作开发AI超级计算机RSC,采用FlashArray C和FlashBlade全闪存储方案,提供微秒级超低延迟、99 9999%企业级极高可用性及高密度QLC架构,满足数万亿超大规模示例训练与多模态数据分析需求,支撑元宇宙与增强现实工具研发。

AI热点2026-07-05 18:02
微软AI TTS语音合成技术最新进展

随着技术的快速迭代,人工智能的应用边界持续拓展。在智能语音领域,TTS语音合成(Text-to-Speech)技术取得了令人瞩目的突破。本文将重点介绍微软在此方面的最新成果——探讨如何让AI语音更加逼真自然,甚至能够理解并回应你的表情符号。 在不同的对话场景中,用户对AI语音的期望各有差异。如今,T

延伸阅读