> 自媒体 > (AI)人工智能 > 教程:使用 Chroma 和 OpenAI 构建自定义问答机器人
教程:使用 Chroma 和 OpenAI 构建自定义问答机器人
来源:岱军
2023-08-08 18:01:04
808
管理

翻译自 Tutorial: Use Chroma and OpenAI to Build a Custom Q&A Bot 。

在上一个教程中,我们探讨了 Chroma 作为一个向量数据库来存储和检索嵌入。现在,让我们将用例扩展到基于 OpenAI 和检索增强生成(RAG)技术构建问答应用程序。

在最初为学院奖构建问答机器人时,我们实现了基于一个自定义函数的相似性搜索,该函数计算两个向量之间的余弦距离。我们将用一个查询替换掉该函数,以在Chroma中搜索存储的集合。

为了完整起见,我们将开始设置环境并准备数据集。这与本教程中提到的步骤相同。

步骤1 - 准备数据集

从 Kaggle 下载奥斯卡奖数据集,并将 CSV 文件移到名为 data 的子目录中。该数据集包含 1927 年至 2023 年奥斯卡金像奖的所有类别、提名和获奖者。我将 CSV 文件重命名为 oscars.csv 。

首先导入 Pandas 库并加载数据集:

import pandas as pddf = pd.read_csv('./data/oscars.csv')df.head()

让我们将此列表转换为一个字符串,以为提示提供上下文。

res = "n".join(str(item) for item in results['documents'][0])

是时候根据上下文构建提示并将其发送到OpenAI了。

prompt = f'```{res}```Based on the data in ```, answer who won the award for the original song' messages = [ {"role": "system", "content": "You answer questions about 95th Oscar awards."}, {"role": "user", "content": prompt}]response = openai.ChatCompletion.create( model="gpt-3.5-turbo", messages=messages, temperature=0)response_message = response["choices"][0]["message"]["content"]

响应包括基于上下文和提示的组合得出的正确回答。

本教程演示了如何利用诸如 Chroma 之类的向量数据库来实现检索增强生成(RAG),以通过额外的上下文增强提示。

以下是完整的代码,供您探索:

import pandas as pdimport openaiimport chromadbfrom chromadb.utils import embedding_functionsimport osdf=pd.read_csv('./data/oscars.csv')df=df.loc[df['year_ceremony'] == 2023]df=df.dropna(subset=['film'])df['category'] = df['category'].str.lower()df['text'] = df['name'] ' got nominated under the category, ' df['category'] ', for the film ' df['film'] ' to win the award'df.loc[df['winner'] == False, 'text'] = df['name'] ' got nominated under the category, ' df['category'] ', for the film ' df['film'] ' but did not win'def text_embedding(text) -> None: response = openai.Embedding.create(model="text-embedding-ada-002", input=text) return response["data"][0]["embedding"]openai_ef = embedding_functions.OpenAIEmbeddingFunction( api_key=os.environ["OPENAI_API_KEY"], model_name="text-embedding-ada-002" )client = chromadb.Client()collection = client.get_or_create_collection("oscars-2023",embedding_function=openai_ef)docs=df["text"].tolist() ids= [str(x) for x in df.index.tolist()]collection.add( documents=docs, ids=ids)vector=text_embedding("Nominations for music")results=collection.query( query_embeddings=vector, n_results=15, include=["documents"])res = "n".join(str(item) for item in results['documents'][0])prompt=f'```{res}```who won the award for the original song'messages = [ {"role": "system", "content": "You answer questions about 95th Oscar awards."}, {"role": "user", "content": prompt}]response = openai.ChatCompletion.create( model="gpt-3.5-turbo", messages=messages, temperature=0)response_message = response["choices"][0]["message"]["content"]print(response_message)

1
点赞
赏礼
赏钱
0
收藏
免责声明:本文仅代表作者个人观点,与本站无关。其原创性以及文中陈述文字和内容未经本网证实,对本文以及其中全部或者 部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。 凡本网注明 “来源:XXX(非本站)”的作品,均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对 其真实性负责。 如因作品内容、版权和其它问题需要同本网联系的,请在一周内进行,以便我们及时处理。 QQ:617470285 邮箱:617470285@qq.com
相关文章
新车|2030年前仍继续提供,宝马M车型未来或将取消手动挡..
文:懂车帝原创 杨凯文[懂车帝原创 产品] 日前,据德国媒体AMS报道,宝马..
聚焦可持续发展与科技创新领域,宝马集团与宁德时代签署合作谅解备忘录..
2月25日,宝马集团董事长齐普策随德国总理默茨访华。全球经济格局正经历..
600匹马力5系!国内到店实拍宝石青宝马i5 M60
601马力 3.8秒破百,M性能与豪华质感拉满,纯电旗舰气场无敌。下面这组到..
谁敢把家里的奔驰宝马全卖了换它?三千公里长途实测出答案..
谁能想到,有人竟把家里的奔驰、宝马、英菲尼迪全卖了,一股脑换成零跑?..
宝马CEO最新涉华表态:对中国庞大市场与创新潜力视而不见的人,正错失巨大..
来源:环球网 【环球网报道 记者 姜蔼玲】据路透社报道,宝马集团首席执..
默茨专机抵京,第一道难关出现!宝马CEO通知政府,中方有言在先..
这两天默茨的“访问”可以看做是一次硬碰硬的试算:对内对外都必须强硬,..
默茨专机抵京,第一道难关出现!宝马公开喊话政府,中方亮明底线..
专机引擎的轰鸣声刚在北京上空消散,一场没有硝烟的博弈,已然拉开序幕。..
假期将尽,与宝马“的卢”合影,专治各种“过不去”..
假期最后一天还是来了 明天是节后第一个工作日 此刻的你是否已收拾心情做..
宝马接入中国AI技术,德企为何深耕本土化?
德企深耕本土化是为了抓住中国市场的巨大潜力和创新优势,以维持全球竞争..
关于作者
感恩的人(普通会员)
文章
1924
关注
0
粉丝
0
点击领取今天的签到奖励!
签到排行

成员 网址收录40418 企业收录2986 印章生成263660 电子证书1157 电子名片68 自媒体105600

1
0
分享
请选择要切换的马甲:

个人中心

每日签到

我的消息

内容搜索