您好,开发社区! ?
今天,我很高兴向您介绍我的项目: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中文网其他相关文章!