誰不想從他們的文件中得到即時答案?這正是 RAG 聊天機器人所做的事——將檢索與人工智慧生成相結合,以實現快速、準確的回應!
在本指南中,我將向您展示如何使用 檢索增強生成 (RAG) 以及 LangChain 和 Streamlit 創建聊天機器人。該聊天機器人將從知識庫中提取相關資訊並使用語言模型產生回應。
我將引導您完成每個步驟,提供多種回應產生選項,無論您使用OpenAI、Gemini 或Fireworks — 確保靈活且具有成本效益的解決方案。
什麼是檢索增強生成 (RAG)?
RAG 是一種結合了檢索和產生的方法,以提供更準確和上下文感知的聊天機器人回應。檢索過程從知識庫中提取相關文檔,而生成過程則使用語言模型根據檢索到的內容創建連貫的回應。這可確保您的聊天機器人可以使用最新資料回答問題,即使語言模型本身尚未針對該資訊進行專門訓練。
想像一下您有一位私人助理,但他並不總是知道您問題的答案。因此,當你提出問題時,他們會翻閱書籍並找到相關資訊(檢索),然後他們總結這些資訊並用自己的話告訴你(產生)。這本質上就是 RAG 的工作原理,結合了兩全其美的優點。
在流程圖中,RAG 流程有點像這樣:
現在,讓我們開始吧,建立我們自己的聊天機器人!
設定專案環境
本教學中我們將主要使用 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 金鑰
我們將使用 OpenAI、Gemini 或 Fireworks 來產生聊天機器人的回應。您可以根據自己的喜好選擇其中任何一個。
如果您正在嘗試,請不要擔心,Fireworks 免費提供價值 1 美元的 API 金鑰,gemini-1.5-flash 型號在一定程度上也是免費的!
設定 .env 檔案來儲存您首選模型的 API 金鑰:
mkdir rag-chatbot cd rag-chatbot python -m venv venv source venv/bin/activate
請務必註冊這些服務並取得您的 API 金鑰。 Gemini 和 Fireworks 皆提供免費套餐,而 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 金鑰在 OpenAI、Gemini 或 Fireworks 之間進行選擇。 RAG 鏈將檢索前 3 個最相關的文檔,並使用語言模型產生回應。
您可以根據自己的預算或使用偏好在模型之間切換 - Gemini 和 Fireworks 是免費的,而 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 快取 來避免重複產生嵌入等昂貴的操作。
如果您想要最佳化成本,可以依照查詢複雜度在OpenAI、Gemini 或Fireworks 之間切換— 使用OpenAI對於複雜的問題,Gemini 或Fireworks 對於更簡單的問題以降低成本。
總結
恭喜!您已成功創建自己的基於 RAG 的聊天機器人。現在,可能性是無限的:
- 創建您自己的個人化學習夥伴。
- 不再需要查看冗長的文件 - 只需「RAG it out」即可獲得快速、準確的答案!
您可以在 GitHub 上關注我的工作。請隨時與我聯繫 - 我的 DM 在 X 和 LinkedIn 上始終開放。
以上是創建您自己的 AI RAG 聊天機器人:LangChain 的 Python 指南的詳細內容。更多資訊請關注PHP中文網其他相關文章!

要在有限的時間內最大化學習Python的效率,可以使用Python的datetime、time和schedule模塊。 1.datetime模塊用於記錄和規劃學習時間。 2.time模塊幫助設置學習和休息時間。 3.schedule模塊自動化安排每週學習任務。

Python在遊戲和GUI開發中表現出色。 1)遊戲開發使用Pygame,提供繪圖、音頻等功能,適合創建2D遊戲。 2)GUI開發可選擇Tkinter或PyQt,Tkinter簡單易用,PyQt功能豐富,適合專業開發。

Python适合数据科学、Web开发和自动化任务,而C 适用于系统编程、游戏开发和嵌入式系统。Python以简洁和强大的生态系统著称,C 则以高性能和底层控制能力闻名。

2小時內可以學會Python的基本編程概念和技能。 1.學習變量和數據類型,2.掌握控制流(條件語句和循環),3.理解函數的定義和使用,4.通過簡單示例和代碼片段快速上手Python編程。

Python在web開發、數據科學、機器學習、自動化和腳本編寫等領域有廣泛應用。 1)在web開發中,Django和Flask框架簡化了開發過程。 2)數據科學和機器學習領域,NumPy、Pandas、Scikit-learn和TensorFlow庫提供了強大支持。 3)自動化和腳本編寫方面,Python適用於自動化測試和系統管理等任務。

兩小時內可以學到Python的基礎知識。 1.學習變量和數據類型,2.掌握控制結構如if語句和循環,3.了解函數的定義和使用。這些將幫助你開始編寫簡單的Python程序。

如何在10小時內教計算機小白編程基礎?如果你只有10個小時來教計算機小白一些編程知識,你會選擇教些什麼�...

使用FiddlerEverywhere進行中間人讀取時如何避免被檢測到當你使用FiddlerEverywhere...


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

SublimeText3漢化版
中文版,非常好用

Atom編輯器mac版下載
最受歡迎的的開源編輯器

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

禪工作室 13.0.1
強大的PHP整合開發環境

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中