次の方法で共有


ストレージからオプションのベクトル インスタンス除去する

Azure AI 検索では、特定のワークロードで使われるベクトル フィールドの複数のコピーが格納されます。 クエリの応答で生ベクトルを返すといった特定の動作をサポートする必要がない場合は、そのワークロードでストレージを省略するプロパティをインデックスに設定できます。

前提条件

ベクトル フィールドの格納方法

すべてのベクトル フィールドに対して、、それぞれが異なる目的を果たす次の 3 つのベクトルのコピーが存在します。

インスタンス 使用方法 次を使用して制御:
ドキュメントのインデックス作成時に受信した JSON を格納するソース ベクトル ドキュメントのインデックス作成中に merge または mergeOrUpload を使用した増分データ更新に使われます。 また、クエリ応答で "取得可能な" ベクトルを返す場合にも使われます。 ベクトル フィールドの stored プロパティ
元の完全な精度のベクトル 既存のインデックスでは、これらは内部インデックス操作と網羅的 KNN 検索に使用されています。 圧縮を使用するベクトルの場合は、スカラーまたはバイナリ量子化圧縮を使用するベクトル フィールドの ANN 検索で得られた結果のオーバー サンプリングされた一連の候補に対する再スコアリング (有効な場合) にも使用されます。 vectorSearch.compressionsrescoringOptions.rescoreStorageMethod プロパティ。 2024-11-01-Preview API バージョン以降で作成されたインデックスの非圧縮ベクトル フィールドの場合、これは既定で省略され、検索アクティビティにも品質にも影響ありません。
近似最近傍 (ANN) 検索のための HNSW グラフでのベクトル ANN クエリの実行に使用されます。 完全な精度のベクトル (圧縮が適用されない場合) または量子化ベクトル (圧縮が適用される場合) の構成 HNSW にのみ適用されます。 これらのデータ構造は、効率的な ANN 検索に必要です。

ベクトル ストレージから最初の 2 つのインスタンスを完全に破棄するプロパティを設定できます。

最後のインスタンス (ベクトルとグラフ) は、ANN ベクトル クエリの実行のために必要です。 スカラーまたはバイナリ量子化などの圧縮技術が使用される場合、それらはこのデータ セットに適用されます。 損失圧縮を軽減したい場合は、ANN 検索品質を向上させるために再スコアリングのための 2 番目のインスタンスを残しておく必要があります。

stored プロパティを設定する

stored プロパティはベクトル フィールド定義のブール値プロパティであり、取得可能なベクトル フィールドの内容 (ソース インスタンス) にストレージを割り当てるかどうかを決定します。 stored プロパティの既定値は True です。 クエリの応答で生のベクトルの内容が必要ない場合は、stored を false に設定すると、フィールドごとに最大 50% のストレージを節約できます。

stored を false に設定する際の考慮事項:

  • ベクトルは人間には判読できないため、RAG シナリオで LLM に送信される結果や、検索ページに表示される結果では省略できます。 ただし、ベクトルの内容を消費するダウンストリーム プロセスでベクトルを使用している場合は、ベクトルを維持してください。

  • ただし、インデックス作成戦略に、既存のドキュメントに対する "merge" や "mergeOrUpload" などの部分的なドキュメントの更新が含まれている場合、stored=false を設定すると、マージ中にそれらのフィールドの内容の更新が行われなくなります。 検索ドキュメントに対する各 "merge" または "mergeOrUpload" 操作では、更新する非ベクトル フィールドと共に、ベクトル フィールドをそのまま指定する必要があり、そうしないとベクトルが削除されます。

重要

stored=false 属性の設定は元に戻すことができません。 このプロパティはインデックスを作成する場合にのみ設定でき、ベクトル フィールドにのみ許可されます。 新しいベクトル フィールドで既存のインデックスを更新しても、このプロパティを false に設定することはできません。 後で取得可能なベクトル コンテンツが必要になった場合は、インデックスを削除して再構築するか、新しい属性を持つ新しいフィールドを作成して読み込む必要があります。

検索インデックスの新しいベクトル フィールドの場合、ベクトル フィールドの取得可能なストレージを完全に削除するには、stored を false に設定します。 次の例は stored プロパティを持つベクトル フィールドの定義です。

