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.
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.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. 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) = 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.
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.
Feedback
https://aka.ms/ContentUserFeedback.
Kommer snart: Under hela 2024 kommer vi att fasa ut GitHub-problem som feedbackmekanism för innehåll och ersätta det med ett nytt feedbacksystem. Mer information finns i:Skicka och visa feedback för