ノート:
- このチュートリアルでは、Oracle Cloudへのアクセスが必要です。無料アカウントにサインアップするには、Oracle Cloud Infrastructure Free Tierの開始を参照してください。
- Oracle Cloud Infrastructureの資格証明、テナンシおよびコンパートメントの値の例を使用します。演習を完了するときに、これらの値をクラウド環境に固有の値に置き換えます。
OpenSearchを使用したOracle Cloud Infrastructure Searchを使用したRAGベースのチャットボットの作成
イントロダクション
このチュートリアルでは、ベクトル・データベースとしてOCI OpenSearchを使用し、OCI生成AIサービス・モデル(CohereやLlamaなど)を使用して、取得拡張生成(RAG)ベースのチャットボットを作成するプロセスを順を追って説明します。このチュートリアルの終わりまでに、ドキュメントを処理し、OpenSearchにベクトル埋込みとして格納し、会話中に関連情報を取得できるチャットボット・ソリューションを構築します。
さらに、Streamlitを使用して直感的なユーザー・インタフェースを作成し、ドキュメントのアップロード、チャットボットとの対話、関連情報への容易なアクセスを可能にします。このチュートリアルでは、環境の設定から、独自のPDFファイルを使用したチャットボットのテストまで、すべてを説明します。
目的
-
ドキュメントの埋込みを格納するために、OCIにOpenSearchクラスタを設定します。
-
Condaと必要な依存関係を使用して開発環境を構成します。
-
シームレスな統合のためにOCI認証を設定します。
-
チャットボット・エンジン・コードを記述および構成します。
-
Streamlitを使用して、ドキュメントのアップロードとチャットボットの問合せを行うインタラクティブなUIを構築します。
-
ドキュメント(PDF)をアップロードし、チャットボットと対話して問合せを行います。
前提条件
-
OpenSearchクラスタの作成に必要な権限を持つOCIアカウント。
-
Pythonがインストールされている仮想マシン(VM)。
-
ベクトル・データベースおよび大規模言語モデルに精通しています。
-
アプリケーション・プログラミング・インタフェース(API)とチャットボット・エンジン開発の基本的な理解。
-
OpenSearch IAMポリシーによる検索およびOCI生成AIポリシーを作成します。
タスク1: OpenSearchを使用したOCIでのOpenSearchクラスタの設定
-
クラスタの作成詳細は、OpenSearchを使用したOCI SearchでのOpenSearchクラスタの作成を参照してください
-
クラスタが作成されたら、APIエンドポイントとユーザー資格証明をコピーして、アプリケーションで構成します。
タスク2: Python環境の構成
-
OCIでOracle Linuxイメージと基本シェイプを使用してインスタンスを起動します。詳細については、Launching a Linux Instanceを参照してください。
-
Oracle LinuxにPython 3.11をインストールします。詳細は、Pythonのインストールを参照してください。
-
次のコマンドを実行して、Pythonのバージョンを更新します。
sudo update-alternatives --set python /usr/bin/python3.11
-
opensearch_rag_chatbot
という名前のプロジェクト・フォルダを作成します。 -
requirements.txt
という名前のファイルを作成して、作成されたフォルダに移動し、依存関係をインストールします。python -m venv venv source ./venv/bin/activate pip install -r requirements.txt
-
次のコマンドを実行して、Streamlitインストールをテストします。
streamlit hello
-
StreamlitおよびOpenSearchポート(
8501
/9200
)がファイアウォールで開いていない場合は、次のコマンドを使用して追加します。sudo firewall-cmd --list-all sudo firewall-cmd --permanent --add-port=8501/tcp sudo firewall-cmd --permanent --add-port=9200/tcp sudo firewall-cmd --reload
タスク3: OCI認証の設定
-
ホーム・ディレクトリに
.oci
フォルダを作成し、config
ファイルを設定します。[DEFAULT] user=ocid1.user.oc1.. fingerprint=40:02:56: key_file=/path/to/oci_api_key.pem tenancy=ocid1.tenancy.oc1.. region=us-region-1
ノート:詳細は、Oracle Date a Scienceの構成ファイルの作成を参照してください。
タスク4: チャットボット・エンジン・コードの記述
-
このプロジェクト構造に従ってコードベースを作成します。
opensearch_rag_chatbot/ ├── app.py # Main Streamlit app ├── chat_engine.py # Logic for RAG and GenAI integration ├── config.py # Config file for secrets and settings ├── ingest_data_opens.py # Script for processing and indexing PDFs in OpenSearch ├── oci_utils.py # Utility for OCI configurations
-
次のサンプル・コード・ファイルを作業例としてダウンロードします。
ノート:これらのサンプル・プログラムでは、特定のユースケースのカスタマイズおよび追加のエラー処理が必要になる場合があります。また、サンプルでは、ユーザー・プリンシパルを使用してOpenSearchクラスタとの接続を確立します。ただし、セキュリティを強化するために、シークレットや資格証明などの機密情報をOCI Vaultに格納することをお薦めします。その後、実行時にこれらのシークレットを動的にフェッチできます。シークレットのセキュアな管理と取得の詳細は、Vaultを使用したデータの保護を参照してください。
タスク5: ドキュメントのアップロードおよびチャットボットのテスト
-
次のコマンドを実行して、アプリケーションを実行します。
cd opensearch_rag_chatbot python -m venv venv source ./venv/bin/activate streamlit run app.py
-
生成されたURLをコピーして、Streamlitアプリケーションにアクセスします。PDFのアップロードを開始し、チャットボットの機能をテストします。
トラブルシューティングとヒント
-
接続エラー: OpenSearchクラスタURLおよび資格証明を確認します。
-
索引の問題:
config.py
のOpenSearch構成が正しいことを確認します。 -
PDF処理エラー: PDF形式の互換性を確認します。
-
構成チェック:
config.py
ファイルの正確性を再確認します。
ノート:ログは、操作およびエラーに関する詳細情報を提供するStreamlitコンソール出力にあります。
次のステップ
次のステップでは、WordやHTMLファイルなど、より多くのドキュメント形式のサポートを追加し、様々な埋込みモデルを試して、特定のドメインでのチャットボットのレスポンス精度を向上させることで、チャットボットを拡張することを検討してください。また、複数のドキュメントのアップロード、クエリ履歴、長いプロセスに対するリアルタイムのフィードバックのサポートなど、追加機能でStreamlit UIを拡張することもできます。
関連リンク
謝辞
- 著者 - Pavan Upadhyay (プリンシパル・クラウド・エンジニア)、Saket Bihari (プリンシパル・クラウド・エンジニア)
その他の学習リソース
docs.oracle.com/learnの他のラボを確認するか、Oracle Learning YouTubeチャネルで無料のラーニング・コンテンツにアクセスしてください。また、education.oracle.com/learning-explorerにアクセスしてOracle Learning Explorerになります。
製品ドキュメントは、Oracle Help Centerを参照してください。
Create RAG based Chatbot using Oracle Cloud Infrastructure Search with OpenSearch
G20428-01
November 2024