该存储库包含一个项目,该项目演示了如何使用OpenAI的GPT-4O模型和Pinecone Vector Database查询CSV数据集的方法。该项目涉及从CSV文件中的数据创建向量嵌入,将嵌入在Pinecone数据库中,然后使用自然语言查询查询矢量嵌入数据。
目录
介绍
先决条件
经过测试的平台和软件包
用法
摄取数据并创建嵌入
查询数据
它如何工作
执照
该项目展示了使用自然语言处理技术来查询存储在CSV文件中的数据。通过利用OpenAI的GPT-4模型和Pinecone的矢量数据库,我们可以为数据创建嵌入式,并使用这些嵌入来检索对用户查询的准确响应。
在开始之前,请确保您有以下内容:
API集成:要与OpenAI和Pinecone集成,您需要为这些平台获得并配置相应的API键,主机(Pinecone)信息。将您的OpenAI和Pinecone API键,以及Pinecone主机作为Linux中的环境变量。使用以下Linux命令导出这些变量:
导出openai_api_key ='your-openai-api-key'
导出pinecone_api_key ='your-pinecone-api-key'
导出pinecone_host ='your pinecone-host'
OpenAI API:OpenAI型号“ Text-Embedding-ADA-002”和“ GPT-4O”用于生成嵌入以及LLM支持。确保您拥有带有有效API键的OpenAI帐户。您可以从OpenAI平台(https://platform.openai.com/)获取API键并管理它们(https://platform.openai.com/organization/api-keys)。此外,请确保您的帐户具有足够的用法配额,因为本示例需要一个付费的OpenAI帐户。
Pinecone环境(Pinecone免费帐户使用https://www.pinecone.io/):1)使用Pinecone索引2)尺寸:1536 3)主机类型:无服务器。
CentOS Linux版本8.5.2111。创建虚拟环境(可选但建议)以隔离项目依赖性。
Python 3.8.8
熊猫2.0.3
Openai 1.30.3
Pinecone 4.0.0
Numpy 1.24.4
ArgParse 1.1
摄取数据并创建嵌入
csv_path =“ your_csv_file_path” [create-chunks-embeddings-store-vectordb-csv-dataset.py]
pinecone_index_name =“ your_pinecone_index_name” [create-chunks-embeddings-erbeddings--vectordb-csv-dataset.py]
index_name =“ your_pinecone_index_name” [query-prompt-for-vector-embeddings.py]
修改read_csv_data函数中的列标题以匹配CSV文件中的列。有关详细信息,请参见CSV文件部分的自定义。
您可以根据自己的需求使用OpenAI LLM型号:
Model =“ GPT-4O”,#您可以使用GPT-4或GPT-3.5-Turbo或其他OpenAI LLM型号。 [查询 - 武器 - 矢量 - embeddings.py]
运行脚本以读取数据,生成嵌入并将其存储在Pinecon中
#python create-chunks-embeddings-商店 - vectordb-csv-dataset.py
查询数据
#Python查询 - 武器 - vector-embeddings.py“您的查询在这里”
示例:python查询武器 - 矢量 - embeddings.py“告诉我电影xyz的情节”
输入您的下一个查询(或键入“退出”以退出):这部电影发行了哪一年?
将CSV数据块,创建向量嵌入并将嵌入在Pinecone数据库中
脚本“ create-chunks-embeddings-商店 - vectordb-csv-dataset.py”读取CSV文件,并将相关列组合到每行的单个文本字符串中。此文本字符串包括每行的列的详细信息 - 每一行都包含不同的信息(例如,电影的信息)。然后,每行的组合文本用于使用OpenAI的API生成嵌入。向量嵌入存储在松果指数中。
利用Openai的GPT-4 LLM
该项目以两种主要方式利用OpenAI的GPT-4大语言模型(LLM):
生成嵌入:CSV文件每一行的文本数据用作OpenAI嵌入模型(Text-Embedding-ADA-002)的输入。该模型将文本转换为高维矢量嵌入,该载体捕获文本的语义含义。然后将这些嵌入在Pinecone的矢量数据库中以有效检索。
自然语言查询:当用户提交查询时,脚本会使用相同的嵌入模型为查询文本生成嵌入。然后使用此查询嵌入来搜索Pinecone Vector数据库中最相似的文本块(即来自CSV文件的行)。检索相关的文本块并将其传递给OpenAI的GPT-4模型,以对用户查询产生全面且上下文准确的响应。
结合上下文以增强响应
为了确保响应是准确且相关的,该脚本维护了先前的查询和响应的上下文。此上下文与检索到的文本块相结合,为GPT-4提供了全面的信息视图。这种方法增强了模型在CSV文件中提供的数据中生成详细和准确答案的能力。
定制您的CSV文件
要确保脚本与CSV文件正确使用,请更新列“ create-chunks-embeddings-embeddings-vectordb-csv-dataset.py”,以匹配您的CSV文件中的列。这是如何自定义函数的示例:
#用户应该用他们要使用的列名列表替换列 - 下面的示例
列= [“等级”,“导演”,“类型”,“情节”,“ Actors”,“评级”]#用CSV文件的列名替换列
该项目是根据Apache 2.0许可证获得许可的。有关详细信息,请参见许可证文件。