モデルが生成する回答の精度と豊富さを向上させるために、OpenSearch Vector Search Edition を大規模言語モデル (LLM) の検索拡張生成 (RAG) サービスに統合できます。このサービスは、さまざまなベクトル検索アルゴリズムをサポートし、典型的なシナリオで高いパフォーマンスを発揮します。また、インデックス情報を表示したり、簡単なデータ管理タスクを実行したりできるグラフィカルユーザーインターフェース (GUI) も提供します。OpenSearch Vector Search Edition を統合することで、RAG チャットボットの検索効率とユーザーエクスペリエンスが向上します。このトピックでは、RAG サービスをデプロイする際に OpenSearch Vector Search Edition を関連付ける方法について説明します。また、RAG チャットボットの基本機能と OpenSearch Vector Search Edition のユニークな機能についても説明します。
背景情報
EAS の概要
Elastic Algorithm Service (EAS) は、モデルをオンライン推論サービスまたは AI を活用した Web アプリケーションとしてデプロイできる PAI のオンラインモデルサービスプラットフォームです。EAS は、自動スケーリングやブルーグリーンデプロイメントなどの機能を提供します。これらの機能により、多数の同時リクエストを処理できる安定したオンラインモデルサービスを開発するコストが削減されます。さらに、EAS は、リソースグループ管理やモデルのバージョン管理などの機能、および包括的な O&M とモニタリングなどの機能を提供します。詳細については、「EAS の概要」をご参照ください。
RAG の概要
AI 技術の急速な発展に伴い、生成 AI はテキスト生成や画像生成など、さまざまな分野で目覚ましい成果を上げています。しかし、LLM が広く使用されるにつれて、次のような固有の限界が徐々に明らかになってきています。
分野知識の限界: ほとんどの場合、LLM は大規模な一般データセットを使用してトレーニングされます。この場合、LLM は専門的な垂直分野に対して、深く的を絞った処理を行うのに苦労します。
情報更新の遅延: トレーニングデータセットの静的な性質により、LLM はリアルタイムの情報や知識の更新にアクセスして取り込むことができません。
誤解を招く出力: LLM はハルシネーションを起こしやすく、もっともらしく見えるが事実とは異なる出力を生成する傾向があります。これは、データバイアスや固有のモデルの限界などの要因に起因します。
これらの課題に対処し、LLM の能力と精度を向上させるために、RAG が開発されました。RAG は外部のナレッジベースを統合して、LLM のハルシネーションの問題を大幅に軽減し、LLM が最新の知識にアクセスして適用する能力を向上させます。これにより、LLM をカスタマイズして、よりパーソナライズされ、精度を高めることができます。
OpenSearch の概要
Alibaba Cloud OpenSearch Vector Search Edition は、フルマネージドで大規模な分散ベクトル検索サービスです。さまざまなベクトル検索アルゴリズムをサポートし、高精度で優れたパフォーマンスを発揮します。大規模なデータセットに対して、費用対効果の高いベクトルインデックス構築および類似検索サービスを提供します。このサービスは、インデックスの水平スケーリングとマージ、ストリームベースのインデックス構築、および即時検索可能性のためのリアルタイムデータ更新をサポートしています。
Alibaba Cloud OpenSearch Vector Search Edition は、検索拡張生成 (RAG)、マルチモーダル検索、パーソナライズされた検索と推奨など、さまざまな典型的なベクトル検索シナリオに対して高性能なサポートを提供します。詳細については、「OpenSearch Vector Search Edition の概要」をご参照ください。
ワークフロー
EAS は、柔軟なパラメーター構成を備えた自己開発の RAG 体系的ソリューションを提供します。Web ユーザーインターフェース (UI) を使用するか、API 操作を呼び出して RAG サービスにアクセスし、カスタムの RAG ベースの LLM チャットボットを構成できます。RAG の技術アーキテクチャは、検索と生成に焦点を当てています。
検索: EAS は、オープンソースの Faiss や、Milvus、Elasticsearch、Hologres、OpenSearch、AnalyticDB for PostgreSQL などの Alibaba Cloud サービスを含む、さまざまなベクトルデータベースを統合しています。
生成: EAS は、Qwen、Meta Llama、Mistral、Baichuan などのさまざまなオープンソースモデルをサポートし、ChatGPT も統合しています。
このソリューションでは、OpenSearch を例として、EAS と Alibaba Cloud OpenSearch Vector Search Edition を使用して LLM RAG チャットボットを構築する方法を示します。プロセス全体で約 20 分かかります。フローは次のとおりです。
まず、OpenSearch Vector Search Edition インスタンスを作成し、RAG サービスをデプロイする際にインスタンスを関連付けるために必要な設定項目を準備します。
RAG サービスをデプロイし、OpenSearch に関連付ける
EAS プラットフォームに RAG サービスをデプロイし、OpenSearch Vector Search Edition インスタンスに関連付けます。
RAG チャットボットで OpenSearch に接続し、ビジネスデータファイルをアップロードして、Q&A セッションを実施できます。
前提条件
VPC、vSwitch、およびセキュリティグループが作成されていること。詳細については、「IPv4 CIDR ブロックを持つ VPC を作成する」および「セキュリティグループを作成する」をご参照ください。
注意
このソリューションは、サーバーリソースのサイズと LLM サービスのデフォルトのトークン制限によって制限され、サポートされる会話の長さに制約があります。このガイドは、RAG チャットボットの基本的な検索機能をテストするのに役立ちます。
OpenSearch ベクトル検索ライブラリを準備する
ステップ 1: OpenSearch Vector Search Edition インスタンスを作成する
OpenSearch コンソールにログインします。左上隅で、OpenSearch Vector Search Edition に切り替えます。
インスタンスリストページで、OpenSearch Vector Search Edition インスタンスを作成します。主要なパラメーターを以下に示します。その他のパラメーターの詳細については、「OpenSearch Vector Search Edition インスタンスを購入する」をご参照ください。
パラメーター
説明
製品バージョン
[Vector Search Edition] を選択します。
VPC
作成した VPC と vSwitch を選択します。
VSwitch
ユーザー名
OpenSearch Vector Search Edition インスタンスのユーザー名。
パスワード
OpenSearch Vector Search Edition インスタンスのパスワード。
ステップ 2: 設定項目を準備する
1. インスタンス ID を取得する
インスタンスリストページで、OpenSearch Vector Search Edition インスタンスのインスタンス ID を表示し、ローカルに保存します。

