OpenSearch Vector Search Editionを検索拡張世代 (RAG) ベースの大規模言語モデル (LLM) チャットボットと統合して、生成された応答の精度と情報の豊富さを向上させることができます。 OpenSearch Vector Search Editionは、さまざまなベクトル検索アルゴリズムをサポートし、複数の典型的なシナリオで高性能を提供します。 グラフィカルインターフェイスを使用して、インデックス情報を表示し、簡単なデータ管理を実装できます。 OpenSearch Vector Search Editionは、RAGベースのチャットボットの検索効率とユーザーエクスペリエンスを向上させることができます。 このトピックでは、RAGベースのLLMチャットボットをデプロイするときに、RAGベースのLLMチャットボットにOpenSearchを関連付ける方法について説明します。 このトピックでは、RAGベースのLLMチャットボットが提供する基本機能と、OpenSearch Vector Search Editionが提供する特別な機能についても説明します。
背景情報
EASの紹介
Elastic Algorithm Service (EAS) は、PAIのオンラインモデルサービスプラットフォームであり、モデルをオンライン推論サービスまたはAIを利用したwebアプリケーションとして展開できます。 EASは、自動スケーリングや青緑色の展開などの機能を提供します。 これらの機能により、多数の同時リクエストを処理できる安定したオンラインモデルサービスの開発コストが削減されます。 さらに、EASは、リソースグループ管理やモデルのバージョン管理などの機能と、包括的なO&Mや監視などの機能を提供します。 詳細については、「EASの概要」をご参照ください。
RAGの紹介
AI技術の急速な発展に伴い、ジェネレーティブAIは、テキスト生成や画像生成など、さまざまな分野で目覚ましい成果を上げてきました。 ただし、LLMが広く使用されている間、次の固有の制限が徐々に現れます。
フィールドナレッジ制限: ほとんどの場合、LLMは大規模な一般的なデータセットを使用してトレーニングされます。 この場合、LLMは、特殊な垂直フィールドのための徹底的でターゲットを絞った処理を提供するのに苦労します。
情報更新遅延: トレーニングデータセットの静的な性質は、LLMがリアルタイムの情報および知識更新にアクセスして組み込むことを妨げる。
誤解を招く出力: LLMは幻覚を起こしやすく、もっともらしいように見えますが、事実上正しくない出力を生成します。 これは、データバイアスや固有のモデル制限などの要因によるものです。
これらの課題に対処し、LLMの機能と精度を高めるために、RAGが開発されています。 RAGは、外部の知識ベースを統合して、LLM幻覚の問題を大幅に軽減し、最新の知識にアクセスして適用するLLMの機能を強化します。 これにより、LLMのカスタマイズが可能になり、パーソナライズと精度が向上します。
OpenSearchの概要
OpenSearch Vector Search Editionは、Alibaba Cloudによって開発された大規模な分散検索エンジンです。 OpenSearch Vector Search Editionは、さまざまなベクトル検索アルゴリズムをサポートし、高精度シナリオで高いパフォーマンスを提供します。 OpenSearch Vector Search Editionは、費用対効果の高いベクトルインデックスの構築と大量のデータの類似性検索、水平インデックスの拡張とマージ、ストリーミングインデックスの構築、データのリアルタイム更新の機能を提供します。
OpenSearch Vector Search Editionは、RAG、マルチモーダル検索、パーソナライズされた推奨事項などの典型的なシナリオで高性能を提供できます。 詳細については、「OpenSearchベクトル検索版とは何ですか?」をご参照ください。
手順
EASは、柔軟なパラメータ構成で自己開発のRAG体系的ソリューションを提供します。 webユーザーインターフェイス (UI) を使用するか、API操作を呼び出してカスタムRAGベースのLLMチャットボットを構成することで、RAGサービスにアクセスできます。 RAGの技術アーキテクチャは、検索と生成に焦点を当てています。
検索: EASは、Milvus、Elasticsearch、Hologres、OpenSearch、AnalyticDB for PostgreSQLなどのオープンソースのFaissおよびAlibaba Cloudサービスを含むさまざまなベクターデータベースを統合します。
世代: EASはQwen、Meta Llama、MistralおよびBaichuanのようなさまざまなオープンソースモデルを支え、またChatGPTを統合します。
この例では、OpenSearchを使用して、Elastic Algorithm Service (EAS) とOpenSearch Vector Search Editionを使用してRAGベースのLLMチャットボットをデプロイする方法を示します。 全体の手順は約20分かかります。
OpenSearch Vector Search Editionインスタンスの準備
OpenSearch Vector Search Editionインスタンスを作成し、RAGベースのLLMチャットボットがOpenSearch Vector Search Editionインスタンスに関連付けるための設定項目を準備します。
RAGベースのLLMチャットボットをデプロイし、OpenSearch Vector Search Editionインスタンスに関連付ける
RAGベースのLLMチャットボットをデプロイし、EASのOpenSearch Vector Search Editionインスタンスに関連付けます。
RAGベースのLLMチャットボットでOpenSearch Vector Search Editionインスタンスに接続し、ビジネスデータファイルをアップロードして、ナレッジQ&Aを実行できます。
前提条件
仮想プライベートクラウド (VPC) 、vSwitch、およびセキュリティグループが作成されます。 詳細については、「IPv4 CIDRブロックを使用したVPCの作成」および「セキュリティグループの作成」をご参照ください。
注意事項
この方法は、LLMサービスのトークンの最大数に左右され、RAGベースのLLMチャットボットの基本的な検索機能を理解するのに役立つように設計されています。
チャットボットは、LLMサービスのサーバーリソースサイズとトークンのデフォルト数によって制限されます。 チャットボットがサポートする会話の長さも制限されています。
複数回の会話を実行する必要がない場合は、WebUIページでチャットボットのチャット履歴機能を無効にすることを推奨します。 これは、限界に達する可能性を効果的に低減する。 詳細については、「RAGベースのチャットボットのチャット履歴機能を無効にするにはどうすればよいですか?」をご参照ください。
OpenSearch Vector Search Editionインスタンスの準備
手順1: OpenSearch Vector Search Editionインスタンスの作成
OpenSearchコンソールにログインします。 左上隅で、OpenSearch Vector Search Editionに切り替えます。
[インスタンス管理] ページで、[インスタンスの作成] をクリックします。 次の表に、主要なパラメーターを示します。 その他のパラメーターについては、「OpenSearch Vector Search Editionインスタンスの購入」をご参照ください。
パラメーター
説明
サービス版
[ベクトル検索エディション] を選択します。
[VPC]
仮想プライベートクラウド (VPC) とvSwitchを選択します。
VSwitch
ユーザー名
OpenSearch Vector Search Editionインスタンスのユーザー名。
Password
OpenSearch Vector Search Editionインスタンスのパスワード。
ステップ2: 設定アイテムの準備
1. インスタンスのIDを準備する
[インスタンス] ページで、目的のインスタンスを見つけ、OpenSearch Vector Search EditionインスタンスのIDを表示し、そのIDをオンプレミスマシンに保存します。
2. インデックステーブルの準備
インスタンスの作成後、インスタンスのステータスは [保留中の設定] に変わります。 インスタンスのテーブル基本情報 > データ同期 > フィールド設定 > インデックススキーマを設定する必要があります。 次に、インデックスが再構築されるまで待ちます。 テーブルを追加するには、次の手順を実行します。
インスタンスの [操作] 列で [設定] をクリックします。
[基本テーブル情報] パラメーターを設定し、[次へ] をクリックします。
次の重要なパラメータに注意してください。 その他のパラメーターについては、「一般的なシナリオの開始方法」をご参照ください。
テーブル名: テーブル名を入力します。
データシャード: クエリノードを購入した場合、値を256以下の正の整数に設定できます。 これにより、インデックス作成が高速化され、クエリのパフォーマンスが向上します。 クエリノードを購入しない場合、値は1でなければなりません。
Number of Resources for Data Updates: データの更新に使用されるリソースの数。 デフォルトでは、OpenSearchは、OpenSearch Vector Search Editionインスタンスの各インデックスのデータ更新用に2つのリソースの無料クォータを提供します。 各リソースは、4つのCPUコアと8 GBのメモリで構成されています。 無料クォータを超えるリソースに対して課金されます。 詳細については、「国際サイト (alibabacloud.com) のOpenSearch Vector Search Editionの課金の概要」をご参照ください。
シナリオテンプレート: [共通テンプレート] を選択します。
[データ同期] パラメーターを設定し、[次へ] をクリックします。
ビジネス要件に基づいて完全なデータソースを選択します。
MaxCompute + API: MaxComputeデータソースをフルデータソースとして使用し、APIを使用して増分データをプッシュします。 その他のパラメーターについては、「MaxComputeデータソース用のテーブルの作成」をご参照ください。
OSS + API: OSSを完全なデータソースとして使用し、APIを使用して増分データをプッシュします。 その他のパラメーターについては、「OSSデータソース用のテーブルの作成」をご参照ください。
API: 完全および増分データソースとしてAPIを使用します。
[フィールド設定] パラメーターを設定し、[次へ] をクリックします。
次のサンプルコードをJSONファイルとして保存します。 次に、右上隅の [フィールドインデックススキーマのインポート] をクリックし、JSONファイルをインポートします。 フィールドとインデックススキーマは、ファイルに基づいて構成されます。
[インデックススキーマ] パラメーターを設定し、[次へ] をクリックします。
次の重要なパラメータに注意してください。 その他のパラメーターについては、「ベクトルインデックスの一般的な設定」をご参照ください。
Vector Dimension: 値を512に設定します。
距離タイプ: InnerProductを選択することを推奨します。
[確認] ステップで、[確認] をクリックします。
[テーブル管理] ページが表示されます。 StatusパラメーターがIn Useに変わると、テーブルが作成されます。
3. OpenSearch Vector Search Editionインスタンスのインターネットアクセスの設定
EASはインターネット経由でのみOpenSearchにアクセスできます。 そのため、EASにVPCを追加し、NATゲートウェイとElastic IP Address (EIP) をVPCに関連付ける必要があります。 また、OpenSearch Vector Search Editionインスタンスのインターネットアクセスを設定し、EIPをホワイトリストに追加する必要があります。 次の手順を実行して、OpenSearch Vector Search EditionインスタンスとEASに関連付けられたVPC間のインターネットアクセスを設定します。 EASに関連付けられているVPCは、必ずしもOpenSearch Vector Search Editionインスタンスに関連付けられているVPCではありません。
EASに関連付けられたVPCのインターネットアクセスを設定します。 詳細については、「インターネットNATゲートウェイのSNAT機能を使用したインターネットへのアクセス」をご参照ください。
関連付けられたEIPを表示します。
VPCコンソールにログインします。 目的のVPCを見つけて、VPCのインスタンスID /名前列でIDをクリックします。 VPC詳細ページの [基本情報] タブで、[リソース管理] タブをクリックします。
表示されるタブの [インターネットへのアクセス] セクションで、関連するインターネットNATゲートウェイをクリックします。
[インターネットNATゲートウェイ] ページで、目的のインターネットNATゲートウェイを見つけ、インターネットNATゲートウェイの [インスタンスID /名前] 列のIDをクリックします。
インターネットNATゲートウェイの詳細ページの [基本情報] タブで、[関連するEIP] タブをクリックして、関連するEIPを表示し、オンプレミスマシンに保存します。
OpenSearch Vector Search Editionの [インスタンス] ページで、目的のインスタンスを見つけ、インスタンスの [インスタンス名 /ID] 列で名前をクリックします。 [インスタンス情報] ページが表示されます。
[ネットワーク情報] セクションで、[パブリックアクセス] をオンにします。 [パブリックアクセスのホワイトリストの変更] パネルで、プロンプトの指示に基づいて、前の手順で取得したEIPをホワイトリストに追加します。
[ネットワーク情報] セクションで、[パブリックエンドポイント] をオンプレミスマシンに保存します。
4. OpenSearch Vector Search Editionインスタンスのユーザー名とパスワードを表示する
[APIエンドポイント] セクションで、OpenSearch Vector Search Editionインスタンスの作成時に設定したユーザー名とパスワードを表示します。
RAGベースのLLMチャットボットをデプロイし、OpenSearch Vector Search Editionインスタンスに関連付ける
PAI コンソールにログインします。 リージョンとワークスペースを選択します。 次に、[Elastic Algorithm Service (EAS) の入力] をクリックします。
[Elastic Algorithm Service (EAS)] ページで、[サービスのデプロイ] をクリックします。 [シナリオベースのモデル展開] セクションで、[RAGベースのスマートダイアログ展開] をクリックします。
[RAGベースのLLM Chatbotデプロイ] ページで、次の表に示す主要なパラメーターを設定します。 その他のパラメーターについては、「手順1: RAGサービスのデプロイ」をご参照ください。
パラメーター
説明
基本情報
モデルソース
[オープンソースモデル] を選択します。
モデルタイプ
モデルタイプを選択します。 この例では、Qwen1.5 − 1.8bが使用される。
リソース設定
リソース設定
システムは、選択したモデルタイプに基づいて適切なリソース仕様を推奨します。 他のリソース仕様を使用すると、モデルサービスの起動に失敗することがあります。
ベクトルデータベース设定
Vectorデータベース型
[OpenSearch] を選択します。
Endpoint
手順2で取得したパブリックエンドポイントをhttp:// またはhttps:// なしで入力します。 例: ha-cn-**** .public.ha.aliyuncs.com
インスタンスID
ステップ2で取得したOpenSearch Vector Search EditionインスタンスのIDを入力します。
ユーザー名
OpenSearch Vector Search Editionインスタンスのユーザー名を入力します。
Password
OpenSearch Vector Search Editionインスタンスのパスワードを入力します。
テーブル名
ステップ2で作成したインデックステーブルの名前を入力します。
VPC設定 (オプション)
[VPC]
OpenSearchと同じVPCとvSwitchを選択します。
別のVPCを使用することもできます。 ただし、VPCがインターネットにアクセスできることを確認し、VPCのEIPをOpenSearch Vector Search Editionインスタンスのホワイトリストに追加する必要があります。 詳細については、「インターネットNATゲートウェイのSNAT機能を使用したインターネットへのアクセス」および「パブリックアクセスホワイトリストの設定」をご参照ください。
vSwitch
セキュリティグループ名
セキュリティグループを選択します。
パラメーターを設定したら、[デプロイ] をクリックします。
RAGベースのLLMチャットボットの使用
次のセクションでは、RAGベースのLLMチャットボットの使用方法について説明します。 詳細については、「RAGベースのLLMチャットボット」をご参照ください。
1. RAGベースのLLMチャットボットの設定
RAGベースのチャットボットをデプロイした後、[サービスタイプ] 列の [Webアプリの表示] をクリックしてweb UIに移動します。
OpenSearch Vector Search Editionインスタンスが接続されているかどうかを確認します。
システムは、チャットボットのデプロイ時に構成されるベクターデータベース設定を認識して適用します。 [OpenSearchの接続] をクリックして、OpenSearch Vector Search Editionインスタンスが接続されているかどうかを確認します。 接続に失敗した場合は、手順2: 設定項目の準備に基づいて、ベクターデータベースが正しく設定されているかどうかを確認します。 次に、[OpenSearchの接続] をクリックして、OpenSearch Vector Search Editionインスタンスに再接続します。
2. ビジネスデータファイルのアップロード
ナレッジベースファイルをアップロードします。 システムは、知識ベースをPAI-RAGフォーマットで、検索のためにベクトルデータベースに自動的に格納する。 データベース内の既存のナレッジベースを使用することもできますが、ナレッジベースはPAI-RAG形式の要件を満たす必要があります。 そうしないと、検索中にエラーが発生する可能性があります。
[アップロード] タブで、チャンクパラメーターを設定します。
次のパラメーターは、ドキュメントチャンクの粒度とQ&A抽出を有効にするかどうかを制御します。
パラメーター
説明
チャンクサイズ
各チャンクのサイズ。 単位はバイトです。 デフォルト値: 500。
チャンク重複
隣接するチャンク間のオーバーラップ。 デフォルト値は 10 です。
QA抽出モデルによるプロセス
Q&A情報を抽出するかどうかを指定します。 [はい] を選択すると、ナレッジファイルがアップロードされた後、システムは自動的に質問と対応する回答をペアで抽出します。 これにより、データクエリでより正確な回答が返されます。
[ファイル] タブまたは [ディレクトリ] タブで、1つ以上のビジネスデータファイルをアップロードします。 ビジネスデータファイルを含むディレクトリをアップロードすることもできます。 サポートされているファイルタイプ: txt、.pdf、Excel (.xlsxまたは.xls)、. csv、Word (.docxまたは. doc) 、Markdown、または. html。 設定例:
[アップロード] をクリックします。 システムは、ビジネスデータファイルをアップロードする前に、ビジネスデータファイルに対してデータクレンジングおよびセマンティックベースのチャンキングを実行する。 データクレンジングは、テキスト抽出およびハイパーリンク置換を含む。
3. ナレッジQ&Aの実行
RAGベースのLLMチャットボットは、ベクターデータベースから返された結果とクエリを選択したプロンプトテンプレートに入力し、テンプレートをLLMアプリケーションに送信して回答を提供します。
OpenSearchが提供する特別な機能
Alibaba Cloud OpenSearchは、テーブルとインデックスを効率的に管理するための便利なグラフィカルインターフェイスを提供します。 次のセクションでは、OpenSearchコンソールを使用してインデックス情報を表示し、簡単なデータ管理を実装する方法について説明します。
インデックステーブル管理
OpenSearch Vector Search Editionインスタンスの [インスタンスの詳細] ページに移動します。
作成したインスタンスのIDをクリックして、[インスタンスの詳細] ページに移動します。
[テーブルの管理] ページに移動し、インデックステーブルを管理します。
左側のナビゲーションウィンドウで、[テーブル管理] をクリックします。
現在のインスタンスで作成されたすべてのテーブルがページに表示されます。
ページでは、フィールドの表示、インデックススキーマの表示、インデックステーブルの編集、インデックスの再構築、インデックステーブルの削除などの操作を実行できます。 詳細については、「テーブル管理」をご参照ください。
データ管理
OpenSearch Vector Search Editionインスタンスの [インスタンスの詳細] ページに移動します。
作成したインスタンスのIDをクリックして、[インスタンスの詳細] ページに移動します。
データを挿入します。
左側のナビゲーションウィンドウで、
を選択します。右側のドロップダウンリストから [フォームモード] または [開発者モード] を選択します。
データを挿入するテーブルを選択します。
フォームモードで、フィールドごとにデータを入力し、追加をクリックします。 開発者モードで、データ書き込みステートメントを入力し、[作成] をクリックします。 詳細については、「データの挿入」をご参照ください。
"message": "success"
が返された場合、データが挿入されます。
テーブルのメトリックを表示します。
左側のナビゲーションウィンドウで、
を選択します。表示するテーブルを選択します。 DocCountやQPSなどのメトリックを表示できます。 詳細については、「Table metrics」をご参照ください。
データを削除します。
左側のナビゲーションウィンドウで、
を選択します。右側のドロップダウンリストから [フォームモード] または [開発者モード] を選択します。
[テーブル名] を選択し、[プライマリキー] を入力し、[削除] をクリックします。 詳細については、「データの削除」をご参照ください。
"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チャットボットを使用することもできます。 実装の詳細とパラメーター設定の詳細については、「RAGベースのLLMチャットボット」をご参照ください。
RAGベースのLLMチャットボットは、ElasticsearchとApsaraDB RDS for PostgreSQLなどの他のタイプのベクターデータベースに関連付けることもできます。
詳細については、「 EASとElasticsearchを使用してRAGベースのLLMチャットボットをデプロイする」または「EASとApsaraDB RDS for PostgreSQLを使用してRAGベースのLLMチャットボットをデプロイする」をご参照ください。