Sdílet prostřednictvím


Eliminace volitelných vektorových instancí z úložiště

Azure AI Search ukládá více kopií vektorových polí, která se používají v konkrétních úlohách. Pokud nepotřebujete podporovat konkrétní chování, jako je vrácení nezpracovaných vektorů v odpovědi dotazu, můžete nastavit vlastnosti v indexu, který pro danou úlohu vynechá úložiště.

Požadavky

  • Vektorová pole v indexu vyhledávání s vectorSearch konfigurací, pomocí hierarchických pohyblivých malých světů (HNSW) nebo vyčerpávajících algoritmů K-nejbližšího souseda (KNN) a nového vektorového profilu.

Způsob ukládání vektorových polí

Pro každé vektorové pole může existovat tři kopie vektorů, z nichž každá slouží jinému účelu:

Instance Využití Řízeno pomocí
Zdrojové vektory, které ukládají json, který byl přijat během indexování dokumentu Používá se k přírůstkové aktualizaci dat s merge indexováním dokumentů nebo mergeOrUpload při jejich indexování. Používá se také v případě, že chcete v odpovědi dotazu vrátit vektory s možností načítání. stored vlastnost u vektorových polí
Původní vektory s plnou přesností V existujících indexech se používají pro interní operace indexu a pro vyčerpávající vyhledávání KNN. U vektorů používajících kompresi se také používá k vyhodnocení (pokud je povoleno) u převzorkované kandidátské sady výsledků hledání anN na vektorových polích pomocí skalární nebo binární komprese kvantování . rescoringOptions.rescoreStorageMethod nemovitosti v vectorSearch.compressions. U nekomprimovaných vektorových polí u indexů vytvořených s verzemi 2024-11-01-Preview rozhraní API a novějších verzích se tato pole ve výchozím nastavení vynechá bez dopadu na aktivity vyhledávání ani kvalitu.
Vektory v grafu HNSW pro hledání přibližných nejbližších sousedů (ANN) Používá se pro provádění dotazů ANN. Skládá se buď z vektorů s plnou přesností (pokud není použita žádná komprese), nebo quantizovaných vektorů (při použití komprese). Platí jenom pro HNSW. Tyto datové struktury jsou vyžadovány pro efektivní vyhledávání ANN.

Můžete nastavit vlastnosti, které trvale zahodí první dvě instance z úložiště vektorů.

Poslední instance (vektory a grafy) se vyžaduje pro provádění vektorového dotazu ANN. Pokud se použijí nějaké techniky komprese, jako je skalární nebo binární kvantování , použije se u této sady dat. Pokud chcete odsadit ztrátovou kompresi, měli byste zachovat druhou instanci pro účely vyhodnocování, aby se zlepšila kvalita vyhledávání ANN.

stored Nastavení vlastnosti

Vlastnost stored je logická vlastnost v definici vektorového pole, která určuje, zda je úložiště přiděleno pro obsah načístelné vektorové pole (zdrojová instance). Vlastnost stored je ve výchozím nastavení true. Pokud v odpovědi dotazu nepotřebujete nezpracovaný vektorový obsah, můžete ušetřit až 50 % úložiště na pole změnou stored na false.

Důležité informace o nastavení stored na false:

  • Vzhledem k tomu, že vektory nejsou čitelné člověkem, můžete je vynechat z výsledků odeslaných do LLM ve scénářích RAG a z výsledků, které se vykreslují na vyhledávací stránce. Pokud ale v podřízeného procesu používáte vektory, které využívají obsah vektorů, je uchovávejte.

  • Pokud ale strategie indexování zahrnuje částečné aktualizace dokumentů, například sloučení nebo mergeOrUpload v existujícím dokumentu, nastavení stored=false zabrání aktualizacím obsahu v těchto polích během sloučení. Při každé operaci "merge" nebo "mergeOrUpload" do hledaného dokumentu musíte zadat vektorová pole v celém rozsahu spolu s nevectorovými poli, která aktualizujete, nebo se vektor zahodí.

Důležité

