微信扫码
添加专属顾问
我要投稿
本文介绍一下最近比较火的Late Chunking(延迟分块) ,它用于改进文本嵌入的质量。该方法利用长上下文嵌入模型,在变换器模型之后和均值池化之前进行分块,从而捕获完整的上下文信息。与传统的朴素分块方法相比,延迟分块在各种检索任务中表现更优,且无需额外训练。此外,本文还提出了长延迟分块方法,用于处理超过模型上下文长度的长文档,并介绍了一种基于跨度池化的训练方法,以进一步提高检索准确性。
延迟分块是一种利用最近嵌入模型的长上下文输入窗口与大多数应用程序的最佳文本块相对较小的大小之间的差异的策略。这些模型支持更长的输入文本,例如jina-embeddings-v2-small支持8192个标记——大约十页标准文本——而最佳块大小通常要小得多,例如段落的大小。
算法流程如下:
具体步骤如下:
分块:使用分块策略 将文本 分块,得到分块序列 。
标记化:
嵌入生成:
确定分块边界:
均值池化:
返回块嵌入:
对于超过模型上下文长度的长文档,论文中提出了长延迟分块方法。
目标:
具体详细步骤:
分块:使用分块策略 将文本 分块,得到分块序列 。
标记化:将文本 标记化为一系列标记(tokens),得到标记ID序列 和每个标记的字符长度序列 。
检查标记数量:如果标记数量 小于等于最大标记长度 ,则直接使用延迟分块方法处理。
初始化变量:初始化变量 为 , 为 1,以及一个空列表 用于存储块嵌入。
处理宏块:
返回块嵌入:
论文还提出的训练方法旨在进一步提高延迟分块(Late Chunking)的检索准确性。该方法基于跨度池化(Span Pooling)技术,通过训练模型将标注文本跨度中的相关信息编码到其标记嵌入中。以下是对训练方法的详细介绍,包括训练数据、训练过程和相关细节。
训练数据由查询、相关文档和文档中相关跨度的标注组成。具体步骤如下:
论文中使用了两个数据集进行训练:
训练过程包括以下几个关键步骤:
微调过程本身遵循Gunther et al.(2023)中描述的成对训练阶段,其中模型在文本对上使用InfoNCE(van den Oord et al., 2018)损失进行训练,该损失定义在一批的对上,并使用余弦相似度函数:
在这里,查询向量通过通常的方式将嵌入模型应用于查询文本获得。对于文档嵌入,通过将模型应用于文档获得标记嵌入集,并对跨度内的标记嵌入执行均值池化操作,因此称为“跨度池化”。
文中使用双向版本的损失,其中通过交换对的顺序从获得:
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费场景POC验证,效果验证后签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2024-10-27
2024-09-04
2024-07-18
2024-05-05
2024-06-20
2024-06-13
2024-07-09
2024-07-09
2024-05-19
2024-07-07
2025-04-25
2025-04-22
2025-04-22
2025-04-20
2025-04-19
2025-04-18
2025-04-16
2025-04-14