嵌入的用例

2023 年 1 月 20 日
在 Github 中打开

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

通过利用 GPT-3 对文本的理解,这些嵌入在无监督学习和迁移学习设置的基准测试中 取得了最先进的结果

嵌入可用于语义搜索、推荐、聚类分析、近重复检测等。

有关更多信息,请阅读 OpenAI 的博客文章公告

为了与其他嵌入模型进行比较,请参阅 海量文本嵌入基准 (MTEB) 排行榜

嵌入可以单独用于搜索,也可以作为更大系统中的一项功能。

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

  • 搜索前(预计算)
    • 将您的文本语料库拆分为小于令牌限制的块(text-embedding-3-small 为 8,191 个令牌)
    • 嵌入每个文本块
    • 将这些嵌入存储在您自己的数据库中,或存储在向量搜索提供商中,例如 PineconeWeaviateQdrant
  • 搜索时(实时计算)
    • 嵌入搜索查询
    • 在您的数据库中找到最接近的嵌入
    • 返回排名靠前的结果

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) 用于测量嵌入之间距离的距离函数的修改。