OpenAI と Streamlit を使用したドキュメント検索および Q&A システムの構築
開発者コミュニティの皆さん、こんにちは! ?
今日は、私のプロジェクトである EzioDevIo RAG (Retrieval-Augmented Generation) について説明できることを嬉しく思います。このシステムにより、ユーザーは 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
?ヒント: プロジェクトをパブリック リポジトリにプッシュする場合に API キーが公開されるのを避けるために、.env が .gitignore ファイルに追加されていることを確認してください。
ステップ 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 アクションを使用した CI/CD のセットアップ
運用準備として、Docker イメージを構築、テスト、スキャンするための CI/CD パイプラインを追加します。このセットアップのリポジトリには .github/workflows ファイルがあります。
最終的な感想
このプロジェクトは、OpenAI の言語モデル機能とドキュメント検索を組み合わせて、機能的で対話型のツールを作成します。このプロジェクトを気に入っていただけた場合は、GitHub リポジトリにスターを付けて、Dev Community で私をフォローしてください。もっと素晴らしいプロジェクトを一緒に構築しましょう! ?
? GitHub リポジトリを表示しますか? EzioDevIo RAG プロジェクト GitHub リポジトリ!
以上がOpenAI と Streamlit を使用したドキュメント検索および Q&A システムの構築の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Pythonは学習と使用が簡単ですが、Cはより強力ですが複雑です。 1。Python構文は簡潔で初心者に適しています。動的なタイピングと自動メモリ管理により、使いやすくなりますが、ランタイムエラーを引き起こす可能性があります。 2.Cは、高性能アプリケーションに適した低レベルの制御と高度な機能を提供しますが、学習しきい値が高く、手動メモリとタイプの安全管理が必要です。

限られた時間でPythonの学習効率を最大化するには、PythonのDateTime、時間、およびスケジュールモジュールを使用できます。 1. DateTimeモジュールは、学習時間を記録および計画するために使用されます。 2。時間モジュールは、勉強と休息の時間を設定するのに役立ちます。 3.スケジュールモジュールは、毎週の学習タスクを自動的に配置します。

Pythonは開発効率でCよりも優れていますが、Cは実行パフォーマンスが高くなっています。 1。Pythonの簡潔な構文とリッチライブラリは、開発効率を向上させます。 2.Cのコンピレーションタイプの特性とハードウェア制御により、実行パフォーマンスが向上します。選択を行うときは、プロジェクトのニーズに基づいて開発速度と実行効率を比較検討する必要があります。

Pythonを1日2時間学ぶだけで十分ですか?それはあなたの目標と学習方法に依存します。 1)明確な学習計画を策定し、2)適切な学習リソースと方法を選択します。3)実践的な実践とレビューとレビューと統合を練習および統合し、統合すると、この期間中にPythonの基本的な知識と高度な機能を徐々に習得できます。

PythonとCにはそれぞれ独自の利点があり、選択はプロジェクトの要件に基づいている必要があります。 1)Pythonは、簡潔な構文と動的タイピングのため、迅速な開発とデータ処理に適しています。 2)Cは、静的なタイピングと手動メモリ管理により、高性能およびシステムプログラミングに適しています。

PythonListSarePartOfThestAndardarenot.liestareBuilting-in、versatile、forStoringCollectionsのpythonlistarepart。

Pythonは、自動化、スクリプト、およびタスク管理に優れています。 1)自動化:OSやShutilなどの標準ライブラリを介してファイルバックアップが実現されます。 2)スクリプトの書き込み:Psutilライブラリを使用してシステムリソースを監視します。 3)タスク管理:スケジュールライブラリを使用してタスクをスケジュールします。 Pythonの使いやすさと豊富なライブラリサポートにより、これらの分野で優先ツールになります。

科学コンピューティングにおけるPythonのアプリケーションには、データ分析、機械学習、数値シミュレーション、視覚化が含まれます。 1.numpyは、効率的な多次元配列と数学的関数を提供します。 2。ScipyはNumpy機能を拡張し、最適化と線形代数ツールを提供します。 3. Pandasは、データ処理と分析に使用されます。 4.matplotlibは、さまざまなグラフと視覚的な結果を生成するために使用されます。
