Dela via


Indexbinärvektorer för vektorsökning

Viktigt!

Binära datatyper finns i offentlig förhandsversion under kompletterande användningsvillkor. REST API för förhandsversion 2024-05-01 och senare förhandsversions-API:er tillhandahåller den nya datatypen.

Från och med REST API för förhandsversionen av 2024-05-01 stöder Azure AI Search en paketerad binär typ av Collection(Edm.Byte) för att ytterligare minska lagrings- och minnesfotavtrycket för vektordata. Du kan använda den här datatypen för utdata från modeller som Cohere's Embed v3 binary embedding models .

Det finns tre steg för att konfigurera ett index för binära vektorer:

  • Lägg till en algoritm för vektorsökning som anger hammingavstånd för jämförelse av binär vektor
  • Lägga till en vektorprofil som pekar på algoritmen
  • Lägg till vektorprofilen i definitionen för binärt fält

Den här artikeln förutsätter att du är bekant med att skapa ett index i Azure AI Search. Den använder REST-API:er för att illustrera varje steg, men du kan också lägga till ett binärt fält i ett index i Azure-portalen.

Förutsättningar

  • Binära vektorer, med 1 bit per dimension, paketerade i uint8-värden med 8 bitar per värde. Dessa kan hämtas med hjälp av modeller som direkt genererar "paketerade binära" vektorer, eller genom att kvantifiera vektorer till binära vektorer på klientsidan under indexering och sökning.

Begränsningar

  • Inget stöd för skalär komprimering eller integrerad vektorisering.
  • Det finns inget stöd för Azure-portalen i guiden Importera och vektorisera data.
  • Inget stöd för binära fält i AML-färdigheten som används för integrerad vektorisering av modeller i Azure AI Studio-modellkatalogen.

Lägga till en vektorsökningsalgoritm och vektorprofil

Vektorsökningsalgoritmer används för att skapa frågenavigeringsstrukturerna under indexeringen. För binära vektorfält utförs vektorjämförelser med hjälp av hammingavståndsmåttet.

  1. Om du vill lägga till ett binärt fält i ett index konfigurerar du en Create or Update Index begäran med rest-API:et 2024-05-01-preview eller Azure-portalen.

  2. I indexschemat lägger du till ett vectorSearch avsnitt som anger profiler och algoritmer.

  3. Lägg till en eller flera algoritmer för vektorsökning som har ett likhetsmått för hamming. Det är vanligt att använda HNSW (Hierarchical Navigable Small Worlds), men du kan också använda hammingavstånd med omfattande K-närmaste grannar.

  4. Lägg till en eller flera vektorprofiler som anger algoritmen. Du kan inte ange skalär komprimering eller en vektoriserare i den här förhandsversionen.

I följande exempel visas en grundläggande vectorSearch konfiguration:

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

Lägga till ett binärt fält i ett index

Fältsamlingen för ett index måste innehålla ett fält för dokumentnyckeln, vektorfälten och alla andra fält som du behöver för hybridsökningsscenarier.

Binära fält är av typen Collection(Edm.Byte) och innehåller inbäddningar i packat format. Om den ursprungliga inbäddningsdimensionen till exempel är 1024är ceiling(1024 / 8) = 128den paketerade binära vektorlängden . Du får det packade formuläret genom att ange vectorEncoding egenskapen på fältet.

  1. Lägg till ett fält i fältsamlingen och ge det namnet.
  2. Ange datatypen till Collection(Edm.Byte).
  3. Ange vectorEncoding till packedBit för binär kodning.
  4. Ställ in dimensions1024. Ange den ursprungliga (uppackade) vektordimensionen.
  5. Ange vectorSearchProfile till en profil som du definierade i föregående steg.

Den minsta definitionen av en fältsamling bör se ut ungefär som i följande exempel:

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

Se även

Kodexempel på lagringsplatsen azure-search-vector-samples visar arbetsflöden från slutpunkt till slutpunkt som innehåller schemadefinition, vektorisering, indexering och frågor.

Det finns demokod för Python, C#och JavaScript.