該存儲庫包含一個項目,該項目演示瞭如何使用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許可證獲得許可的。有關詳細信息,請參見許可證文件。