亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

首頁 后端開發(fā) Python教程 使用 OpenAI 和 Streamlit 構(gòu)建文檔檢索和問答系統(tǒng)

使用 OpenAI 和 Streamlit 構(gòu)建文檔檢索和問答系統(tǒng)

Nov 07, 2024 pm 03:50 PM

您好,開發(fā)社區(qū)! ?

今天,我很高興向您介紹我的項(xiàng)目:EzioDevIo RAG(檢索增強(qiáng)生成)。該系統(tǒng)允許用戶上傳 PDF 文檔,根據(jù)其內(nèi)容提出問題,并接收由 OpenAI 的 GPT-3.5 Turbo 模型生成的實(shí)時(shí)答案。這對(duì)于導(dǎo)航大型文檔或快速提取相關(guān)信息特別有用。 ??

Building a Document Retrieval & Q&A System with OpenAI and Streamlit

您可以在我的 GitHub 上找到完整的代碼:EzioDevIo RAG 項(xiàng)目。讓我們深入研究該項(xiàng)目并分解每個(gè)步驟!

?深入了解 EzioDevIo RAG 項(xiàng)目 GitHub 存儲(chǔ)庫中的完整代碼庫和設(shè)置說明!

項(xiàng)目概覽

你將學(xué)到什么

  1. 如何將 OpenAI 的語言模型與 PDF 文檔檢索集成。
  2. 如何使用 Streamlit 創(chuàng)建用戶友好的界面。
  3. 如何使用 Docker 將應(yīng)用程序容器化以方便部署。 項(xiàng)目特色
  • 上傳 PDF 并從中獲取信息。
  • 根據(jù)上傳的PDF內(nèi)容提問。
  • OpenAI 的 gpt-3.5-turbo 模型生成的實(shí)時(shí)響應(yīng)。
  • 使用 Docker 輕松部署以實(shí)現(xiàn)可擴(kuò)展性。

*這是我們項(xiàng)目目錄的最終結(jié)構(gòu):*

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 步:設(shè)置項(xiàng)目

先決條件

確保您擁有以下內(nèi)容:

  • Python 3.8:本地運(yùn)行應(yīng)用程序。
  • OpenAI API 密鑰:您需要它來訪問 OpenAI 的模型。在 OpenAI API 上注冊(cè)以獲取您的密鑰。
  • Docker:可選,但建議將應(yīng)用程序容器化以進(jìn)行部署。

第 2 步:克隆存儲(chǔ)庫并設(shè)置虛擬環(huán)境

2.1。克隆存儲(chǔ)庫
首先從 GitHub 克隆項(xiàng)目存儲(chǔ)庫并導(dǎo)航到項(xiàng)目目錄。

git clone https://github.com/EzioDEVio/RAG-project.git
cd RAG-project

2.2。設(shè)置虛擬環(huán)境
要隔離項(xiàng)目依賴性,請(qǐng)創(chuàng)建并激活虛擬環(huán)境。這有助于防止與其他項(xiàng)目的包發(fā)生沖突。

python -m venv venv
source venv/bin/activate  # On Windows, use `venv\Scripts\activate`

2.3。安裝依賴項(xiàng)
安裝requirements.txt中列出的所需Python庫。其中包括用于語言模型的 OpenAI、用于 UI 的 Streamlit、用于 PDF 處理的 PyMuPDF 以及用于高效相似性搜索的 FAISS。

pip install -r requirements.txt

2.4。配置您的 OpenAI API 密鑰
在項(xiàng)目根目錄下創(chuàng)建.env文件。該文件將安全地存儲(chǔ)您的 OpenAI API 密鑰。將以下行添加到文件中,將 your_openai_api_key_here 替換為您的實(shí)際 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 文件中,以避免在將項(xiàng)目推送到公共存儲(chǔ)庫時(shí)暴露您的 API 密鑰。

第 3 步:了解項(xiàng)目結(jié)構(gòu)
以下是目錄結(jié)構(gòu)的快速概述,可幫助您瀏覽代碼:
以下是目錄結(jié)構(gòu)的快速概述,可幫助您瀏覽代碼:

git clone https://github.com/EzioDEVio/RAG-project.git
cd RAG-project

每個(gè)文件都有特定的作用:

  • app.py:管理 Streamlit 界面,允許用戶上傳文件和提問。
  • document_loader.py:使用 PyMuPDF 處理 PDF 的加載和處理。
  • retriever.py:使用 FAISS 索引文檔文本并根據(jù)用戶查詢檢索相關(guān)部分。
  • main.py:將所有內(nèi)容聯(lián)系在一起,包括調(diào)用 OpenAI 的 API 來生成響應(yīng)。

第 4 步:構(gòu)建核心代碼
現(xiàn)在,讓我們深入了解該項(xiàng)目的主要組成部分。

4.1。加載文檔 (document_loader.py)
document_loader.py 文件負(fù)責(zé)從 PDF 中提取文本。在這里,我們使用 PyMuPDF 庫來處理 PDF 中的每個(gè)頁面并存儲(chǔ)文本。

