Indexbinärvektorer för vektorsökning
Azure AI Search stöder 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.
Binära datatyper är allmänt tillgängliga från och med API-version 2024-07-01 och tilldelas till fält med api:erna Skapa index eller Skapa eller uppdatera index .
Dricks
Om du undersöker stöd för binära vektorer för dess mindre fotavtryck kan du även överväga funktionerna för vektorkvantisering och lagringsminskning i Azure AI Search. Indata är float32- eller float16-inbäddningar. Utdata lagras i ett mycket mindre format. Mer information finns i Minska vektorstorleken genom kvantisering, smala datatyper och lagringsalternativ.
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
- 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.
Om du vill lägga till ett binärt fält i ett index konfigurerar du en
Create or Update Index
begäran med hjälp av REST-API:et eller Azure-portalen.I indexschemat lägger du till ett
vectorSearch
avsnitt som anger profiler och algoritmer.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.Lägg till en eller flera vektorprofiler som anger algoritmen.
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) = 128
den paketerade binära vektorlängden . Du får det packade formuläret genom att ange vectorEncoding
egenskapen på fältet.
- Lägg till ett fält i fältsamlingen och ge det namnet.
- Ange datatypen till
Collection(Edm.Byte)
. - Ange
vectorEncoding
tillpackedBit
för binär kodning. - Ställ in
dimensions
på1024
. Ange den ursprungliga (uppackade) vektordimensionen. - Ange
vectorSearchProfile
till en profil som du definierade i föregående steg. - Gör fältet sökbart.
Följande fältdefinition är ett exempel på de egenskaper som du bör ange:
"fields": [
. . .
{
"name": "my-binary-vector-field",
"type": "Collection(Edm.Byte)",
"vectorEncoding": "packedBit",
"dimensions": 1024,
"vectorSearchProfile": "myHnswProfile",
"searchable": true
},
. . .
]
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.