2. インデックステーブルを準備する
インスタンスが作成されると、そのステータスは[設定保留中]になります。インスタンスに対して[基本テーブル情報] > [データ同期] > [フィールド設定] > [インデックススキーマ]を設定する必要があります。その後、検索を実行する前に、インデックスが再構築されるのを待つ必要があります。手順は次のとおりです。
対象インスタンスの [アクション] 列で、[設定] をクリックします。
[基本テーブル情報] パラメーターを設定し、[次へ] をクリックします。
主要なパラメーターを以下に示します。その他のパラメーターの詳細については、「汎用型エディションのクイックスタート」をご参照ください。
テーブル名: インデックステーブルの名前を入力します。
データシャード数: QRS ワーカーを購入した場合、このパラメーターを最大 256 の正の整数に設定して、フルビルド速度と単一クエリのパフォーマンスを向上させることができます。QRS ワーカーを購入していない場合、このパラメーターは 1 にしか設定できません。
データ更新用リソース数: データ更新に使用されるリソースの数。デフォルトでは、OpenSearch は OpenSearch Vector Search Edition インスタンス内の各インデックスに対して、データ更新用に 2 つのリソースの無料クォータを提供します。各リソースは 4 CPU コアと 8 GB のメモリで構成されます。無料クォータを超えるリソースは課金されます。詳細については、「国際サイト (alibabacloud.com) の OpenSearch Vector Search Edition の課金概要」をご参照ください。
[シナリオテンプレート] で、[一般テンプレート] を選択します。
[データ同期] パラメーターを設定し、[次へ] をクリックします。
[完全データソース] では、ビジネスニーズに基づいて 3 つのデータソースタイプから 1 つを選択できます。
MaxCompute+API: MaxCompute を使用して完全データを書き込み、API を使用してリアルタイムデータを書き込みます。このメソッドのパラメーターの詳細については、「MaxCompute + API データソース」をご参照ください。
Object Storage Service (OSS)+API: OSS を使用して完全データ書き込みを行い、API を使用してリアルタイムデータ書き込みを行うことができます。このメソッドのパラメーターの詳細については、「OSS + API データソース」をご参照ください。
API: 完全データとリアルタイムデータの両方を書き込みます。
[フィールド設定] パラメーターを設定し、[次へ] をクリックします。
次のサンプルフィールド設定を JSON ファイルとして保存します。次に、右上隅の [フィールドインデックススキーマのインポート] をクリックし、コンソールの指示に従ってマニフェストをインポートします。マニフェストがインポートされると、フィールド設定とインデックススキーマがファイルから入力されます。
[インデックススキーマ] パラメーターを設定し、[次へ] をクリックします。
このセクションでは、主要なパラメーターについて説明します。その他のパラメーターの詳細については、「一般的なベクトルインデックス設定」をご参照ください。
[ベクトルディメンション] を 1024 に設定します。
距離タイプ: [内積] を選択することをお勧めします。
設定ウィザードの [作成の確認] ページで、[作成の確認] をクリックします。
自動的にテーブル管理ページにリダイレクトされます。[ステータス] が [使用中] になると、インデックステーブルが作成されたことを示します。
3. OpenSearch Vector Search Edition インスタンスのパブリックネットワークアクセスを有効にする
現在、EAS はインターネット経由でのみ OpenSearch にアクセスできます。したがって、EAS 用の VPC を追加し、NAT ゲートウェイと Elastic IP アドレス (EIP) を VPC にアタッチする必要があります。OpenSearch インスタンスが EAS インスタンスからのパブリックリクエストを受信できるようにするには、OpenSearch のパブリックネットワークアクセスを有効にし、EIP をパブリックアクセスホワイトリストに追加する必要があります。次の手順では、EAS VPC の OpenSearch へのパブリックネットワークアクセスを設定する方法について説明します。EAS は、OpenSearch と同じ VPC を使用することも、別の VPC を使用することもできます。
RAG サービスをデプロイする際にアタッチされる VPC のパブリックネットワークアクセスを設定します。詳細については、「インターネット NAT ゲートウェイの SNAT 機能を使用してインターネットにアクセスする」をご参照ください。
アタッチされた Elastic IP アドレスを表示します。
VPC コンソールにログインします。 VPC インスタンスの ID をクリックし、[リソース管理] タブに移動します。
アタッチされたインターネット NAT ゲートウェイをクリックして、その詳細ページに移動します。

