大規模言語モデル(LLM)とベクトルデータベースを統合した検索拡張生成(RAG)チャットボットをデプロイします。Compute Nest は、Elastic Compute Service(ECS)インスタンス、AnalyticDB for PostgreSQL インスタンス、および Platform for AI(PAI)Elastic Algorithm Service(EAS)エンドポイントを含む、すべての必要リソースを単一のサービスインスタンスとして自動的にプロビジョニングします。
仕組み
このチャットボットは、Compute Nest が一括してデプロイする 3 つのコンポーネントで構成されます。
| コンポーネント | 役割 |
|---|---|
| ECS インスタンス | Web UI および API を提供する LangChain アプリケーションをホストします。ドキュメントのアップロード、チャンキング、および埋め込み処理を実行します。 |
| AnalyticDB for PostgreSQL インスタンス(弾力的ストレージモード) | ベクトルデータベースとして機能します。ドキュメントの埋め込みベクトルおよびメタデータを格納し、取得時にベクトル類似検索を実行します。 |
| PAI-EAS エンドポイント | 推論用の LLM をホストします。Llama 2-7b、Llama 2-13b、ChatGLM2-6b、Qwen-7B をサポートします。デプロイ後にモデルを切り替えることができます。 |
ユーザーがクエリを送信すると、LangChain サービスは AnalyticDB for PostgreSQL から関連するドキュメントチャンクを取得し、それをコンテキストとして PAI-EAS 上の LLM に渡して回答を生成し、その結果を返します。
機能
複数の LLM 対応 — Tongyi Qianwen-7b、ChatGLM-6b、Llama 2-7b、Llama 2-13b、 の中から選択できます。デプロイ後も任意のタイミングでモデルを切り替えることが可能です。
GPU クラスター管理 — テスト時は低リソースの GPU インスタンスから開始し、需要の増加に応じて弾力的にスケールアウトできます。
細かい権限制御 — AnalyticDB for PostgreSQL のデータベースレベル権限を活用してナレッジベースへのアクセスを制御します。オープンソースコードによるクエリ権限付与およびナレッジベース管理のための API 操作呼び出しをサポートします。
Web UI および API アクセス — ブラウザベースの UI を通じてチャットボットと対話するか、API を使用してアプリケーションに統合し、AI 生成コンテンツ(AIGC)ワークフローを構築できます。
データ隔離 — 業務データ、アルゴリズム、GPU リソースはすべてご利用のアカウント内に留まります。
課金
チャットボットのサービスインスタンスを作成すると、ECS インスタンスおよび弾力的ストレージモードの AnalyticDB for PostgreSQL インスタンスがプロビジョニングされます。これらのリソースは、設定時に選択した課金方法に基づいて課金されます。
| リソース | 課金リファレンス |
|---|---|
| Compute Nest | Compute Nest の課金概要 |
| ECS | ECS の課金の概要 |
| AnalyticDB for PostgreSQL | AnalyticDB for PostgreSQL の課金項目 |
前提条件
開始する前に、以下の条件を満たしていることを確認してください。
課金機能が有効化された Alibaba Cloud アカウント
サービスインスタンスを作成する RAM ユーザーに Resource Access Management(RAM)権限が付与されていること
操作動画
サービスインスタンスの作成
本セクションでは、Compute Nest の GenAI-LLM-RAG サービステンプレートを使用します。
Compute Nest コンソールのサービスマーケットプレイス ページに移動し、GenAI-LLM-RAG をクリックしてから、今すぐ起動 をクリックします。
サービスインスタンスの作成 ページで、以下のパラメーターを設定します。
カテゴリ パラメーター 説明 サービスインスタンス名 — サービスインスタンスの説明的な名前です。システムが自動的に名前を生成します。 リージョン — サービスインスタンス、ECS インスタンス、および AnalyticDB for PostgreSQL インスタンスがデプロイされるリージョンです。 課金タイプ構成 ECS インスタンスの課金タイプ ECS インスタンスの課金方法:従量課金 または サブスクリプション。 ECS 構成 インスタンスタイプ ECS インスタンスの仕様です。 インスタンスパスワード ECS インスタンスへのログインパスワードです。 IngressIP ECS インスタンスの IP アドレスホワイトリストです。LLM にアクセスする必要があるサーバーの IP アドレスを追加します。 PAI-EAS 構成 ModelType デプロイする LLM です。例:llama2-7b を選択します。 pai instance type PAI-EAS 向けの GPU 仕様です。 AnalyticDB PostgreSQL DBInstanceSpec AnalyticDB for PostgreSQL インスタンスの計算ノード仕様です。 SegmentStorageSize 計算ノードあたりのストレージ容量(GB 単位)です。 DB Username AnalyticDB for PostgreSQL インスタンスの特権アカウント名です。 Instance Password 特権アカウントのパスワードです。 モデルリポジトリの選択 User Name LLM ソフトウェア(Web UI)へのログイン名です。 Software Login Password LLM ソフトウェアへのログインパスワードです。 ゾーン構成 VSwitch の利用可能ゾーン サービスインスタンスがデプロイされるゾーンです。 既存のインフラストラクチャ構成の選択 WhetherCreateVpc 新規仮想プライベートクラウド(VPC)を作成するか、既存の VPC を使用するかを指定します。 VPC ID VPC の ID です。 VSwitch ID vSwitch の ID です。 タグおよびリソースグループ Tag サービスインスタンスにアタッチするタグです。 Resource Group サービスインスタンスのリソースグループです。詳細については、「Resource Management とは? 次へ:注文の確認 をクリックします。
依存関係チェック、サービスインスタンス情報、および 料金のプレビュー の各セクションを確認します。
説明 必要なロール権限が付与されていない場合、依存関係チェック セクションで 権限付与 をクリックします。権限付与が完了したら、更新ボタンをクリックします。Compute Nest サービス契約書を読み、同意しました を選択し、その後 今すぐ作成 をクリックします。
リクエストが送信された後、サービスの表示 をクリックします。
サービスインスタンスのプロビジョニングには約 10 分かかります。サービスインスタンス ページで、ステータスが デプロイ中 から デプロイ済み に変更された時点で、インスタンスが準備完了となります。
チャットボットの利用
チャットボットにクエリを実行する前に、ナレッジベースにドキュメントをアップロードする必要があります。
Compute Nest コンソール の サービスインスタンス ページで、サービスインスタンス ID をクリックして サービスインスタンスの詳細 ページを開きます。
インスタンス情報 セクションで、エンドポイント フィールドの URL をクリックします。
ナレッジベースにファイルをアップロードします。
ファイルのアップロード、ファイルおよび URL のアップロード、または フォルダーのアップロード をクリックします。
サポートされる形式:PDF、Markdown、TXT、Word。
ファイルを削除するには、ファイルの削除 をクリックします。
質問を入力し、送信 をクリックします。
リソースの管理
関連リソースの表示
Compute Nest コンソール の サービスインスタンス ページで、サービスインスタンス ID をクリックして サービスインスタンスの詳細 ページを開きます。
リソース タブをクリックして、プロビジョニングされたすべてのリソースを表示します。
AnalyticDB for PostgreSQL の管理
リソース タブで、サービスが AnalyticDB for PostgreSQL のリソースを見つけ、リソース ID をクリックしてインスタンス管理ページを開きます。
ベクトル分析操作については、以下をご参照ください。
ストレージおよび計算容量の調整については、以下をご参照ください。
ナレッジベースデータの表示
AnalyticDB for PostgreSQL インスタンス管理ページで、右上隅の [データベースにログオン] をクリックします。詳細については、「DMS を使用して AnalyticDB for PostgreSQL インスタンスに接続する」をご参照ください。
説明 Data Management(DMS)経由で接続する場合、サービスインスタンス作成時に設定した DB Username および Instance Password を使用します。ログイン後、左側のナビゲーションウィンドウで [接続済みインスタンス] をクリックし、AnalyticDB for PostgreSQL インスタンスを見つけ、
chatglmuserデータベースの public スキーマをダブルクリックします。langchain_collectionsテーブルには、ナレッジベースのメタデータが格納されています。アップロードされた各ナレッジベースまたはドキュメントには、それに応じた名前のテーブルが存在します。このテーブルには、埋め込みデータ、チャンク、ファイルのメタデータ、および元のファイル名が含まれています。
DMS の詳細については、「DMS とは」をご参照ください。
EAS の自動スケーリングの有効化
EAS は、自動スケーリング、スケジュールによるスケーリング、および弾性リソースプールを提供します。水平方向の自動スケーリングを有効化すると、EAS がトラフィックに基づいて自動的にインスタンス数を調整します。
リソース タブの サービスインスタンスの詳細 ページで、サービスが PAI のリソースを見つけ、リソース ID をクリックして PAI コンソールの サービスの詳細 ページに移動します。
自動スケーリング タブをクリックし、自動スケーリングの有効化 をクリックします。
スケーリングパラメーターを設定します。
パラメーター 説明 最小インスタンス数 維持する EAS インスタンスの最小数です。 最大インスタンス数 自動スケーリングの上限です。 一般的なスケーリングメトリック スケーリングをトリガーするメトリックです。個別インスタンスの QPS 閾値 を選択します。 個別インスタンスの QPS 閾値 インスタンスあたりのクエリ/秒(QPS)の閾値です。 設定例:
シナリオ 最小インスタンス数 最大インスタンス数 QPS 閾値 動作 低トラフィックまたはテスト環境 0 1 1 最初のリクエストでスケールアップし、アイドル状態になるとスケールダウンします。 可変負荷対応の生産 5 50 2 トラフィックに応じて 5~50 インスタンス間でスケールします。 有効化 をクリックします。
LLM の変更
リソース タブの サービスインスタンスの詳細 ページで、サービスが PAI のリソースを見つけ、リソース ID をクリックして PAI コンソールの サービスの詳細 ページに移動します。
サービスの更新 をクリックします。
「サービスのデプロイ」ページで、実行コマンド フィールドを変更し、対応する GPU の インスタンスタイプ を選択します。その他のパラメーターはデフォルト値のままにします。
LLM 実行コマンド 推奨 GPU Llama 2-13b python api/api_server.py --port=8000 --model-path=meta-llama/Llama-2-13b-chat-hf --precision=fp16V100(gn6e) Llama 2-7b python api/api_server.py --port=8000 --model-path=meta-llama/Llama-2-7b-chat-hfGU30 および A10 ChatGLM2-6b python api/api_server.py --port=8000 --model-path=THUDM/chatglm2-6bGU30 および A10 Qwen-7B python api/api_server.py --port=8000 --model-path=Qwen/Qwen-7B-ChatGU30 および A10 デプロイ をクリックします。
サービスのデプロイ ダイアログボックスで、OK をクリックします。
よくある質問
ベクトル検索 API を呼び出すにはどうすればよいですか?
詳細については、「Java SDK を使用したベクトルデータのインポートとクエリ」をご参照ください。
デプロイにはどのくらい時間がかかりますか?
サービスインスタンスのプロビジョニングには約 10 分かかり、これには ECS および AnalyticDB for PostgreSQL の初期化が含まれます。LLM のダウンロードは非同期で行われ、さらに 30~60 分かかります。ダウンロードの進捗を確認するには、ECS インスタンスに接続してダウンロードログを確認します。ダウンロードが完了すると、チャットボットが Web UI に表示されます。
ECS インスタンスに接続するにはどうすればよいですか?
サービスインスタンスの詳細ページの リソース タブで、タイプが セキュリティグループ のリソースを見つけ、リソース ID をクリックします。インスタンスの詳細タブで、接続 をクリックします。詳細については、「インスタンスへの接続」をご参照ください。
LangChain サービスを再起動するにはどうすればよいですか?
ECS インスタンスに接続して、以下のコマンドを実行します。
systemctl restart langchain-chatglmLangChain のログを確認するにはどうすればよいですか?
ECS インスタンスに接続して、以下のコマンドを実行します。
journalctl -ef -u langchain-chatglmLLM の読み込みに失敗した場合はどうすればよいですか?
サービスインスタンスの作成後、システムは Hugging Face から LLM をダウンロードします。中国リージョンでは、このダウンロードに 30~60 分かかります。ダウンロードが完了したら、ページをリフレッシュして LLM を読み込みます。
デプロイコードはどこにありますか?
「langchain-ChatGLM」をご参照ください。
サポートを依頼するにはどうすればよいですか?
「ワンストップ専用企業向けチャットボット運用・保守サービス」を申請してください。
LangChain サービスは ECS 上のどこにデプロイされていますか?
サービスは /home/admin/langchain-ChatGLM にデプロイされています。
LangChain API を有効化するにはどうすればよいですか?
ECS インスタンスに接続して、以下のコマンドを実行します。
# langchain-chatglm-api の systemd ファイルを作成
cp /lib/systemd/system/langchain-chatglm.service /lib/systemd/system/langchain-chatglm-api.service
# /lib/systemd/system/langchain-chatglm-api.service の ExecStart パラメーターを変更
# EAS の場合:
ExecStart=/usr/bin/python3.9 /home/langchain/langchain-ChatGLM/api.py
# GPU シングルホストの場合:
ExecStart=/usr/bin/python3.9 /home/admin/langchain-ChatGLM/api.py
# systemd ファイルを再読み込み
systemctl daemon-reload
# API を起動
systemctl restart langchain-chatglm-api
# API が実行中であることを確認(期待される出力):
# INFO: Uvicorn running on http://0.0.0.0:7861 (Press CTRL+C to quit)
# すべての API 操作を一覧表示
curl http://0.0.0.0:7861/openapi.json