Indexování binárních vektorů pro vyhledávání vektorů
Azure AI Search podporuje zabalený binární typ Collection(Edm.Byte)
pro další snížení využití úložiště a paměti vektorových dat. Tento datový typ můžete použít pro výstup z modelů, jako jsou binární vložené modely Cohere v3 nebo jakýkoli jiný vložený model nebo proces, který vypíše vektory jako binární bajty.
Existují tři kroky konfigurace indexu pro binární vektory:
- Přidání algoritmu vektorového vyhledávání, který určuje vzdálenost Hamming pro porovnání binárních vektorů
- Přidání vektorového profilu, který odkazuje na algoritmus
- Přidání vektorového pole typu
Collection(Edm.Byte)
a přiřazení vzdálenosti hammingu
Tento článek předpokládá, že jste obeznámeni s vytvářením indexu ve službě Azure AI Search a přidáváním vektorových polí. K ilustraci jednotlivých kroků používá rozhraní REST API, ale můžete také přidat binární pole do indexu na webu Azure Portal nebo v sadě Azure SDK.
Binární datový typ je obecně dostupný od rozhraní API verze 2024-07-01 a je přiřazen k polím pomocí rozhraní API pro vytvoření nebo vytvoření nebo aktualizaci indexu .
Tip
Pokud zkoumáte podporu binárních vektorů pro menší nároky, můžete zvážit také funkce kvantování vektorů a redukce úložiště ve službě Azure AI Search. Vstupy jsou float32 nebo float16 embeddings. Výstup je uložená data v mnohem menším formátu. Další informace najdete v tématu Komprese pomocí binárního nebo skalárního kvantování a přiřazení úzkých datových typů.
Požadavky
- Binární vektory s 1 bitem na dimenzi zabalené v hodnotách uint8 s 8 bity na hodnotu. Ty lze získat pomocí modelů, které přímo generují zabalené binární vektory, nebo kvantifikací vektorů do binárních vektorů na straně klienta během indexování a vyhledávání.
Omezení
- V průvodci importem a vektorizací dat není podporována žádná podpora webu Azure Portal.
- Žádná podpora binárních polí v dovednosti AML, která se používá k integrované vektorizaci modelů v katalogu modelů Azure AI Studio.
Přidání algoritmu vektorového vyhledávání a profilu vektoru
Algoritmy vektorového vyhledávání se používají k vytvoření navigačních struktur dotazu během indexování. U binárních vektorových polí se porovnávání vektorů pomocí metriky vzdálenosti Hamming.
Pokud chcete do indexu přidat binární pole, nastavte
Create or Update Index
požadavek pomocí rozhraní REST API nebo webu Azure Portal.Do schématu indexu
vectorSearch
přidejte oddíl, který určuje profily a algoritmy.Přidejte jeden nebo více algoritmů vektorového vyhledávání, které mají metriku
hamming
podobnosti . Běžně se používá hierarchická navigace Small Worlds (HNSW), ale můžete také použít vzdálenost hammingu s vyčerpávajícími sousedy K-nejbližšími sousedy.Přidejte jeden nebo více vektorových profilů, které určují algoritmus.
Následující příklad ukazuje základní vectorSearch
konfiguraci:
"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"
}
}
]
}
Přidání binárního pole do indexu
Kolekce polí indexu musí obsahovat pole pro klíč dokumentu, vektorová pole a všechna další pole, která potřebujete pro scénáře hybridního vyhledávání.
Binární pole jsou typu Collection(Edm.Byte)
a obsahují vložené položky v zabalené podobě. Pokud je například původní vložená dimenze 1024
, sbalený binární vektor délka je ceiling(1024 / 8) = 128
. Zabalený formulář získáte nastavením vectorEncoding
vlastnosti v poli.
- Přidejte pole do kolekce polí a pojmenujte ho.
- Nastavte datový typ na
Collection(Edm.Byte)
. - Nastavte
vectorEncoding
propackedBit
binární kódování. - Nastavte
dimensions
na hodnotu1024
. Zadejte původní (rozbalený) vektorový rozměr. - Nastavte
vectorSearchProfile
profil, který jste definovali v předchozím kroku. - Umožňuje prohledávat pole.
Následující definice pole je příkladem vlastností, které byste měli nastavit:
"fields": [
. . .
{
"name": "my-binary-vector-field",
"type": "Collection(Edm.Byte)",
"vectorEncoding": "packedBit",
"dimensions": 1024,
"vectorSearchProfile": "myHnswProfile",
"searchable": true
},
. . .
]
Viz také
Ukázky kódu v úložišti azure-search-vector-samples ukazují ucelené pracovní postupy, které zahrnují definici schématu, vektorizaci, indexování a dotazy.
Existuje ukázkový kód pro Python, C# a JavaScript.