搜尋
首頁後端開發Python教學創建您自己的 AI RAG 聊天機器人:LangChain 的 Python 指南

誰不想從他們的文件中得到即時答案?這正是 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
Python:深入研究彙編和解釋Python:深入研究彙編和解釋May 12, 2025 am 12:14 AM

pythonisehybridmodeLofCompilation和interpretation:1)thepythoninterpretercompilesourcecececodeintoplatform- interpententbybytecode.2)thepythonvirtualmachine(pvm)thenexecutecutestestestestestesthisbytecode,ballancingEaseofuseEfuseWithPerformance。

Python是一種解釋或編譯語言,為什麼重要?Python是一種解釋或編譯語言,為什麼重要?May 12, 2025 am 12:09 AM

pythonisbothinterpretedAndCompiled.1)它的compiledTobyTecodeForportabilityAcrosplatforms.2)bytecodeisthenInterpreted,允許fordingfordforderynamictynamictymictymictymictyandrapiddefupment,儘管Ititmaybeslowerthananeflowerthanancompiledcompiledlanguages。

對於python中的循環時循環與循環:解釋了關鍵差異對於python中的循環時循環與循環:解釋了關鍵差異May 12, 2025 am 12:08 AM

在您的知識之際,而foroopsareideal insinAdvance中,而WhileLoopSareBetterForsituations則youneedtoloopuntilaconditionismet

循環時:實用指南循環時:實用指南May 12, 2025 am 12:07 AM

ForboopSareSusedwhenthentheneMberofiterationsiskNownInAdvance,而WhileLoopSareSareDestrationsDepportonAcondition.1)ForloopSareIdealForiteratingOverSequencesLikelistSorarrays.2)whileLeleLooleSuitableApeableableableableableableforscenarioscenarioswhereTheLeTheLeTheLeTeLoopContinusunuesuntilaspecificiccificcificCondond

Python:它是真正的解釋嗎?揭穿神話Python:它是真正的解釋嗎?揭穿神話May 12, 2025 am 12:05 AM

pythonisnotpuroly interpred; itosisehybridablectofbytecodecompilationandruntimeinterpretation.1)PythonCompiLessourceceCeceDintobyTecode,whitsthenexecececected bytybytybythepythepythepythonvirtirtualmachine(pvm).2)

與同一元素的Python串聯列表與同一元素的Python串聯列表May 11, 2025 am 12:08 AM

concatenateListSinpythonWithTheSamelements,使用:1)operatoTotakeEpduplicates,2)asettoremavelemavphicates,or3)listcompreanspherensionforcontroloverduplicates,每個methodhasdhasdifferentperferentperferentperforentperforentperforentperfornceandordorimplications。

解釋與編譯語言:Python的位置解釋與編譯語言:Python的位置May 11, 2025 am 12:07 AM

pythonisanterpretedlanguage,offeringosofuseandflexibilitybutfacingperformancelanceLimitationsInCricapplications.1)drightingedlanguageslikeLikeLikeLikeLikeLikeLikeLikeThonexecuteline-by-line,允許ImmediaMediaMediaMediaMediaMediateFeedBackAndBackAndRapidPrototypiD.2)compiledLanguagesLanguagesLagagesLikagesLikec/c thresst

循環時:您什麼時候在Python中使用?循環時:您什麼時候在Python中使用?May 11, 2025 am 12:05 AM

Useforloopswhenthenumberofiterationsisknowninadvance,andwhileloopswheniterationsdependonacondition.1)Forloopsareidealforsequenceslikelistsorranges.2)Whileloopssuitscenarioswheretheloopcontinuesuntilaspecificconditionismet,usefulforuserinputsoralgorit

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具