PUT https://[service-name].search.windows.net/indexes/demo-index?api-version=2024-07-01 
  Content-Type: application/json  
  api-key: [admin key]  

    { 
      "name": "demo-index", 
      "fields": [ 
        { 
          "name": "vectorContent", 
          "type": "Collection(Edm.Single)", 
          "retrievable": false, 
          "stored": false, 
          "dimensions": 1536, 
          "vectorSearchProfile": "vectorProfile" 
        } 
      ] 
    } 

重要な点の概要

  • ベクトル データ型を持つフィールドに適用されます。

  • メモリではなくディスク上のストレージに影響し、クエリにはまったく影響しません。 クエリの実行では、ベクトルのコピーが常に格納されるため、stored プロパティの影響を受けない別のベクトル インデックスが使われます。

  • stored プロパティはベクトル フィールドのインデックス作成時に設定され、元に戻すことはできません。 後で取得可能なコンテンツが必要になった場合は、インデックスを削除して再構築するか、新しい属性を持つ新しいフィールドを作成して読み込む必要があります。

  • 既定値は、true に設定された stored と false に設定された retrievable です。 既定の構成では、取得可能なコピーが保存されますが、結果では自動的に返されません。 stored が true の場合、インデックスを再構築しなくても、いつでも retrievable を true と false の間で切り替えられます。 stored が false の場合、retrievable は false である必要があり、変更できません。

rescoreStorageMethod プロパティを設定する

Note

現在、この機能はパブリック プレビュー段階にあります。 このプレビュー版はサービス レベル アグリーメントなしで提供されています。運用環境のワークロードに使用することはお勧めできません。 特定の機能はサポート対象ではなく、機能が制限されることがあります。 詳しくは、Microsoft Azure プレビューの追加使用条件に関するページをご覧ください。

rescoreStorageMethod プロパティは、圧縮が使用されている場合に、完全な精度のベクトルのストレージを制御します。

2024-11-01-Preview API バージョン以降で作成されたインデックスの非圧縮ベクトル フィールドの場合、これは既定で省略され、検索アクティビティにも品質にも影響ありません。 この API バージョンより前に作成された既存のベクトル フィールドの場合は、このデータのコピーをインプレースで削除する機能はありません。

ベクトル圧縮では、オーバーサンプリング機能と再スコアリング機能のために完全な精度のベクトルを保持し、HNSW グラフへの損失圧縮の影響を軽減するために、rescoreStorageMethod プロパティは既定で preserveOriginals に設定されます。 これらの機能を使用しない場合は、rescoreStorageMethoddiscardOriginals に設定することで、ベクトルのストレージを削減できます。

重要

rescoreStorageMethod プロパティの設定は元に戻すことのできない操作であり、圧縮方法によって検索品質の損失レベルが異なります。 これは、2024-11-01-Preview 以降で作成されたインデックスに対して、インデックス作成時または新しいベクトル フィールドの追加時に設定できます。

スカラーまたはバイナリ量子化を使う場合は、検索品質を最大化するために rescoreStorageMethodpreserveOriginals に設定したままにすることをお勧めします。

このプロパティを設定するには:

  1. インデックスの作成またはインデックスの作成または更新 2024-11-01-preview REST API を使うか、その機能を提供する Azure SDK ベータ パッケージを使います。

  2. プロファイル、アルゴリズム、圧縮で vectorSearch セクションをインデックスに追加します。

  3. 圧縮では、enableRescoring を true に設定し、defaultOversampling を正の整数に設定し、rescoreStorageMethodpreserveOriginals に設定して rescoringOptions を追加します。

    PUT https://[service-name].search.windows.net/indexes/demo-index?api-version=2024-11-01-preview
    
    {
        "name": "demo-index",
        "fields": [. . . ],
        . . .
        "vectorSearch": {
            "profiles": [
                {
                "name": "myVectorProfile",
                "algorithm": "myHnsw",
                "compression": "myScalarQuantization"
                }
            ],
            "algorithms": [
              {
                "name": "myHnsw",
                "kind": "hnsw",
                "hnswParameters": {
                  "metric": "cosine",
                  "m": 4,
                  "efConstruction": 400,
                  "efSearch": 500
                },
                "exhaustiveKnnParameters": null
              }
            ],
            "compressions": [
                {
                    "name": "myScalarQuantization",
                    "kind": "scalarQuantization",
                    "rescoringOptions": {
                        "enableRescoring": true,
                        "defaultOversampling": 10,
                        "rescoreStorageMethod": "preserveOriginals"
                    },
                    "scalarQuantizationParameters": {
                        "quantizedDataType": "int8"
                    },
                    "truncationDimension": null
                }
            ]
        }
    }