Megosztás a következőn keresztül:


Bináris vektorok indexelése vektorkereséshez

Az Azure AI Search támogatja a bináris adatcsomagokat Collection(Edm.Byte) a vektoradatok tárolási és memóriaigényének további csökkentéséhez. Ezt az adattípust olyan modellek kimenetéhez használhatja, mint például a Cohere 3-as bináris beágyazási modelljei.

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
  • Vektorprofil hozzáadása a bináris mező definíciójához

Ez a cikk feltételezi, hogy ismeri az indexek Azure AI Searchben való létrehozását. A REST API-k segítségével szemlélteti az egyes lépéseket, de bináris mezőt is hozzáadhat egy indexhez az Azure Portalon.

A bináris adattípusok az API 2024-07-01-es verziójától kezdve általánosan elérhetők, és az index létrehozása vagy index-API-k létrehozása vagy frissítése használatával vannak hozzárendelve a mezőkhöz.

Tipp.

Ha a bináris vektorok kisebb lábnyomának támogatását vizsgálja, érdemes lehet figyelembe vennie az Azure AI Search vektorkvantizálási és tárolási funkcióit is. A bemenetek float32 vagy float16 beágyazások. A kimenet sokkal kisebb formátumban tárolja az adatokat. További információ: Vektorméret csökkentése kvantálással, keskeny adattípusokkal és tárolási lehetőségekkel.

Előfeltételek

  • Bináris vektorok, dimenziónként 1 bittel, uint8 értékekbe csomagolva, értékenként 8 bittel. Ezek a "csomagolt bináris" vektorokat közvetlenül generáló modellek használatával, vagy vektorok bináris vektorokba történő kvantálásával érhetőek el az indexelés és a keresés során.

Korlátozások

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

A vektorkeresési algoritmusok a lekérdezés navigációs struktúráinak létrehozására szolgálnak az indexelés során. Bináris vektormezők esetén a vektorok összehasonlítását a Hamming távolságmetrika használatával hajtjuk végre.

  1. Ha bináris mezőt szeretne hozzáadni egy indexhez, állítson be egy kérést Create or Update Index a REST API vagy az Azure Portal használatával.

  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ái hamming. Gyakori a hierarchikus navigálható kisvilágok (HNSW) használata, de hamming távolság is használható a teljes K-legközelebbi szomszédokkal.

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

Az alábbi példa egy alapkonfigurációt vectorSearch 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 típusa Collection(Edm.Byte) és beágyazásokat tartalmaz csomagolt formában. 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.

  • Adjon hozzá egy mezőt a mezőgyűjteményhez, és adja meg a nevét.
  • Adattípus beállítása a következőre Collection(Edm.Byte): .
  • Bináris kódolásra packedBit van beállítvavectorEncoding.
  • Állítsa a dimensions elemet 1024 értékre. Adja meg az eredeti (csomagolatlan) vektordimenziót.
  • Állítsa be vectorSearchProfile az előző lépésben definiált profilt.
  • A mező kereshetővé tétele.

A következő meződefiníció példa a beállított tulajdonságokra:

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

Lásd még

Az azure-search-vector-samples adattárban található kódminták a sémadefiníciót, vektorizálást, indexelést és lekérdezéseket tartalmazó, végpontok közötti munkafolyamatokat szemléltetik.

A Python, a C# és a JavaScript demókódja is létezik.