2023年1月20日

嵌入技术的应用场景

OpenAI API embeddings 端点可用于衡量文本片段之间的相关性或相似性。

通过利用GPT-3对文本的理解能力,这些嵌入向量在无监督学习和迁移学习场景的基准测试中取得了最先进的成果

嵌入向量可用于语义搜索、推荐系统、聚类分析、近似重复检测等场景。

更多信息,请阅读OpenAI的博客公告:

要与其他嵌入模型进行比较,请参阅Massive Text Embedding Benchmark (MTEB) Leaderboard

嵌入向量可以单独用于搜索,也可以作为更大系统中的一个特征。

使用嵌入进行搜索的最简单方法如下:

  • Before the search (precompute):
    • 将您的文本语料分割成小于令牌限制的块(对于text-embedding-3-small模型是8,191个令牌)
    • 对每个文本块进行嵌入
    • 将这些嵌入向量存储在你自己的数据库中,或存储在类似PineconeWeaviateQdrant这样的向量搜索提供商中
  • At the time of the search (live compute):
    • 嵌入搜索查询
    • 在您的数据库中查找最接近的嵌入向量
    • 返回顶部结果

关于如何使用嵌入进行搜索的示例展示在Semantic_text_search_using_embeddings.ipynb中。

在更高级的搜索系统中,嵌入向量的余弦相似度可以作为众多特征之一用于搜索结果排序。

问答系统

从GPT-3获取可靠真实答案的最佳方法是提供包含正确答案的源文档。通过上述语义搜索流程,您可以低成本地在文档库中搜索相关信息,然后通过提示将这些信息提供给GPT-3来回答问题。我们在Question_answering_using_embeddings.ipynb中演示了这一过程。

推荐

推荐与搜索非常相似,不同之处在于输入不是自由格式的文本查询,而是集合中的项目。

一个关于如何使用嵌入进行推荐的示例展示在Recommendation_using_embeddings.ipynb中。

与搜索类似,这些余弦相似度分数既可以单独用于项目排序,也可以作为大型排序算法中的特征。

自定义嵌入

尽管OpenAI的嵌入模型权重无法微调,但你仍然可以使用训练数据来为你的应用定制嵌入。

Customizing_embeddings.ipynb中,我们提供了一个使用训练数据定制嵌入向量的示例方法。该方法的核心思想是训练一个自定义矩阵,用于与嵌入向量相乘,从而获得新的定制化嵌入向量。通过优质训练数据,这个自定义矩阵将有助于突出与您训练标签相关的特征。您可以将这个矩阵乘法等价地视为:(a)对嵌入向量的修改,或(b)对用于测量嵌入向量之间距离的距离函数的修改。