OpenAI 中的嵌入是将文本、代码或其他数据转换为机器可处理的数值表示,这些表示捕获了语义信息。它们由机器学习模型生成,例如 OpenAI 的 text-embedding-ada-002
,这些模型将输入文本转换为固定长度的向量(数字数组)。每个向量维度代表输入的潜在特征,使得相似的概念——如“dog”(狗)和“puppy”(小狗)——在嵌入空间中具有数学上更接近的向量。例如,“cat”(猫)和“kitten”(小猫)的嵌入也会很接近,而“car”(汽车)的嵌入则会离得更远。这使得算法能够高效地比较和分析词语、句子或文档之间的关系。
为了创建嵌入,OpenAI 的模型通过多个神经网络层处理输入文本。模型首先对文本进行分词(将其分解为词语或子词等更小的单元),然后计算词语之间的上下文关系。最终输出是一个密集向量,通常具有数百或数千个维度。例如,text-embedding-ada-002
生成 1536 维向量。这些嵌入经过归一化处理,这意味着它们的长度被缩放为 1,从而简化了余弦相似度等相似性计算。开发者可以通过 OpenAI 的 API 访问此功能,方法是发送一个文本字符串并接收返回的向量。例如,使用输入“machine learning”的查询(如 GET https://api.openai.com/v1/embeddings
)会返回一个向量,该向量用数字表示该短语。
开发者使用嵌入来执行语义搜索、聚类或推荐系统等任务。在搜索中,即使关键词不重叠,嵌入也能将用户查询与相关文档匹配。例如,搜索“如何训练模型”可能会显示关于“神经网络优化”的文章,因为它们的嵌入是相似的。它们还用于分类(例如情感分析),方法是在预计算的嵌入之上训练模型。使用 OpenAI 的 API 时,开发者应考虑输入长度限制(text-embedding-ada-002
为 8,192 个 token)和每次请求的成本等因素。虽然嵌入简化了语义分析,但它们需要仔细处理——例如选择合适的相似性度量或对文本进行预处理——以确保结果准确。