Sdílet prostřednictvím


Indexování binárních vektorů pro vyhledávání vektorů

Azure AI Search podporuje zabalený binární typ Collection(Edm.Byte) pro další snížení využití úložiště a paměti vektorových dat. Tento datový typ můžete použít pro výstup z modelů, jako jsou binární vložené modely Cohere v3 nebo jakýkoli jiný vložený model nebo proces, který vypíše vektory jako binární bajty.

Existují tři kroky konfigurace indexu pro binární vektory:

  • Přidání algoritmu vektorového vyhledávání, který určuje vzdálenost Hamming pro porovnání binárních vektorů
  • Přidání vektorového profilu, který odkazuje na algoritmus
  • Přidání vektorového pole typu Collection(Edm.Byte) a přiřazení vzdálenosti hammingu

Tento článek předpokládá, že jste obeznámeni s vytvářením indexu ve službě Azure AI Search a přidáváním vektorových polí. K ilustraci jednotlivých kroků používá rozhraní REST API, ale můžete také přidat binární pole do indexu na webu Azure Portal nebo v sadě Azure SDK.

Binární datový typ je obecně dostupný od rozhraní API verze 2024-07-01 a je přiřazen k polím pomocí rozhraní API pro vytvoření nebo vytvoření nebo aktualizaci indexu .

Tip

Pokud zkoumáte podporu binárních vektorů pro menší nároky, můžete zvážit také funkce kvantování vektorů a redukce úložiště ve službě Azure AI Search. Vstupy jsou float32 nebo float16 embeddings. Výstup je uložená data v mnohem menším formátu. Další informace najdete v tématu Komprese pomocí binárního nebo skalárního kvantování a přiřazení úzkých datových typů.

Požadavky

  • Binární vektory s 1 bitem na dimenzi zabalené v hodnotách uint8 s 8 bity na hodnotu. Ty lze získat pomocí modelů, které přímo generují zabalené binární vektory, nebo kvantifikací vektorů do binárních vektorů na straně klienta během indexování a vyhledávání.

Omezení

  • V průvodci importem a vektorizací dat není podporována žádná podpora webu Azure Portal.
  • Žádná podpora binárních polí v dovednosti AML, která se používá k integrované vektorizaci modelů v katalogu modelů Azure AI Studio.

Přidání algoritmu vektorového vyhledávání a profilu vektoru

Algoritmy vektorového vyhledávání se používají k vytvoření navigačních struktur dotazu během indexování. U binárních vektorových polí se porovnávání vektorů pomocí metriky vzdálenosti Hamming.

  1. Pokud chcete do indexu přidat binární pole, nastavte Create or Update Index požadavek pomocí rozhraní REST API nebo webu Azure Portal.

  2. Do schématu indexu vectorSearch přidejte oddíl, který určuje profily a algoritmy.

  3. Přidejte jeden nebo více algoritmů vektorového vyhledávání, které mají metriku hammingpodobnosti . Běžně se používá hierarchická navigace Small Worlds (HNSW), ale můžete také použít vzdálenost hammingu s vyčerpávajícími sousedy K-nejbližšími sousedy.

  4. Přidejte jeden nebo více vektorových profilů, které určují algoritmus.

Následující příklad ukazuje základní vectorSearch konfiguraci:

  "vectorSearch": { 
    "profiles": [ 
      { 
        "name": "myHnswProfile", 
        "algorithm": "myHnsw", 
        "compression": null, 
        "vectorizer": null 
      } 
    ], 
    "algorithms": [ 
      { 
        "name": "myHnsw", 
        "kind": "hnsw", 
        "hnswParameters": { 
          "metric": "hamming" 
        } 
      }, 
      { 
        "name": "myExhaustiveKnn", 
        "kind": "exhaustiveKnn", 
        "exhaustiveKnnParameters": { 
          "metric": "hamming" 
        } 
      } 
    ] 
  }

Přidání binárního pole do indexu

Kolekce polí indexu musí obsahovat pole pro klíč dokumentu, vektorová pole a všechna další pole, která potřebujete pro scénáře hybridního vyhledávání.

Binární pole jsou typu Collection(Edm.Byte) a obsahují vložené položky v zabalené podobě. Pokud je například původní vložená dimenze 1024, sbalený binární vektor délka je ceiling(1024 / 8) = 128. Zabalený formulář získáte nastavením vectorEncoding vlastnosti v poli.

  • Přidejte pole do kolekce polí a pojmenujte ho.
  • Nastavte datový typ na Collection(Edm.Byte).
  • Nastavte vectorEncoding pro packedBit binární kódování.
  • Nastavte dimensions na hodnotu 1024. Zadejte původní (rozbalený) vektorový rozměr.
  • Nastavte vectorSearchProfile profil, který jste definovali v předchozím kroku.
  • Umožňuje prohledávat pole.

Následující definice pole je příkladem vlastností, které byste měli nastavit:

  "fields": [ 
    . . . 
    { 
      "name": "my-binary-vector-field", 
      "type": "Collection(Edm.Byte)", 
      "vectorEncoding": "packedBit", 
      "dimensions": 1024, 
      "vectorSearchProfile": "myHnswProfile",
      "searchable": true
    },
   . . . 
  ]

Viz také

Ukázky kódu v úložišti azure-search-vector-samples ukazují ucelené pracovní postupy, které zahrnují definici schématu, vektorizaci, indexování a dotazy.

Existuje ukázkový kód pro Python, C# a JavaScript.