Bináris vektorok indexelése vektorkereséshez

Note

Azure AI Keresés a Azure portálon, REST API-kon és Azure SDK-k keresztül érhető el. Emellett a Foundry IQ-t is támogatja, amely a vállalati tartalmakat újrafelhasználható, engedélytudatos tudásbázisokká alakítja át az Microsoft Foundry portálon található ügynökök számára.

Azure AI Keresés támogatja a Collection(Edm.Byte) csomagolt bináris típust a vektoradatok tárolási és memóriaigényének további csökkentése érdekében. Ezt az adattípust olyan modellek kimenetéhez használhatja, mint például a Cohere 3-as bináris beágyazási modelljei vagy bármely más beágyazási modell vagy folyamat, amely bináris bájtként adja ki a vektorokat.

A bináris vektorok indexének konfigurálásának három lépése van:

  • Adjon hozzá egy vektorkeresési algoritmust, amely megadja a hamming távolságát a bináris vektorok összehasonlításához
  • Adjon hozzá egy vektorprofilt, amely az algoritmusra mutat
  • Adjon hozzá egy típusú Collection(Edm.Byte) vektormezőt, és rendelje hozzá a Hamming távolságát

Ez a cikk a REST API-kat használja illusztrációként, de egy Azure SDK vagy a Azure portál használatával bináris mezőt is hozzáadhat egy indexhez. A bináris adattípust mezőkhöz rendelheti az Indexek – Létrehozás vagy Indexek – REST API-k létrehozása vagy frissítése használatával.

Tipp

Ha a bináris vektorok kisebb helyigényére vonatkozó támogatását vizsgálja, érdemes fontolóra venni az Azure AI Keresés vektorkvantálási és tároláscsökkentési funkcióit is. A bemenetek float32 vagy float16 típusú beágyazások. A kimenet sokkal kisebb formátumban tárolja az adatokat. További információ: Tömörítés bináris vagy skaláris kvantálással és szűk adattípusok hozzárendelése.

Előfeltételek

  • Az indexek létrehozásának és a vektormezők hozzáadásának ismerete.

  • Bináris vektorok, dimenziónként egy bittel, uint8 értékekbe csomagolva, értékenként nyolc bittel. Ezeket a vektorokat olyan modellekkel szerezheti be, amelyek közvetlenül generálnak csomagolt bináris vektorokat, vagy vektorokat kvantálnak bináris vektorokba az ügyfélalkalmazásban az indexelés és a lekérés során.

Korlátozások

  • A Import data varázsló nem támogatja Azure portált.

  • A AML képesség bináris mezői nem támogatottak az Microsoft Foundry-modellkatalógus modelljeinek integrált vektorizálásához.

Vektorkeresési algoritmus és vektorprofil hozzáadása

A vektorkeresési algoritmusok az indexelés során hozzák létre a lekérdezés navigációs struktúráit. Bináris vektormezők esetén a rendszer a Hamming távolságmetrikát használja a vektorok összehasonlításához.

Bináris vektorok vektorkeresésének konfigurálása:

  1. Indexek beállítása – REST API-kérés létrehozása vagy frissítése.

  2. Az indexsémában adjon hozzá egy szakaszt vectorSearch , amely profilokat és algoritmusokat határoz meg.

  3. Adjon hozzá egy vagy több vektorkeresési algoritmust , amelyek hasonlósági metrikát használnak hamming. A hierarchikus navigálható kisvilágok (HNSW) algoritmus gyakori, de a Hamming-távolság is használható kimerítő K-legközelebbi szomszédok (KNN) keresése esetén.

  4. Adjon hozzá egy vagy több, az algoritmust meghatározó vektorprofilt.

Az alábbi példa egy alapszintű vectorSearch konfigurációt mutat be.

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

Bináris mező hozzáadása indexhez

Az index mezőgyűjteményének tartalmaznia kell a dokumentumkulcs mezőit, a vektormezőket és a hibrid keresési forgatókönyvekhez szükséges egyéb mezőket.

A bináris mezők a típust Collection(Edm.Byte) használják, és csomagolt formában tartalmazzák a beágyazásokat. Ha például az eredeti beágyazási dimenzió az 1024, akkor a csomagolt bináris vektor hossza .ceiling(1024 / 8) = 128 A csomagolt űrlapot a mező tulajdonságának vectorEncoding beállításával szerezheti be.

Bináris vektormező hozzáadása indexhez:

  1. Adjon hozzá egy mezőt a mezőgyűjteményhez, és adjon neki nevet.

  2. Állítsa be az adattípust a következőre Collection(Edm.Byte): .

  3. Állítsa be vectorEncoding értékét packedBit-re bináris kódoláshoz.

  4. Állítsa dimensions1024. Adja meg az eredeti (csomagolatlan) vektordimenziót.

  5. Állítsa be vectorSearchProfile az előző lépésben definiált profilra.

  6. Állítsa searchabletrue.

Az alábbi meződefiníció egy példa egy bináris vektormezőre egy indexsémában.

  "fields": [ 
    . . . 
    { 
      "name": "my-binary-vector-field", 
      "type": "Collection(Edm.Byte)", 
      "vectorEncoding": "packedBit", 
      "dimensions": 1024, 
      "vectorSearchProfile": "myHnswProfile",
      "searchable": true
    },
   . . . 
  ]
  • Tekintse át a azure-search-vector-samples adattárat a sémadefiníciót, vektorizálást, indexelést és lekérdezéseket tartalmazó, végpontok közötti munkafolyamatokhoz.

  • Tekintse át C#, Python és JavaScript vektorkeresési bemutató kódját.