stored=false Nastavení přisuzování je nevratné. Tuto vlastnost lze nastavit pouze při vytváření indexu a je povolena pouze u vektorových polí. Aktualizace existujícího indexu pomocí nových vektorových polí nemůže tuto vlastnost nastavit na false. Pokud chcete později načíst obsah vektoru, musíte index vypustit a znovu sestavit nebo vytvořit a načíst nové pole s novým přiřazením.

U nových vektorových polí v indexu vyhledávání nastavte stored hodnotu false, aby se trvale odebralo úložiště pro vektorové pole. Následující příklad ukazuje definici vektorového pole s stored vlastností.

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" 
        } 
      ] 
    } 

Shrnutí klíčových bodů

  • Platí pro pole s datovým typem vektoru.

  • Ovlivňuje úložiště na disku, ne paměť a nemá žádný vliv na dotazy. Provádění dotazu používá samostatný vektorový index, který nemá vliv na stored vlastnost, protože kopie vektoru je vždy uložena.

  • Vlastnost je nastavena během vytváření indexu stored u vektorových polí a je nevratná. Pokud chcete později načíst obsah, musíte index vypustit a znovu sestavit nebo vytvořit a načíst nové pole s novým přiřazením.

  • Výchozí hodnoty jsou stored nastaveny na hodnotu true a retrievable jsou nastaveny na hodnotu false. Ve výchozí konfiguraci se uloží načístelná kopie, ale ve výsledcích se automaticky nevrátí. Pokud stored je hodnota true, můžete kdykoli přepínat retrievable mezi true a false, aniž byste museli znovu sestavit index. Pokud stored je false, retrievable musí být false a nelze ho změnit.

rescoreStorageMethod Nastavení vlastnosti

Poznámka:

Tato funkce je v současné době ve verzi Public Preview. Tato verze Preview je poskytována bez smlouvy o úrovni služeb a nedoporučuje se pro produkční úlohy. Některé funkce se nemusí podporovat nebo mohou mít omezené možnosti. Další informace najdete v dodatečných podmínkách použití pro verze Preview v Microsoft Azure.

Vlastnost rescoreStorageMethod řídí ukládání vektorů s plnou přesností při použití komprese.

U nekomprimovaných vektorových polí u indexů vytvořených s verzemi 2024-11-01-Preview rozhraní API a novějších verzích se tato pole ve výchozím nastavení vynechá bez dopadu na aktivity vyhledávání ani kvalitu. U existujících vektorových polí vytvořených před touto verzí rozhraní API neexistuje možnost odebrat tuto kopii dat.

U komprese vektorů rescoreStorageMethod je vlastnost nastavena na preserveOriginals výchozí, což zachovává vektory úplné přesnosti propřevzorkování a možnosti přejmenovávání , aby se snížil účinek ztráty komprese na graf HNSW. Pokud tyto funkce nepoužíváte, můžete snížit velikost úložiště vektorů nastavením na discardOriginals.rescoreStorageMethod

Důležité

rescoreStorageMethod Nastavení vlastnosti je nevratné a bude mít různé úrovně ztráty kvality vyhledávání v závislosti na metodě komprese. To lze nastavit u indexů vytvořených pomocí 2024-11-01-Preview indexů nebo novějších, a to buď během vytváření indexu, nebo přidávání nových vektorových polí.

Pokud máte v úmyslu použít skalární nebo binární kvantování, doporučujeme zachovat rescoreStorageMethod sadu pro preserveOriginals maximalizaci kvality vyhledávání.

Nastavení této vlastnosti:

  1. Použijte rozhraní REST API pro vytvoření nebo vytvoření nebo vytvoření nebo aktualizaci indexu 2024-11-01-preview nebo beta balíčku sady Azure SDK, který tuto funkci poskytuje.

  2. Přidejte do indexu vectorSearch oddíl s profily, algoritmy a kompresemi.

  3. V části komprese přidejte rescoringOptions s nastavenou enableRescoring na hodnotu true, defaultOversampling nastavte na kladné celé číslo a rescoreStorageMethod nastavte hodnotu preserveOriginals.

    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
                }
            ]
        }
    }