嵌入模型通过将单词、短语或整个句子映射到高维空间中的数值表示,从而将文本转换为向量。此过程从分词开始,将文本拆分为更小的单元,如单词或子词。然后,为每个 token 分配一个初始向量,通常通过查找表(如神经网络中的矩阵),其中每个 token 对应于唯一的数字行。这些初始向量通常是随机的,但在训练过程中会进行细化。该模型学习根据 token 出现的上下文调整这些数字,确保相似的单词或短语最终在向量空间中更接近。例如,“dog”这个词可能以随机值开始,但随着模型处理其用法的示例,会逐渐靠近“puppy”。
有效嵌入的关键在于捕捉语义和句法关系。像 Word2Vec、GloVe 或 BERT 这样的模型通过不同的策略来实现这一点。例如,Word2Vec 通过预测周围的单词(skip-gram)或使用上下文来预测目标单词(CBOW)进行训练,迫使模型学习有意义的关联。基于 Transformer 的模型(如 BERT)通过使用注意力机制来动态权衡周围单词的重要性,从而更进一步。例如,在句子“The bank charged a fee for the loan”中,BERT 的注意力头可能会将“bank”更强烈地与“fee”和“loan”联系起来,而不是与不相关的单词联系起来。这种上下文感知能力使得嵌入能够根据其用法准确地表示多义词(如“bank”作为金融机构与河岸)。最终向量通常是这些上下文相关的 token 表示的加权平均值,或者是总结整个输入的特殊 [CLS] token 嵌入。
开发人员可以利用 Hugging Face 的 Transformers 或 Sentence-Transformers 等库来生成嵌入。例如,使用 sentence-transformers/all-MiniLM-L6-v2
,输入文本“machine learning”可能会输出一个 384 维向量,如 [0.23, -0.45, …, 0.72]。这些向量支持实际应用:搜索引擎通过余弦相似度比较查询和文档嵌入来对结果进行排序,而聚类算法通过嵌入相似性对支持票证进行分组。一个关键细节是维度——更高的维度(例如,BERT 中的 768)捕获更多的细微差别,但会增加计算成本。预训练模型在特定领域的数据(例如,医学文本)上进行微调,以提高相关性。通过将文本转换为向量,嵌入模型将非结构化语言转换为机器学习算法可以有效处理的形式,从而弥合了自然语言和数值计算之间的差距。