您好,开发社区! ?
今天,我很高兴向您介绍我的项目:EzioDevIo RAG(检索增强生成)。该系统允许用户上传 PDF 文档,根据其内容提出问题,并接收由 OpenAI 的 GPT-3.5 Turbo 模型生成的实时答案。这对于导航大型文档或快速提取相关信息特别有用。 ??
您可以在我的 GitHub 上找到完整的代码:EzioDevIo RAG 项目。让我们深入研究该项目并分解每个步骤!
?深入了解 EzioDevIo RAG 项目 GitHub 存储库中的完整代码库和设置说明!
项目概览
你将学到什么
- 如何将 OpenAI 的语言模型与 PDF 文档检索集成。
- 如何使用 Streamlit 创建用户友好的界面。
- 如何使用 Docker 将应用程序容器化以方便部署。 项目特色
- 上传 PDF 并从中获取信息。
- 根据上传的PDF内容提问。
- OpenAI 的 gpt-3.5-turbo 模型生成的实时响应。
- 使用 Docker 轻松部署以实现可扩展性。
*这是我们项目目录的最终结构:*
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 步:设置项目
先决条件
确保您拥有以下内容:
- Python 3.8:本地运行应用程序。
- OpenAI API 密钥:您需要它来访问 OpenAI 的模型。在 OpenAI API 上注册以获取您的密钥。
- Docker:可选,但建议将应用程序容器化以进行部署。
第 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
每个文件都有特定的作用:
- app.py:管理 Streamlit 界面,允许用户上传文件和提问。
- document_loader.py:使用 PyMuPDF 处理 PDF 的加载和处理。
- retriever.py:使用 FAISS 索引文档文本并根据用户查询检索相关部分。
- main.py:将所有内容联系在一起,包括调用 OpenAI 的 API 来生成响应。
第 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
说明:
- 此代码使用 Streamlit 创建一个简单的 UI,允许用户上传 PDF 并输入问题。
- 当用户点击“获取答案”时,应用程序会检索相关文档并生成答案。
第 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 容器
- 构建 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中文网其他相关文章!

Linux终端中查看Python版本时遇到权限问题的解决方法当你在Linux终端中尝试查看Python的版本时,输入python...

本文解释了如何使用美丽的汤库来解析html。 它详细介绍了常见方法,例如find(),find_all(),select()和get_text(),以用于数据提取,处理不同的HTML结构和错误以及替代方案(SEL)

本文比较了Tensorflow和Pytorch的深度学习。 它详细介绍了所涉及的步骤:数据准备,模型构建,培训,评估和部署。 框架之间的关键差异,特别是关于计算刻度的

在使用Python的pandas库时,如何在两个结构不同的DataFrame之间进行整列复制是一个常见的问题。假设我们有两个Dat...

本文指导Python开发人员构建命令行界面(CLIS)。 它使用Typer,Click和ArgParse等库详细介绍,强调输入/输出处理,并促进用户友好的设计模式,以提高CLI可用性。

本文讨论了诸如Numpy,Pandas,Matplotlib,Scikit-Learn,Tensorflow,Tensorflow,Django,Blask和请求等流行的Python库,并详细介绍了它们在科学计算,数据分析,可视化,机器学习,网络开发和H中的用途

文章讨论了虚拟环境在Python中的作用,重点是管理项目依赖性并避免冲突。它详细介绍了他们在改善项目管理和减少依赖问题方面的创建,激活和利益。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

SublimeText3 英文版
推荐:为Win版本,支持代码提示!

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

WebStorm Mac版
好用的JavaScript开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

SublimeText3 Linux新版
SublimeText3 Linux最新版