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

相关推荐

  • api_request_parallel_processor.py

    API 请求并行处理器使用OpenAI API快速处理大量文本需要小心。如果您逐一提交百万个API请求,它们将需要数天时间才能完成。如果您并行涌入一百万个API请求,它们将超出速率限制并因错误而失败。

    ChatGPT 2023-02-18
    002.6K
  • ChatGPT|全方使用位攻略指南

    本文中介绍了如何注册ChatGPT、ChatGPT Plus会员、ChatGPT常见报错问题解决等问题。ChatGPT是由OpenAI训练的大型语言模型,可以进行语言处理、知识回答等多种应用。

    2022-12-10
    024.5K
  • Visual-ChatGPT|对话生成图像

    关于Visual-ChatGPT的出图效果其实很一般,因为全部都过文字描述去执行功能,这真的远没有您点几点鼠标轻松,而且对中文的支持也没有所描述的那样友好,还需要openAI的API接口做为使用条件。

    ChatGPT 2023-04-08
    031.7K
  • openAI|获取数据集

    本文将演示如何使用OpenAI API来进行情感分析,通过一个美食评论数据集的案例,让大家了解如何将评论汇总为一个嵌入向量。

    ChatGPT 2023-02-20
    001.9K
  • GPT Engineer|自动编程

    通过GPT Engineer你可以快速生成Github代码库,并学习你的编码风格。指定您想要构建的内容,AI会根据你的要求进行构建。该项目开发者可以在文本文件中提交需求,然后让AI来帮你快速生成代码。

    ChatGPT 2023-06-25
    001.8K

发表回复

登录后才能评论

评论列表(1条)

微信