文本比较示例
OpenAI API 嵌入端点 可用于衡量文本片段之间的相关性或相似性。
通过利用 GPT-3 对文本的理解,这些嵌入在无监督学习和迁移学习环境中,在基准测试中取得了最先进的结果。
嵌入可用于语义搜索、推荐、聚类分析、近重复检测等。
有关更多信息,请阅读 OpenAI 的博客文章公告:
与其他嵌入模型进行比较,请参阅大规模文本嵌入基准 (MTEB) 排行榜
语义搜索
嵌入可以单独用于搜索,也可以作为更大系统中的一个特征。
使用嵌入进行搜索的最简单方法如下:
- 搜索前(预计算):
- 将文本语料库分割成小于令牌限制的块(
text-embedding-3-small
的令牌限制为 8,191 个) - 嵌入每个文本块
- 将这些嵌入存储在您自己的数据库或向量搜索提供商中,例如 Pinecone、Weaviate 或 Qdrant
- 搜索时(实时计算):
- 嵌入搜索查询
- 在数据库中查找最接近的嵌入
- 返回顶部结果
有关如何使用嵌入进行搜索的示例,请参见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) 修改用于测量嵌入之间距离的距离函数。