Sentence Transformers 通过截断、填充和注意力掩码的组合来处理不同长度的输入文本,确保无论输入大小如何,都能生成一致的嵌入维度。这些模型基于 BERT 等架构构建,具有最大序列长度(通常为 512 个 token)。当文本超过此限制时,将被截断以适应。较短的文本用占位符 token(例如,零)填充,以达到模型的固定输入大小。至关重要的是,注意力掩码用于告诉模型哪些 token 是真实的(需要处理),哪些是填充(需要忽略)。这使得模型能够高效地处理具有不同长度的文本批次,而不会失去结构完整性。
嵌入生成过程涉及池化层(例如,平均、最大或 CLS token 池化),这些池化层将 token 级别的嵌入聚合为单个固定大小的句子嵌入。例如,平均池化对序列中的所有 token 嵌入进行平均,而 CLS token 使用专用 token 的嵌入作为句子表示。这些方法确保最终嵌入维度保持不变,即使输入长度不同。重要的是,注意力机制确保填充 token 不会影响输出,因此较短的文本不会被不相关的填充扭曲。该模型关注有意义的 token 的能力意味着嵌入主要反映内容,而不是长度。
在两种情况下,句子长度会间接影响嵌入。首先,如果文本由于超过模型的最大长度而被截断,则可能会发生信息丢失,从而改变嵌入。例如,一个 600 个 token 的文档被裁剪为 512 个 token 可能会丢失被移除部分的细微差别。其次,限制范围内的较长文本可能会产生捕获更详细上下文的嵌入,因为模型会处理更多的 token。但是,池化层可以减轻剧烈的差异:平均 100 个 token 与平均 500 个 token 可能会稀释单个 token 的影响,但可以保留整体语义。测试表明,不同长度的释义句子的嵌入(例如,“The quick brown fox”与同一场景的详细的 50 字描述)在语义上仍然接近,这表明对长度变化的鲁棒性。因此,虽然长度可能会在极端情况下影响嵌入,但该架构最大限度地减少了其对大多数实际用途的影响。