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

相关推荐

  • GPT-3|代码编辑示例

    本文介绍了 OpenAI 的编辑端点如何用于编辑代码,通过 Python 函数的示例展示了如何添加文档字符串、添加测试、转换为其他语言等等操作,让代码更加完善、高效。

    ChatGPT 2023-02-20
    00779
  • GPT-3|文本写作示例

    本文介绍了如何使用GPT-3语言模型在各种写作任务中协助您,例如博客文章、电子邮件、广告文案等。使用简单的提示,GPT-3可以生成满足特定需求的文本。

    ChatGPT 2023-02-20
    00935
  • openAI|烹饪指南

    本文为站长提供了使用OpenAI API进行常见任务的示例代码,内容包括API接口、GPT-3、嵌入、微调GPT-3、DALL-E和Azure OpenAI等,示例代码大多数采用Python编写。

    ChatGPT 2023-02-19
    011.4K
  • ChatGPT登陆注册报错:OpenAI 的服务在您所在的国家/地区不可用的解决方法

    OpenAI’s services are not available in your country. (error=unsupported_country) ”
    OpenAI的服务在您所在的国家/地区不可用”解决方法

    ChatGPT 2022-12-11
    0138.3K
  • Auto-GPT-ZH|ChatGPT中文自动化

    Auto-GPT-ZH是一个支持中文的实验性开源应用程序,展示了GPT-4语言模型的能力。它具备互联网搜索、长期和短期记忆管理、文本生成、访问流行网站和平台等功能,使用GPT-3.5进行文件存储和摘要。使用该开源项目可以让您的ChatGPT拥有自动化处理的功能,让您抛弃繁琐的监督和纠错过程,本站提供完整的使用帮助教程。

    2023-04-20
    0123.1K

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

评论列表(1条)

微信