分块(chunking)是将大型数据拆分为更小片段,再对其进行嵌入以便搜索的过程。AI Search 使用 递归分块,它会在自然边界(如段落或句子)处拆分内容,并在分块过大时进一步拆分。
递归分块通过以下方式尽量保持分块有意义:
- 在自然边界处拆分: 例如先按段落,再按句子。
- 检查大小: 如果分块过长(基于 token 数),会再次拆分为更小部分。
这样,分块便于嵌入与检索,而不会在句子中间切断语义。
AI Search 提供两个参数来帮助你控制分块行为:
- Chunk size:每个分块的 token 数。可选范围可能因模型而异。
- Chunk overlap:相邻分块之间重叠 token 的百分比。
- 最小值:
0% - 最大值:
30%
- 最小值:
这些设置在索引步骤期间应用,发生在数据被嵌入并存储到搜索索引之前。
分块既影响内容的检索方式,也影响传入生成模型的上下文量。可以试用此外部 分块可视化工具 ↗,帮助理解不同分块设置可能呈现的效果。
- 索引大小: 更小的分块大小会产生更多分块与更多总向量。请参阅 AI Search 限制,确保配置保持在实例限制内。
- 生成模型上下文窗口: 生成模型的上下文窗口有限,必须容纳所有检索到的分块(
max_num_results×chunk size)、用户查询以及模型输出。请谨慎使用大分块或较高的max_num_results值,以避免上下文溢出。 - 成本与性能: 更大的分块与更高的
max_num_results设置会向模型传入更多 token,可能增加延迟与成本。你可以在 AI Gateway 中监控此用量。