このトピックでは、OpenSearch Vector Search Edition のシングルノードインスタンスを購入する方法について説明します。
インスタンスの購入
OpenSearch コンソールにアクセスします。左上隅で [OpenSearch Vector Search Edition] を選択します。インスタンスリストページで、[インスタンスの作成] をクリックします。
[製品バージョン] を [Vector Search Edition] に設定します。リージョンを選択します。[データノード数]、[データノード仕様]、および [データノードあたりの合計ストレージ容量] を設定します。[Virtual Private Cloud] と [仮想スイッチ] を設定します。プロンプトに従ってユーザー名とパスワードを設定します。この認証情報はクエリ時の権限検証に使用され、Alibaba Cloud アカウントのパスワードとは異なります。[今すぐ購入] をクリックします。
説明購入するデータノードの数と仕様は、ビジネスニーズによって異なります。仕様を決定すると、製品ページで実際のコストが自動的に計算されます。
シングルノードソリューションの場合、QRS ワーカーを購入する必要はありません。QRS ワーカーの数を 0 に設定してください。QRS ワーカー仕様ファミリーパラメーターは有効になりません。
Virtual Private Cloud (VPC) と仮想スイッチの設定は、Vector Search Edition インスタンスにアクセスする Elastic Compute Service (ECS) インスタンスの設定と一致している必要があります。一致していない場合、インスタンスへのアクセス時に
{'errors':{'code':'403','message':'Forbidden'}}エラーが発生します。SSD ベースのデータノードファミリーには、50 GB の無料クォータが含まれています。追加のストレージは 50 GB 単位で課金されます。クラウドディスクタイプには無料クォータがなく、同様に 50 GB 単位で課金されます。
[注文の確認] ページで、利用規約を確認し、[今すぐ有効化] をクリックします。
購入が完了したら、[管理コンソール] をクリックして、[インスタンスリスト] ページで購入した Vector Search Edition インスタンスを表示します。
インスタンスの設定
新しいインスタンスのステータスは、詳細ページで [設定保留中] となります。購入したデータノードの数と仕様で、空のインスタンスが自動的にデプロイされます。その後、インスタンスの [基本テーブル情報]、[データ同期]、[フィールド設定]、および [インデックススキーマ] を設定する必要があります。インデックスが構築された後、検索を実行できます。
1. 基本テーブル情報
テーブル管理で、[テーブルの追加] をクリックします。[テーブル名] を入力します。[データシャード数] と [データ更新リソース数] を設定します。[シナリオテンプレート] を選択し、[次へ] をクリックします。
設定の説明:
テーブル名:名前はカスタマイズできます。
データシャード数:シングルノードインスタンスの場合、値は 1 に固定されており、変更できません。このインスタンスはシングルシャードソリューションのみをサポートします。インスタンスをマルチノードデプロイメントにスケールアウトできます。詳細については、スケーリングに関するドキュメントをご参照ください。
データ更新リソース数:データ更新に使用されるリソースの数を指定します。各インデックスには、4 コア 8 GB の無料更新リソースが 2 つ含まれています。無料クォータを超えるリソースは課金されます。詳細については、「Vector Search Edition の課金概要」をご参照ください。
シナリオテンプレート:Vector Search Edition は、[一般]、[ベクター - 画像検索]、[ベクター - テキストセマンティクス] の 3 つの組み込みテンプレートを提供します。
2. データ同期
全量データソースを選択します。サポートされているデータソースには、MaxCompute+API、Object Storage Service (OSS)+API、OpenLake-DLF ベクターデータの Alibaba Cloud OpenSearch への同期、および API があります。このトピックでは、MaxCompute+API を例として使用します。パラメーターを設定し、検証に成功したら、[次へ] をクリックします。
[MaxCompute+API] を選択した後、次のパラメーターを入力します:
AccessKey と AccessKey Secret
プロジェクト名 (Project):文字で始まり、文字、数字、アンダースコアのみを含み、長さは 3~28 文字にする必要があります。
テーブル名 (Table):1~128 文字。
テーブルパーティション (Partition):データソーステーブルに複数のパーティションレベルがある場合は、パーティション値をカンマで区切ります。
自動インデックス再構築:[はい] を選択します。MaxCompute で done テーブルが作成されていることを確認してください。そうでない場合、自動インデックス再構築は有効になりません。
パラメーターを入力した後、[検証] をクリックしてデータソースを検証します。
3. フィールド設定
OpenSearch は、選択したシナリオテンプレートに基づいて関連フィールドを事前設定します。また、OpenSearch は全量データソースからフィールドリストにフィールドを自動的にインポートします。
フィールド設定の説明:
必須フィールド:プライマリーキーフィールドとベクターフィールド。プライマリーキーフィールドは int 型または string 型で、[プライマリーキー] チェックボックスを選択する必要があります。ベクターフィールドは float 型で、[ベクターフィールド] チェックボックスを選択する必要があります。
デフォルトでは、ベクトルフィールドは複数値 float 型であり、その値はシステムのデフォルトの区切り文字であるカンマ (,) で区切られます。カスタムの複数値の区切り文字を指定することもできます。
データにフィールドが欠落しているか空の場合、システムは自動的にデフォルト値で補完します。デフォルト値は、数値型の場合は 0、文字列型の場合は空の文字列です。[デフォルト値をカスタマイズ] することもできます。
4. インデックススキーマ
4.1. ベクターインデックス
[ベクターインデックス] タブで、[インデックス名] (例:message_vector) を入力し、[ハイブリッド検索] を有効にするかどうかを選択します。ページ上部の注記には、OpenSearch がベクターフィールドを除くすべてのフィールドに対して同名のインデックスを自動的に構築したことが示されています。
プライマリーキーフィールドとベクターフィールドは必須です。名前空間フィールドはオプションであり、空のままにすることができます。
これら 3 つの固定フィールドからのみ選択でき、新しいフィールドを追加することはできません。
ベクター次元:モデルによって生成されたベクターに基づいて次元を選択します。
距離タイプ:InnerProduct (スコアが高いほど関連性が高い) と SquareEuclidean (スコアが低いほど関連性が高い) をサポートします。
ベクターインデックスアルゴリズム:Linear、HNSW、QGraph、および QC をサポートします。GPU インスタンスタイプは CAGRA アルゴリズムもサポートします。アルゴリズムの詳細については、「ベクターの概要」をご参照ください。
リアルタイムインデックス:API からの増分データに対してリアルタイムでベクターインデックスを構築するかどうかを指定します。デフォルト値は true です。
詳細設定を行うには、クリックしてセクションを展開してください。パラメーターの説明については、「ベクターインデックスの一般設定」をご参照ください。
高度な設定には、次のパラメーターが含まれます:
リアルタイムインデックスパラメーター:デフォルト値
{"proxima.oswg.streamer.segment_size":2048}インデックス検索パラメーター:デフォルト値
{"proxima.qc.searcher.scan_ratio":0.01}インデックス構築パラメーター:デフォルト値
{"proxima.qc.builder.quantizer_class":"Int8Quant"...}最小リコール候補セットサイズ:デフォルト値
20000リニアビルドしきい値:デフォルト値
5000問題のあるベクターデータを無視:デフォルト値
trueリコール率メトリックレポート:デフォルト値
true
名前空間フィールド:
インスタンスのエンジンバージョンが vector service 1.0.2 以前の場合、名前空間タグフィールドは string 形式をサポートしません。
インスタンスのエンジンバージョンが vector service 1.0.2 より後の場合、この制限は適用されません。
4.2. その他のインデックスタイプ
OpenSearch は、ベクターフィールドを除く各フィールドに対して同名のインデックスを自動的に作成します。これらのインデックスはここで管理できます。ベクターインデックスは手動で設定する必要があります。
[その他のインデックスタイプ] タブのインデックス設定テーブルには、[インデックス名]、[含まれるフィールド]、[インデックスの構築] (トグルスイッチ)、および [インデックスタイプ] (プライマリーキーインデックスまたは通常インデックス) の列が含まれています。ビジネスニーズに応じて、各フィールドのインデックス構築を有効または無効にし、対応するインデックスタイプを選択できます。
4.3. グローバルインデックス設定
この機能はデフォルトで無効になっています。有効にすると、整数フィールドに Time-to-Live (TTL) を設定できます。ドキュメントが作成されてからの経過時間が TTL を超えると、ドキュメントは自動的に削除されます。
設定オプションには、[ドキュメント時間フィールド] (ドキュメント時間を表す整数型フィールドを選択し、時間単位を指定) と [Time-to-Live] (値の範囲:1~49710 日) があります。
5. 作成の確認
インデックス設定が完了したら、[作成を確定] をクリックします。テーブルのステータスが作成中になります。
6. 変更履歴
インスタンス管理 > 変更履歴で、過去 3、7、または 30 日間の変更記録を表示できます。これらの記録には、テーブルの作成、インデックスの追加、スケーリングなどのすべてのプロセスが含まれます。すべての手順が完了し、DPI エンジンのセットアップが終了した後、クエリテストを開始できます。
7. クエリテスト
テーブルを作成してデータを追加した後、[ベクトル管理] > [クエリテスト] ページでクエリを実行できます。クエリテストは、フォームモードと開発者モードの両方をサポートしています。
7.1. フォームモード
[フォームモード]、[テーブル名]、および [クエリ] タイプをこの順序で選択します。[クエリ] タイプには、[ベクター] または [テキスト] を選択できます。この例では、[テキスト] を選択します。テキストフィールドにクエリテキストを入力します。[検索] をクリックして、[検索結果] セクションで結果を表示します。
7.2. 開発者モード
[開発者モード] と [テーブル名] を選択します。次に、[検索ボックス] にクエリパラメーターを入力します。[検索] をクリックして、[検索結果] セクションで結果を表示します。
vector:クエリ対象の特定のベクター。
topK:返す上位 K 件の結果の数。
includeVector:ドキュメントにベクター情報を含めて返すかどうかを指定します。
詳細なクエリ構文については、以下の構文説明をご参照ください。
構文の説明
SDK でベクター検索を使用する
シングルノードからマルチノードデプロイメントへのアップグレード
シングルノードインスタンスをマルチノードデプロイメントにアップグレードするには、次の手順に従います:
シングルノードからマルチノードデプロイメントへのアップグレード中、インスタンスは利用できなくなります。変更の進捗は [変更履歴] ページで確認できます:
[インスタンスリスト] ページで、対象のインスタンスを見つけます。[操作] 列で、[アップグレード/ダウングレード] をクリックします。
[アップグレード/ダウングレード] ページで、スケーリングのための QRS ワーカーの数と仕様を選択します。[利用規約] チェックボックスをオンにし、[今すぐ購入] をクリックします。