openAI|使用嵌入的语义文本搜索

本文介绍如何使用OpenAI的文本嵌入来进行语义文本搜索。通过查询嵌入与文档嵌入进行比较,可以高效的在数据集中搜索相关文本。如何使用余弦相似度计算来搜索文本,并展示了搜索结果。提高搜索效率并降低成本。

语义文本搜索

本文介绍了如何使用OpenAI的文本嵌入来进行语义文本搜索。通过将查询嵌入与文档嵌入进行比较,可以很高效地在数据集中搜索相关文本。本文展示了如何使用余弦相似度计算来搜索文本,并展示了搜索结果。该方法可以大大提高搜索效率并降低成本。

正文

我们可以通过简单地嵌入我们的搜索查询,然后找到最相似的评论,以非常有效的方式以非常低的成本在语义上搜索所有评论。 数据集在 Obtain_dataset Notebook 中创建。

import pandas as pd
import numpy as np

datafile_path = "data/fine_food_reviews_with_embeddings_1k.csv"

df = pd.read_csv(datafile_path)
df["embedding"] = df.embedding.apply(eval).apply(np.array)

请记住对文档(在本例中为评论)使用文档嵌入引擎,对查询使用查询嵌入引擎。 请注意,这里我们只是比较查询嵌入和文档嵌入的余弦相似度,并显示 top_n 个最佳匹配项。

from openai.embeddings_utils import get_embedding, cosine_similarity

# 搜索特定产品的评论
def search_reviews(df, product_description, n=3, pprint=True):
    product_embedding = get_embedding(
        product_description,
        engine="text-embedding-ada-002"
    )
    df["similarity"] = df.embedding.apply(lambda x: cosine_similarity(x, product_embedding))

    results = (
        df.sort_values("similarity", ascending=False)
        .head(n)
        .combined.str.replace("Title: ", "")
        .str.replace("; Content:", ": ")
    )
    if pprint:
        for r in results:
            print(r[:200])
            print()
    return results


results = search_reviews(df, "美味的豆子", n=3)
好买:我喜欢这些豆子。 它们是真空密封的,丰满而湿润。 会推荐它们用于任何用途。 我亲自将它们分开并放入一些伏特加酒中制成香草精。 百胜!

牙买加蓝豆:非常适合烘焙的咖啡豆。 我们家刚刚又买了 5 磅用于更多的烘烤。 烘烤成深褐色的豆子时味道浓郁,酸度适中

美味!:我喜欢这种白豆调味料,它给豆子带来浓郁的味道我就是喜欢它,我的婆婆不知道这个 Zatarain 的品牌,现在她正在托盘不同的调味料
results = search_reviews(df, "全麦面食", n=3)
美味又快捷的意大利面:百味来全麦意大利面配蔬菜卤汁味道鲜美,而且有一种极好的厚实的蔬菜卤汁。 我只希望有更多。 如果你没有挨饿或

sooo good: 味道真好。 物有所值。 我男朋友讨厌小麦面食,但喜欢这个。 厨师快,味道好。我喜欢这个品牌,并开始购买更多他们的意大利面。 散装最好。

方便:喜欢即食意大利面的想法,仅此一点,这款产品就受到了好评。 意大利面是全麦的,所以这是一个很大的优势,而且它实际上是有嚼劲的。 蔬菜海员

我们可以轻松地搜索这些评论。 为了加快计算速度,我们可以使用一种特殊的算法,旨在通过嵌入进行更快的搜索。
results = search_reviews(df, "不良交货", n=1)
很棒的产品,很差的送货:咖啡很棒,我是回头客。 这次的问题是 UPS 递送。 他们把箱子留在车道中间我的车库门前

正如我们所见,这可以立即带来很多价值。 在这个例子中,我们展示了能够快速找到交付失败的例子。
results = search_reviews(df, "被宠坏的", n=1)
非常失望:嗨,我对过去收到的 ONE 椰子水发货感到非常失望。 3 个盒子漏水,椰子水变质了。谢谢。
results = search_reviews(df, "宠物食品", n=2)
美食:我的猫王唯一会吃的干粮。 有助于防止毛球。 良好的包装。 及时到达。 卖宠物食品的朋友推荐的。

猫喜欢它:我的 7 只猫喜欢这种食物,但对人类来说有点难吃。 在深色肉汤中游动的鲭鱼片。 它被标榜为"完整"食物,包含胡萝卜、豌豆和意大利面。

此文章由OpenAI开源维基百科原创发布,如若转载请注明出处:https://openai.wiki/semantic_text_search_using_embeddings.html

(0)
上一篇 2023-02-20 12:20
下一篇 2023-02-20 13:46

相关推荐

  • Prompt|高级用法

    本文详细介绍了ChatGPT Prompt的使用方法,包括少样本提示、思维链提示、演示、自洽性等概念。其中,少样本提示利用样本数据进行模型训练,提高模型对特定任务的预测能力;

    ChatGPT 2023-02-18
    012.2K
  • openAI|嵌入超长文本

    本文介绍了两种处理超过OpenAI嵌入模型最大上下文长度的文本的方法,即简单截断文本和分块处理文本。通过本文,您可以了解到如何避免因超过最大长度而导致的错误,同时又不失去可能相关的文本内容。

    ChatGPT 2023-02-20
    003.1K
  • WeChat-ChatGPT|微信ChatGPT聊天机器人

    WeChat-ChatGPT支持Windows系统安装部署ChatGPT接入微信聊天服务,不用买服务器,无需繁琐的设置。但需要您必须掌握如何魔法上网,因为需要接入openAI的API Key服务支持。

    2023-05-02
    0174.8K
  • 如何使用 Azure OpenAI 微调 GPT-3

    本文【Azure 微调示例】介绍了使用 Azure 端点完成微调操作的流程。文章包括设置 API、文件操作、微调操作、以及如何使用微调模型创建一个部署。

    ChatGPT 2023-02-20
    012.0K
  • ChatGPT|HTML网页制作

    这是一个实战的教程,让你可以0基础搭建一个HTML静态网页,网页的界面和功能类似于本站之前为大家所搭建的Prompt模板网页,包含ChatGPT和VS Code工具的使用教程,让您可以快速搭建个人站。

    2023-07-19
    002.0K

发表回复

登录后才能评论

评论列表(1条)

微信