インターネット NAT ゲートウェイインスタンス ID をクリックして、[基本情報] ページに移動します。
[アタッチされた EIP] をクリックして、アタッチされた EIP を表示し、ローカルに保存します。

OpenSearch Vector Search Edition のインスタンスリストページで、宛先インスタンスの名前をクリックして [インスタンス詳細] ページを開きます。
[ネットワーク情報] セクションで、[パブリックネットワークアクセス] スイッチをオンにします。表示される [パブリックアクセスホワイトリストの変更] 設定パネルで、前のステップで取得した Elastic IP アドレスをパブリックアクセスホワイトリストに追加します。
[ネットワーク情報] セクションで、[パブリックドメイン名] のエンドポイントをローカルに保存します。
4. インスタンスのユーザー名とパスワードを表示する
これは、OpenSearch Vector Search Edition インスタンスを作成したときに指定したユーザー名とパスワードです。これらの認証情報は、インスタンス詳細ページの [API エンドポイント] セクションで確認できます。
RAG サービスをデプロイし、OpenSearch に関連付ける
PAI コンソールにログインします。ページの上部でリージョンを選択します。次に、目的のワークスペースを選択し、[Elastic Algorithm Service (EAS)] をクリックします。
[推論サービス] タブで、[サービスのデプロイ] をクリックします。次に、[シナリオベースのモデルデプロイ] セクションで、[RAG ベースの LLM チャットボットのデプロイ] をクリックします。
[LLM 用 RAG チャットボットのデプロイ] ページで、次の主要なパラメーターを設定できます。その他のパラメーターの詳細については、「ステップ 1: RAG サービスをデプロイする」をご参照ください。
パラメーター
説明
基本情報
バージョン
[LLM 統合デプロイ] を選択します。
RAG バージョン
pai-rag:0.3.4 を選択します。
モデルカテゴリ
qwen1.5-1.8b を選択します。
リソース情報
デプロイリソース
システムは、選択したモデルカテゴリに基づいて適切なリソース仕様を自動的に推奨します。別のリソース仕様に切り替えると、モデルサービスが起動に失敗する可能性があります。
ベクトル検索ライブラリ設定
バージョンタイプ
[OpenSearch] を選択します。
エンドポイント
これを ステップ 2 で取得したパブリックドメイン名に設定します。http:// または https:// を含めないでください。例: ha-cn-****.public.ha.aliyuncs.com。
インスタンス ID
これを ステップ 2 で取得した OpenSearch Vector Search Edition インスタンスの ID に設定します。
ユーザー名
OpenSearch Vector Search Edition インスタンスを作成する際に設定したユーザー名に設定します。
パスワード
OpenSearch Vector Search Edition インスタンスを作成する際に設定したパスワードに設定します。
テーブル名
これを ステップ 2 で作成したインデックステーブルの名前に設定します。
OSS パス
現在のリージョンにある既存の OSS ストレージフォルダを選択します。ナレッジベース管理は、OSS パスをマウントすることで実装されます。
VPC
VPC
OpenSearch と同じ VPC と vSwitch を選択できます。
別の VPC を使用することもできますが、その VPC がパブリックネットワークにアクセスでき、アタッチされた Elastic IP アドレスが OpenSearch インスタンスのパブリックアクセスホワイトリストに追加されていることを確認する必要があります。詳細については、「インターネット NAT ゲートウェイの SNAT 機能を使用してインターネットにアクセスする」および「パブリックアクセスホワイトリストを設定する」をご参照ください。
VSwitch
セキュリティグループ名
セキュリティグループを選択します。
パラメーターを設定した後、[デプロイ] をクリックします。
RAG チャットボットを使用する
次のセクションでは、RAG ベースの LLM チャットボットの使用方法について説明します。詳細については、「LLM 用 RAG チャットボット」をご参照ください。
1. ベクトル検索ライブラリの設定を確認する
対象の RAG サービスの名前をクリックし、ページの右上隅にある [Web アプリの表示] をクリックします。
OpenSearch ベクトル検索ライブラリの設定が正しいかどうかを確認します。
システムは、検索拡張生成 (RAG) サービスデプロイメントのベクトル検索ライブラリ設定を適用して、`default` ナレッジベースを自動的に設定しました。[ベクトルデータベース設定] セクションで、OpenSearch の設定が正しいことを確認します。設定項目を更新してから、[ナレッジベースの更新] をクリックできます。
2. エンタープライズナレッジベースファイルをアップロードする
[ナレッジベース] タブの [ファイル管理] タブで、ナレッジベースファイルをアップロードします。
ナレッジベースがアップロードされると、システムは自動的にファイルを PAI-RAG 形式でベクトルデータベースに保存します。同じ名前のナレッジベースファイルの場合、FAISS 以外のベクトルデータベースは元のファイルを上書きします。サポートされているファイルタイプには、.html、.htm、.txt、.pdf、.pptx、.md、Excel (.xlsx または .xls)、.jsonl、.jpeg、.jpg、.png、.csv、および Word (.docx) があります。たとえば、rag_chatbot_test_doc.txt です。
3. Q&A セッションを実施する
[チャット] タブで、ナレッジベース名とインテントを選択します。[ナレッジベースのクエリ] を選択して、より多くのツールを使用します。その後、ナレッジベースの Q&A を実行できます。
OpenSearch 機能のサポート
Alibaba Cloud OpenSearch Vector Search Edition は、インデックステーブルとインデックスを効率的に管理するための便利なグラフィカルユーザーインターフェース (GUI) を提供します。次の内容では、OpenSearch Vector Search Edition コンソールを使用してインデックス情報を表示し、簡単なデータ管理タスクを実行する方法について説明します。
インデックス テーブルの管理
Alibaba Cloud OpenSearch Vector Search Edition インスタンスのインスタンス詳細ページに移動します。
Alibaba Cloud OpenSearch Vector Search Edition コンソールにログインします。
作成したインスタンスの ID をクリックして、[インスタンス詳細] ページに移動します。
テーブル管理ページに移動して、インデックステーブルを管理します。
左側のナビゲーションウィンドウで、[テーブル管理] をクリックします。
このページには、現在のインスタンス用に作成されたすべてのテーブルが表示されます。

