首頁  >  文章  >  後端開發  >  創建您自己的 AI RAG 聊天機器人:LangChain 的 Python 指南

創建您自己的 AI RAG 聊天機器人:LangChain 的 Python 指南

Patricia Arquette
Patricia Arquette原創
2024-10-20 14:15:30351瀏覽

誰不想從他們的文件中得到即時答案?這正是 RAG 聊天機器人所做的事——將檢索與人工智慧生成相結合,以實現快速、準確的回應!

在本指南中,我將向您展示如何使用 檢索增強生成 (RAG) 以及 LangChainStreamlit 創建聊天機器人。該聊天機器人將從知識庫中提取相關資訊並使用語言模型產生回應。

我將引導您完成每個步驟,提供多種回應產生選項,無論您使用OpenAIGeminiFireworks — 確保靈活且具有成本效益的解決方案。

什麼是檢索增強生成 (RAG)?

RAG 是一種結合了檢索產生的方法,以提供更準確和上下文感知的聊天機器人回應。檢索過程從知識庫中提取相關文檔,而生成過程則使用語言模型根據檢索到的內容創建連貫的回應。這可確保您的聊天機器人可以使用最新資料回答問題,即使語言模型本身尚未針對該資訊進行專門訓練。

想像一下您有一位私人助理,但他並不總是知道您問題的答案。因此,當你提出問題時,他們會翻閱書籍並找到相關資訊(檢索),然後他們總結這些資訊並用自己的話告訴你(產生)。這本質上就是 RAG 的工作原理,結合了兩全其美的優點。

在流程圖中,RAG 流程有點像這樣:

Create Your Own AI RAG Chatbot: A Python Guide with LangChain

現在,讓我們開始吧,建立我們自己的聊天機器人!


設定專案環境

本教學中我們將主要使用 Python,如果您是 JS 頭,您可以按照說明並瀏覽 langchain js 的文檔。

首先,我們需要設定專案環境。這包括建立專案目錄、安裝依賴項以及為不同語言模型設定 API 金鑰。

1. 建立專案資料夾和虛擬環境

先建立專案資料夾與虛擬環境:

mkdir rag-chatbot
cd rag-chatbot
python -m venv venv
source venv/bin/activate

2.安裝依賴項

接下來,建立一個requirements.txt 檔案來列出所有必要的依賴項:

langchain==0.0.329
streamlit==1.27.2
faiss-cpu==1.7.4
python-dotenv==1.0.0
tiktoken==0.5.1
openai==0.27.10
gemini==0.3.1
fireworks==0.4.0
sentence_transformers==2.2.2

現在,安裝這些相依性:

pip install -r requirements.txt

3. 設定 API 金鑰

我們將使用 OpenAIGeminiFireworks 來產生聊天機器人的回應。您可以根據自己的喜好選擇其中任何一個。

如果您正在嘗試,請不要擔心,Fireworks 免費提供價值 1 美元的 API 金鑰,gemini-1.5-flash 型號在一定程度上也是免費的!

設定 .env 檔案來儲存您首選模型的 API 金鑰:

mkdir rag-chatbot
cd rag-chatbot
python -m venv venv
source venv/bin/activate

請務必註冊這些服務並取得您的 API 金鑰。 GeminiFireworks 皆提供免費套餐,而 OpenAI 依使用情況收費。


文件處理和分塊

為了提供聊天機器人上下文,我們需要處理文件並將它們分成可管理的區塊。這很重要,因為需要分解大文本以進行嵌入和索引。

1.建立document_processor.py

建立一個名為 document_processor.py 的新 Python 腳本來處理文件處理:

langchain==0.0.329
streamlit==1.27.2
faiss-cpu==1.7.4
python-dotenv==1.0.0
tiktoken==0.5.1
openai==0.27.10
gemini==0.3.1
fireworks==0.4.0
sentence_transformers==2.2.2

