您好,開發社群! ?
今天,我很高興向您介紹我的專案:EzioDevIo RAG(檢索增強生成)。該系統允許用戶上傳 PDF 文檔,根據其內容提出問題,並接收由 OpenAI 的 GPT-3.5 Turbo 模型生成的即時答案。這對於導航大型文件或快速提取相關資訊特別有用。 ??
您可以在我的 GitHub 上找到完整的程式碼:EzioDevIo RAG 專案。讓我們深入研究該項目並分解每個步驟!
?深入了解 EzioDevIo RAG 專案 GitHub 儲存庫中的完整程式碼庫和設定說明!
專案概覽
你將學到什麼
*這是我們專案目錄的最終結構:*
RAG-project/ ├── .env # Environment variables (API key) ├── app.py # Streamlit app for the RAG system ├── document_loader.py # Code for loading and processing PDF documents ├── retriever.py # Code for indexing and retrieving documents ├── main.py # Main script for RAG pipeline ├── requirements.txt # List of required libraries ├── Dockerfile # Dockerfile for containerizing the app ├── .gitignore # Ignore sensitive and unnecessary files ├── data/ │ └── uploaded_pdfs/ # Folder to store uploaded PDFs └── images/ └── openai_api_setup.png # Example image for OpenAI API setup instructions
第 1 步:設定項目
先決條件
確保您擁有以下內容:
第 2 步:複製儲存庫並設定虛擬環境
2.1。克隆儲存庫
首先從 GitHub 克隆專案儲存庫並導航到專案目錄。
git clone https://github.com/EzioDEVio/RAG-project.git cd RAG-project
2.2。設定虛擬環境
若要隔離專案依賴性,請建立並啟動虛擬環境。這有助於防止與其他項目的套件發生衝突。
python -m venv venv source venv/bin/activate # On Windows, use `venv\Scripts\activate`
2.3。安裝依賴項
安裝requirements.txt中列出的所需Python庫。其中包括用於語言模型的 OpenAI、用於 UI 的 Streamlit、用於 PDF 處理的 PyMuPDF 以及用於高效相似性搜尋的 FAISS。
pip install -r requirements.txt
2.4。設定您的 OpenAI API 金鑰
在專案根目錄下建立.env檔。該文件將安全地儲存您的 OpenAI API 金鑰。將以下行加入文件中,將 your_openai_api_key_here 替換為您的實際 API 金鑰:
RAG-project/ ├── .env # Environment variables (API key) ├── app.py # Streamlit app for the RAG system ├── document_loader.py # Code for loading and processing PDF documents ├── retriever.py # Code for indexing and retrieving documents ├── main.py # Main script for RAG pipeline ├── requirements.txt # List of required libraries ├── Dockerfile # Dockerfile for containerizing the app ├── .gitignore # Ignore sensitive and unnecessary files ├── data/ │ └── uploaded_pdfs/ # Folder to store uploaded PDFs └── images/ └── openai_api_setup.png # Example image for OpenAI API setup instructions
?提示:確保將 .env 新增至您的 .gitignore 檔案中,以避免在將專案推送到公用儲存庫時暴露您的 API 金鑰。
第 3 步:了解專案結構
以下是目錄結構的快速概述,可協助您瀏覽程式碼:
以下是目錄結構的快速概述,可協助您瀏覽程式碼:
git clone https://github.com/EzioDEVio/RAG-project.git cd RAG-project
每個檔案都有特定的功能:
第 4 步:建立核心程式碼
現在,讓我們深入了解該專案的主要組成部分。
4.1。載入文件 (document_loader.py)
document_loader.py 檔案負責從 PDF 中提取文字。在這裡,我們使用 PyMuPDF 庫來處理 PDF 中的每個頁面並儲存文字。
python -m venv venv source venv/bin/activate # On Windows, use `venv\Scripts\activate`
說明:函數讀取指定資料夾中的所有PDF文件,提取每個頁面的文本,並將文本添加到字典列表中。每個字典代表一個文檔及其文字和檔案名稱。
4.2。文件索引與檢索 (retriever.py)
FAISS(Facebook AI相似性搜尋)幫助我們執行相似性搜尋。我們用它來建立文件嵌入的索引,這使我們能夠在使用者提出問題時檢索相關部分。
pip install -r requirements.txt
說明:
create_index:使用 OpenAIEmbeddings 將文件文字轉換為嵌入,並使用 FAISS 建立索引。
retrieve_documents:根據使用者查詢搜尋相關文件部分。
4.3。產生回應 (main.py)
此模組處理使用者查詢、檢索相關文件並使用 OpenAI 的語言模型產生答案。
OPENAI_API_KEY=your_openai_api_key_here
說明:
generate_response:使用檢索到的文件和使用者查詢的上下文建立提示,然後將其傳送到 OpenAI 的 API。然後將響應作為答案返回。
第 5 步:建立 Streamlit 介面 (app.py)
Streamlit 提供了一個互動式前端,使用戶可以輕鬆上傳文件和提問。
RAG-project/ ├── .env # Environment variables (API key) ├── app.py # Streamlit app for the RAG system ├── document_loader.py # Code for loading and processing PDF documents ├── retriever.py # Code for indexing and retrieving documents ├── main.py # Main script for RAG pipeline ├── requirements.txt # List of required libraries ├── Dockerfile # Dockerfile for containerizing the app ├── .gitignore # Ignore sensitive and unnecessary files ├── data/ │ └── uploaded_pdfs/ # Folder to store uploaded PDFs └── images/ └── openai_api_setup.png # Example image for OpenAI API setup instructions
說明:
第 6 步:對應用程式進行 Docker 化
Docker 可讓您將應用程式打包到容器中,從而輕鬆部署。
Dockerfile
RAG-project/ ├── .env # Environment variables (API key) ├── app.py # Streamlit app for the RAG system ├── document_loader.py # Code for loading and processing PDF documents ├── retriever.py # Code for indexing and retrieving documents ├── main.py # Main script for RAG pipeline ├── requirements.txt # List of required libraries ├── Dockerfile # Dockerfile for containerizing the app ├── .gitignore # Ignore sensitive and unnecessary files ├── data/ │ └── uploaded_pdfs/ # Folder to store uploaded PDFs └── images/ └── openai_api_setup.png # Example image for OpenAI API setup instructions
說明:
我們使用多階段構建來保持最終圖像的精簡。
為了安全起見,應用程式以非 root 使用者身分執行。
運行 Docker 容器
git clone https://github.com/EzioDEVio/RAG-project.git cd RAG-project
python -m venv venv source venv/bin/activate # On Windows, use `venv\Scripts\activate`
第 7 步:使用 GitHub Actions 設定 CI/CD
為了做好生產準備,請新增 CI/CD 管道來建置、測試和掃描 Docker 映像。您可以在儲存庫中找到此設定的 .github/workflows 檔案。
最後的想法
該專案將 OpenAI 的語言模型功能與文件檢索結合,創建一個功能性的互動式工具。如果您喜歡這個項目,請在 GitHub 儲存庫上加註星標,並在開發社群上關注我。讓我們一起打造更多精彩的項目! ?
?查看 GitHub 儲存庫? EzioDevIo RAG 專案 GitHub 儲存庫!
以上是使用 OpenAI 和 Streamlit 建立文件檢索和問答系統的詳細內容。更多資訊請關注PHP中文網其他相關文章!