テーブル管理ページでは、フィールドとインデックススキーマの表示、インデックスの編集、インデックスの再構築、インデックスの削除など、インデックステーブルに対する管理操作を実行できます。詳細については、「テーブル管理」をご参照ください。
データ管理
Alibaba Cloud OpenSearch Vector Search Edition インスタンスのインスタンス詳細ページに移動します。
Alibaba Cloud OpenSearch Vector Search Edition コンソールにログインします。
作成したインスタンスの ID をクリックして、[インスタンス詳細] ページに移動します。
データを追加します。
左側のナビゲーションウィンドウで、 を選択します。
ページの右側にあるドロップダウンリストから、[フォームモード] または [開発者モード] を選択します。

データを追加する宛先インデックステーブルの名前を選択します。
フィールドごとにデータコンテンツを入力するか、データ書き込みステートメントを記入し、[追加] をクリックします。詳細については、「データを追加する」をご参照ください。
実行結果に
"message": "success"と表示された場合、データはアップロードされています。単一または複数のデータエントリを追加できます。
テーブルメトリックデータを表示します。
左側のナビゲーションウィンドウで、 を選択します。
データを表示する宛先インデックステーブルの名前を選択します。その後、インデックス内のドキュメント数や 1 秒あたりの成功リクエスト数などのメトリックを表示できます。詳細については、「テーブルメトリック」をご参照ください。
データを削除します。
左側のナビゲーションウィンドウで、. を選択します。
ページの右側にあるドロップダウンリストから、[フォームモード] または [開発者モード] を選択します。
[テーブル名] を選択し、[主キー] を入力して、[削除] をクリックします。詳細については、「データを削除する」をご参照ください。
実行結果に
"message": "success"と表示された場合、データは削除されています。
リファレンス
EAS は、AI 生成コンテンツ (AIGC) と LLM の典型的な最先端シナリオに対して、簡素化されたデプロイ方法を提供します。ComfyUI、Stable Diffusion WebUI、ModelScope、Hugging Face、Triton Inference Server、TensorFlow Serving などのデプロイ方法を使用して、モデルサービスを簡単にデプロイできます。詳細については、「シナリオベースのデプロイ」をご参照ください。
RAG ベースの LLM チャットボットの Web UI でさまざまな推論パラメーターを設定して、多様な要件を満たすことができます。API 操作を呼び出して RAG ベースの LLM チャットボットを使用することもできます。実装の詳細とパラメーター設定の詳細については、「LLM 用 RAG チャットボット」をご参照ください。
LLM 用 RAG チャットボットは、Elasticsearch、RDS for PostgreSQL などの他のベクトル検索ライブラリとの関連付けもサポートしています。詳細については、「EAS と Elasticsearch を使用して検索拡張生成 (RAG) チャットボットを構築する」または「EAS と RDS for PostgreSQL を使用して検索拡張生成 (RAG) チャットボットを構築する」をご参照ください。