此腳本載入一個文字文件,並將其分割成約 1000 個字元的較小區塊,並有少量重疊,以確保區塊之間不會遺失上下文。處理完成後,文件就可以嵌入並建立索引了。


建立嵌入和索引

現在我們已經對文件進行了分塊,下一步是將它們轉換為嵌入(文字的數字表示)並為它們建立索引以便快速檢索。 (因為機器理解數字比理解單字更容易)

1.創建embedding_indexer.py

建立另一個名為 embedding_indexer.py 的腳本:

pip install -r requirements.txt

在此腳本中,嵌入是使用 Hugging Face 模型(all-MiniLM-L6-v2)建立的。然後,我們將這些嵌入儲存在 FAISS 向量儲存中,這使我們能夠根據查詢快速檢索相似的文字區塊。


實施檢索和回應生成

令人興奮的部分來了:將檢索與語言生成結合!現在,您將建立一個 RAG 鏈 ,它從向量儲存中取得相關區塊並使用語言模型產生回應。 (向量儲存是一個資料庫,我們儲存轉換為數字作為向量的資料)

1.創建rag_chain.py

讓我們建立檔案 rag_chain.py:

# Uncomment your API key
# OPENAI_API_KEY=your_openai_api_key_here
# GEMINI_API_KEY=your_gemini_api_key_here
# FIREWORKS_API_KEY=your_fireworks_api_key_here

在這裡,我們根據您提供的 API 金鑰在 OpenAIGeminiFireworks 之間進行選擇。 RAG 鏈將檢索前 3 個最相關的文檔,並使用語言模型產生回應。

您可以根據自己的預算或使用偏好在模型之間切換 - GeminiFireworks 是免費的,而 OpenAI 根據使用情況收費。


建構聊天機器人介面

現在,我們將建立一個簡單的聊天機器人介面,以使用我們的 RAG 鏈獲取用戶輸入並產生回應。

1.創建chatbot.py

建立一個名為chatbot.py的新檔案:

mkdir rag-chatbot
cd rag-chatbot
python -m venv venv
source venv/bin/activate

此腳本建立一個命令列聊天機器人介面,持續偵聽使用者輸入,透過 RAG 鏈對其進行處理,並傳回產生的回應。


建立 Streamlit UI

是時候使用 Streamlit 建立 Web 介面,讓您的聊天機器人更加用戶友好。這將允許用戶透過瀏覽器與您的聊天機器人互動。

1.創建app.py

建立app.py:

langchain==0.0.329
streamlit==1.27.2
faiss-cpu==1.7.4
python-dotenv==1.0.0
tiktoken==0.5.1
openai==0.27.10
gemini==0.3.1
fireworks==0.4.0
sentence_transformers==2.2.2

2. 運行 Streamlit 應用程式

要運行您的 Streamlit 應用程序,只需使用:

pip install -r requirements.txt

這將啟動一個網頁介面,您可以在其中上傳文字檔案、提出問題並從聊天機器人接收答案。


優化效能

為了獲得更好的效能,您可以在分割文字時嘗試區塊大小和重疊。較大的區塊提供更多上下文,但較小的區塊可能使檢索速度更快。您也可以使用 Streamlit 快取 來避免重複產生嵌入等昂貴的操作。

如果您想要最佳化成本,可以依照查詢複雜度在OpenAIGeminiFireworks 之間切換— 使用OpenAI對於複雜的問題,GeminiFireworks 對於更簡單的問題以降低成本。


總結

恭喜!您已成功創建自己的基於 RAG 的聊天機器人。現在,可能性是無限的:

    創建您自己的個人化學習夥伴。
  • 不再需要查看冗長的文件 - 只需「RAG it out」即可獲得快速、準確的答案!
旅程從這裡開始,潛力無限!


您可以在 GitHub 上關注我的工作。請隨時與我聯繫 - 我的 DM 在 X 和 LinkedIn 上始終開放。

以上是創建您自己的 AI RAG 聊天機器人:LangChain 的 Python 指南的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn