本文正在参加「金石计划」
Embedding模型在许多应用场景中都有广泛的应用。在OpenAI中,文本嵌入技术主要用于衡量文本字符串之间的相关性。
什么是Embedding
嵌入(Embeddings)是一种将离散变量表示为连续向量的方法。它在机器学习中起到了不可或缺的作用。例如,在机器翻译中的词嵌入和分类变量中的实体嵌入都是嵌入的成功应用。
嵌入的本质是“压缩”,用较低维度的k维特征去描述有冗余信息的较高维度的n维特征,也可以叫用较低维度的k维空间去描述较高维度的n维空间。在思想上,与线性代数的主成分分析PCA,奇异值分解SVD异曲同工,事实上,PCA和SVD也可以叫做Embedding方法。
OpenAI 早先提供了第一代模型(在模型ID中用-001表示),包括text-similarity-davinci-001和davinci-001嵌入等等,而后在2022年12月将嵌入模型更新为text-embedding-ada-002(在模型ID中用-002表示)。新模型拥有较小的嵌入大小,新嵌入只有1536维,并且提供:
- 价格降低了90%-99.8%
- 嵌入维度大小减少了1/8,降低了向量数据库成本
- 端点统一,便于使用
- 在文本搜索、代码搜索和句子相似性方面具有最先进的性能
- 上下文窗口从2048增加到8192
总的来说,建议对几乎所有用例使用text-embedding-ada-002。它更好,更便宜,更简单使用。
Embedding 应用场景
Embedding模型在许多应用场景中都有广泛的应用。在OpenAI中,文本嵌入技术主要用于衡量文本字符串之间的相关性。以下是一些常见的应用场景:
- 搜索(Search):根据与查询字符串的相关性对搜索结果进行排序。
- 聚类(Clustering):将文本字符串按照相似性进行分组。
- 推荐(Recommendations):推荐与给定文本字符串相关的项目。
- 异常检测(Anomaly Detection):识别与其他文本字符串相关性较低的异常值。
- 多样性测量(Diversity Measurement):分析文本字符串之间相似性的分布。
- 分类(Classification):根据文本字符串与各标签的相似性进行分类。
嵌入模型将文本字符串转换为浮点数向量(列表),向量之间的距离衡量它们的相关性。较小的距离表示高相关性,而较大的距离表示低相关性。
需要特别注意的是,Embedding模型是基于包含一些关于现实世界事件的信息的数据集进行训练的,直到2020年8月为止。您需要处理涉及最近事件的任务,模型可能无法表现出最佳效果。
下面是一种常见的应用场景,将知识数据通过嵌入模型查询出向量,并映射保存,然后在应用时将问题也转换成嵌入式,通过相似度算法(比如余弦相似度)对比前期保存的向量,找出TopN的数据,即得到与问题最关联的内容。
接下来的文章,我将通过代码构建一个基于OpenAI 嵌入(Embeddings)模型实现的应用场景,请持续关注!