python -m venv venv
source venv/bin/activate  # On Windows, use `venv\Scripts\activate`

說明:該函數(shù)讀取指定文件夾中的所有PDF文件,提取每個(gè)頁面的文本,并將文本添加到字典列表中。每個(gè)字典代表一個(gè)文檔及其文本和文件名。

4.2。文檔索引和檢索 (retriever.py)
FAISS(Facebook AI相似性搜索)幫助我們執(zhí)行相似性搜索。我們用它來創(chuàng)建文檔嵌入的索引,這使我們能夠在用戶提出問題時(shí)檢索相關(guān)部分。

pip install -r requirements.txt

說明:

create_index:使用 OpenAIEmbeddings 將文檔文本轉(zhuǎn)換為嵌入,并使用 FAISS 創(chuàng)建索引。
retrieve_documents:根據(jù)用戶查詢搜索相關(guān)文檔部分。

4.3。生成響應(yīng) (main.py)
該模塊處理用戶查詢、檢索相關(guān)文檔并使用 OpenAI 的語言模型生成答案。

OPENAI_API_KEY=your_openai_api_key_here

說明:

generate_response:使用檢索到的文檔和用戶查詢的上下文創(chuàng)建提示,然后將其發(fā)送到 OpenAI 的 API。然后將響應(yīng)作為答案返回。

第 5 步:創(chuàng)建 Streamlit 界面 (app.py)
Streamlit 提供了一個(gè)交互式前端,使用戶可以輕松上傳文件和提問。

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 創(chuàng)建一個(gè)簡單的 UI,允許用戶上傳 PDF 并輸入問題。
  • 當(dāng)用戶點(diǎn)擊“獲取答案”時(shí),應(yīng)用程序會(huì)檢索相關(guān)文檔并生成答案。

第 6 步:對(duì)應(yīng)用程序進(jìn)行 Docker 化
Docker 允許您將應(yīng)用程序打包到容器中,從而輕松部署。

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

說明:

我們使用多階段構(gòu)建來保持最終圖像的精簡。
為了安全起見,應(yīng)用程序以非 root 用戶身份運(yùn)行。

運(yùn)行 Docker 容器

  1. 構(gòu)建 Docker 鏡像:
git clone https://github.com/EzioDEVio/RAG-project.git
cd RAG-project

  1. 運(yùn)行容器:
python -m venv venv
source venv/bin/activate  # On Windows, use `venv\Scripts\activate`

第 7 步:使用 GitHub Actions 設(shè)置 CI/CD
為了做好生產(chǎn)準(zhǔn)備,請(qǐng)?zhí)砑?CI/CD 管道來構(gòu)建、測(cè)試和掃描 Docker 映像。您可以在存儲(chǔ)庫中找到此設(shè)置的 .github/workflows 文件。

最后的想法
該項(xiàng)目將 OpenAI 的語言模型功能與文檔檢索相結(jié)合,創(chuàng)建一個(gè)功能性的交互式工具。如果您喜歡這個(gè)項(xiàng)目,請(qǐng)?jiān)?GitHub 存儲(chǔ)庫上加注星標(biāo),并在開發(fā)社區(qū)上關(guān)注我。讓我們一起打造更多精彩的項(xiàng)目! ?

?查看 GitHub 存儲(chǔ)庫? EzioDevIo RAG 項(xiàng)目 GitHub 存儲(chǔ)庫!

以上是使用 OpenAI 和 Streamlit 構(gòu)建文檔檢索和問答系統(tǒng)的詳細(xì)內(nèi)容。更多信息請(qǐng)關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本站聲明
本文內(nèi)容由網(wǎng)友自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,本站不承擔(dān)相應(yīng)法律責(zé)任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請(qǐng)聯(lián)系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

人工智能驅(qū)動(dòng)的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用于從照片中去除衣服的在線人工智能工具。

Clothoff.io

Clothoff.io

AI脫衣機(jī)

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智能換臉工具輕松在任何視頻中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

功能強(qiáng)大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)代碼編輯軟件(SublimeText3)

熱門話題

Laravel 教程
1597
29
PHP教程
1488
72
Python類中的多態(tài)性 Python類中的多態(tài)性 Jul 05, 2025 am 02:58 AM

多態(tài)是Python面向?qū)ο缶幊讨械暮诵母拍?,指“一種接口,多種實(shí)現(xiàn)”,允許統(tǒng)一處理不同類型的對(duì)象。1.多態(tài)通過方法重寫實(shí)現(xiàn),子類可重新定義父類方法,如Animal類的speak()方法在Dog和Cat子類中有不同實(shí)現(xiàn)。2.多態(tài)的實(shí)際用途包括簡化代碼結(jié)構(gòu)、增強(qiáng)可擴(kuò)展性,例如圖形繪制程序中統(tǒng)一調(diào)用draw()方法,或游戲開發(fā)中處理不同角色的共同行為。3.Python實(shí)現(xiàn)多態(tài)需滿足:父類定義方法,子類重寫該方法,但不要求繼承同一父類,只要對(duì)象實(shí)現(xiàn)相同方法即可,這稱為“鴨子類型”。4.注意事項(xiàng)包括保持方

解釋Python發(fā)電機(jī)和迭代器。 解釋Python發(fā)電機(jī)和迭代器。 Jul 05, 2025 am 02:55 AM

迭代器是實(shí)現(xiàn)__iter__()和__next__()方法的對(duì)象,生成器是簡化版的迭代器,通過yield關(guān)鍵字自動(dòng)實(shí)現(xiàn)這些方法。1.迭代器每次調(diào)用next()返回一個(gè)元素,無更多元素時(shí)拋出StopIteration異常。2.生成器通過函數(shù)定義,使用yield按需生成數(shù)據(jù),節(jié)省內(nèi)存且支持無限序列。3.處理已有集合時(shí)用迭代器,動(dòng)態(tài)生成大數(shù)據(jù)或需惰性求值時(shí)用生成器,如讀取大文件時(shí)逐行加載。注意:列表等可迭代對(duì)象不是迭代器,迭代器到盡頭后需重新創(chuàng)建,生成器只能遍歷一次。

如何處理Python中的API身份驗(yàn)證 如何處理Python中的API身份驗(yàn)證 Jul 13, 2025 am 02:22 AM

處理API認(rèn)證的關(guān)鍵在于理解并正確使用認(rèn)證方式。1.APIKey是最簡單的認(rèn)證方式,通常放在請(qǐng)求頭或URL參數(shù)中;2.BasicAuth使用用戶名和密碼進(jìn)行Base64編碼傳輸,適合內(nèi)部系統(tǒng);3.OAuth2需先通過client_id和client_secret獲取Token,再在請(qǐng)求頭中帶上BearerToken;4.為應(yīng)對(duì)Token過期,可封裝Token管理類自動(dòng)刷新Token;總之,根據(jù)文檔選擇合適方式,并安全存儲(chǔ)密鑰信息是關(guān)鍵。

如何一次迭代兩個(gè)列表 如何一次迭代兩個(gè)列表 Jul 09, 2025 am 01:13 AM

在Python中同時(shí)遍歷兩個(gè)列表的常用方法是使用zip()函數(shù),它會(huì)按順序配對(duì)多個(gè)列表并以最短為準(zhǔn);若列表長度不一致,可使用itertools.zip_longest()以最長為準(zhǔn)并填充缺失值;結(jié)合enumerate()可同時(shí)獲取索引。1.zip()簡潔實(shí)用,適合成對(duì)數(shù)據(jù)迭代;2.zip_longest()處理不一致長度時(shí)可填充默認(rèn)值;3.enumerate(zip())可在遍歷時(shí)獲取索引,滿足多種復(fù)雜場(chǎng)景需求。

什么是Python型提示? 什么是Python型提示? Jul 07, 2025 am 02:55 AM

typeHintsInpyThonsolverbromblemboyofambiguityandPotentialBugSindyNamalytyCodeByallowingDevelopsosteSpecefectifyExpectedTypes.theyenhancereadability,enablellybugdetection,andimprovetool.typehintsupport.typehintsareadsareadsareadsareadsareadsareadsareadsareadsareaddedusidocolon(

什么是Python迭代器? 什么是Python迭代器? Jul 08, 2025 am 02:56 AM

Inpython,IteratorSareObjectSthallowloopingThroughCollectionsByImplementing_iter __()和__next __()。1)iteratorsWiaTheIteratorProtocol,使用__ITER __()toreTurnterateratoratoranteratoratoranteratoratorAnterAnteratoratorant antheittheext__()

解釋Python斷言。 解釋Python斷言。 Jul 07, 2025 am 12:14 AM

Assert是Python用于調(diào)試的斷言工具,當(dāng)條件不滿足時(shí)拋出AssertionError。其語法為assert條件加可選錯(cuò)誤信息,適用于內(nèi)部邏輯驗(yàn)證如參數(shù)檢查、狀態(tài)確認(rèn)等,但不能用于安全或用戶輸入檢查,且應(yīng)配合清晰提示信息使用,僅限開發(fā)階段輔助調(diào)試而非替代異常處理。

Python Fastapi教程 Python Fastapi教程 Jul 12, 2025 am 02:42 AM

要使用Python創(chuàng)建現(xiàn)代高效的API,推薦使用FastAPI;其基于標(biāo)準(zhǔn)Python類型提示,可自動(dòng)生成文檔,性能優(yōu)越。安裝FastAPI和ASGI服務(wù)器uvicorn后,即可編寫接口代碼。通過定義路由、編寫處理函數(shù)并返回?cái)?shù)據(jù),可以快速構(gòu)建API。FastAPI支持多種HTTP方法,并提供自動(dòng)生成的SwaggerUI和ReDoc文檔系統(tǒng)。URL參數(shù)可通過路徑定義捕獲,查詢參數(shù)則通過函數(shù)參數(shù)設(shè)置默認(rèn)值實(shí)現(xiàn)。合理使用Pydantic模型有助于提升開發(fā)效率和準(zhǔn)確性。

See all articles