Binaire vectoren indexeren voor vectorzoekopdrachten
Azure AI Search ondersteunt een verpakt binair type om Collection(Edm.Byte)
de opslag- en geheugenvoetafdruk van vectorgegevens verder te verminderen. U kunt dit gegevenstype gebruiken voor uitvoer van modellen zoals cohere's Embed v3 binary embedding models.
Er zijn drie stappen voor het configureren van een index voor binaire vectoren:
- Een vectorzoekgoritme toevoegen waarmee De afstand van Hamming voor binaire vectorvergelijking wordt opgegeven
- Een vectorprofiel toevoegen dat verwijst naar het algoritme
- Het vectorprofiel toevoegen aan de definitie van het binaire veld
In dit artikel wordt ervan uitgegaan dat u bekend bent met het maken van een index in Azure AI Search. Hierbij worden de REST API's gebruikt om elke stap te illustreren, maar u kunt ook een binair veld toevoegen aan een index in Azure Portal.
Binaire gegevenstypen zijn algemeen beschikbaar vanaf API-versie 2024-07-01 en worden toegewezen aan velden met behulp van de API's index maken of bijwerken .
Tip
Als u ondersteuning voor binaire vectoren onderzoekt voor de kleinere footprint, kunt u ook de functies voor vector kwantisatie en opslagreductie in Azure AI Search overwegen. Invoer is float32- of float16-insluitingen. Uitvoer wordt opgeslagen in een veel kleinere indeling. Zie Vectorgrootte verkleinen via kwantisatie, smalle gegevenstypen en opslagopties voor meer informatie.
Vereisten
- Binaire vectoren, met 1 bits per dimensie, verpakt in uint8-waarden met 8 bits per waarde. Deze kunnen worden verkregen met behulp van modellen die rechtstreeks verpakte binaire vectoren genereren of door vectoren te kwantificeren in binaire vectoren aan clientzijde tijdens het indexeren en zoeken.
Beperkingen
- Er is geen ondersteuning voor Azure Portal in de wizard Gegevens importeren en vectoriseren.
- Geen ondersteuning voor binaire velden in de AML-vaardigheid die wordt gebruikt voor geïntegreerde vectorisatie van modellen in de Azure AI Studio-modelcatalogus.
Een vectorzoekalgoritmen en vectorprofiel toevoegen
Vectorzoekalgoritmen worden gebruikt om tijdens het indexeren de querynavigatiestructuren te maken. Voor binaire vectorvelden worden vectorvergelijkingen uitgevoerd met behulp van de metrische afstand van Hamming.
Als u een binair veld aan een index wilt toevoegen, stelt u een
Create or Update Index
aanvraag in met behulp van de REST API of Azure Portal.Voeg in het indexschema een
vectorSearch
sectie toe waarmee profielen en algoritmen worden opgegeven.Voeg een of meer vectorzoekalgoritmen toe met een overeenkomstwaarde van
hamming
. Het is gebruikelijk om Hiërarchische Navigable Small Worlds (HNSW) te gebruiken, maar u kunt ook Hamming-afstand gebruiken met uitgebreide K-dichtstbijzijnde buren.Voeg een of meer vectorprofielen toe waarmee het algoritme wordt opgegeven.
In het volgende voorbeeld ziet u een basisconfiguratie vectorSearch
:
"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"
}
}
]
}
Een binair veld toevoegen aan een index
De verzameling velden van een index moet een veld bevatten voor de documentsleutel, vectorvelden en andere velden die u nodig hebt voor hybride zoekscenario's.
Binaire velden zijn van het type Collection(Edm.Byte)
en bevatten ingesloten waarden in verpakte vorm. Als de oorspronkelijke insluitingsdimensie bijvoorbeeld is 1024
, is ceiling(1024 / 8) = 128
de ingepakte binaire vectorlengte. U krijgt het verpakte formulier door de vectorEncoding
eigenschap in het veld in te stellen.
- Voeg een veld toe aan de verzameling velden en geef het een naam.
- Stel het gegevenstype in op
Collection(Edm.Byte)
. - Ingesteld
vectorEncoding
oppackedBit
voor binaire codering. - Stel
dimensions
in op1024
. Geef de oorspronkelijke vectordimensie (uitgepakt) op. - Ingesteld
vectorSearchProfile
op een profiel dat u in de vorige stap hebt gedefinieerd. - Maak het veld doorzoekbaar.
De volgende velddefinitie is een voorbeeld van de eigenschappen die u moet instellen:
"fields": [
. . .
{
"name": "my-binary-vector-field",
"type": "Collection(Edm.Byte)",
"vectorEncoding": "packedBit",
"dimensions": 1024,
"vectorSearchProfile": "myHnswProfile",
"searchable": true
},
. . .
]
Zie ook
Codevoorbeelden in de opslagplaats azure-search-vector-samples demonstreren end-to-end-werkstromen met schemadefinitie, vectorisatie, indexering en query's.
Er is democode voor Python, C# en JavaScript.