Trunkera dimensioner med MRL-komprimering (förhandsversion)
Viktigt!
Den här funktionen är i offentlig förhandsversion under kompletterande användningsvillkor. REST API för förhandsversion stöder den här funktionen.
Använd möjligheten att använda färre dimensioner på text-embedding-3-modeller. I Azure OpenAI tränas textinbäddning-3-modeller om på matryoshka representationsinlärningstekniken (MRL) som producerar flera vektorrepresentationer på olika komprimeringsnivåer. Den här metoden ger snabbare sökningar och minskade lagringskostnader, med minimal förlust av semantisk information.
I Azure AI Search har MRL stöd för skalära och binära kvantiseringar. När du använder någon av kvantiseringsmetoderna kan du också ange en truncationDimension
egenskap för dina vektorfält för att minska dimensionaliteten för text-inbäddningar.
MRL-komprimering på flera nivåer sparar på vektorlagring och förbättrar frågesvarstiderna för vektorfrågor baserat på text inbäddningar. I Azure AI Search erbjuds MRL-stöd endast tillsammans med en annan kvantiseringsmetod. Om du använder binär kvantisering med MRL får du maximal minskning av vektorindexstorleken. För att uppnå maximal lagringsminskning använder du binär kvantisering med MRL och stored
ställer in på false.
Den här funktionen är en förhandsversion. Den är tillgänglig i 2024-09-01-preview
och i beta-SDK-paket som riktar sig till den förhandsversionen av API:et.
Förutsättningar
Text-inbäddning-3-modeller som Text-inbäddning-3-small eller Text-inbäddning-3-large (endast textinnehåll).
Nya vektorfält av typen
Edm.Half
ellerEdm.Single
(du kan inte lägga till MRL-komprimering i ett befintligt fält).Hierarkisk HNSW-algoritm (Navigable Small World) (inget stöd för fullständig KNN i den här förhandsversionen).
Skalär eller binär kvantisering. Trunkerade dimensioner kan bara anges när skalär eller binär kvantisering har konfigurerats. Vi rekommenderar binär kvantisering för MRL-komprimering.
Klienter som stöds
Du kan använda REST API:er eller Azure SDK-betapaket för att implementera MRL-komprimering.
REST API 2024-09-01-preview eller REST API 2024-11-01-preview
Kontrollera ändringsloggarna för varje Azure SDK-betapaket: Python, .NET, Java, JavaScript.
Det finns för närvarande inget stöd för Azure Portal eller Azure AI Studio.
Så här använder du MRL-utökade textbäddningar
MRL är en funktion som är inbyggd i den textinbäddningsmodell som du redan använder. Följ dessa steg för att dra nytta av dessa funktioner i Azure AI Search.
Använd skapa eller uppdatera index (förhandsversion) eller motsvarande API för att ange indexschemat.
Lägg till vektorfält i indexdefinitionen.
Ange ett
vectorSearch.compressions
objekt i indexdefinitionen.Inkludera en kvantiseringsmetod, antingen skalär eller binär (rekommenderas).
Inkludera parametern
truncationDimension
inställd på 512 eller så lågt som 256 om du använder modellen textinbäddning-3-large.Ange en vektorprofil som anger HNSW-algoritmen och vektorkomprimeringsobjektet.
Tilldela vektorprofilen till ett vektorfält av typen
Edm.Half
ellerEdm.Single
i fältsamlingen.
Det finns inga ändringar på frågesidan för att använda en MRL-kompatibel textinbäddningsmodell. Integrerad vektorisering, text-till-fråga-konverteringar vid frågetillfället, semantisk rangordning och andra relevansförbättringsfunktioner som att ändra rangordning med ursprungliga vektorer och översampling påverkas inte av MRL-stöd.
Indexering är långsammare på grund av de extra stegen, men frågorna går snabbare.
Exempel på en konfiguration för vektorsökning som stöder MRL
I följande exempel visas en konfiguration för vektorsökning som uppfyller kraven och rekommendationerna för MRL.
truncationDimension
är en komprimeringsegenskap. Den anger hur mycket vektordiagrammet ska krympas i minnet tillsammans med en komprimeringsmetod som skalär eller binär komprimering. Vi rekommenderar 1 024 eller högre för truncationDimension
med binär kvantisering. En dimensionalitet på mindre än 1 000 försämrar kvaliteten på sökresultaten när du använder MRL och binär komprimering.
{
"vectorSearch": {
"profiles": [
{
"name": "use-bq-with-mrl",
"compression": "use-mrl,use-bq",
"algorithm": "use-hnsw"
}
],
"algorithms": [
{
"name": "use-hnsw",
"kind": "hnsw",
"hnswParameters": {
"m": 4,
"efConstruction": 400,
"efSearch": 500,
"metric": "cosine"
}
}
],
"compressions": [
{
"name": "use-mrl",
"kind": "truncation",
"rerankWithOriginalVectors": true,
"defaultOversampling": 10,
"truncationDimension": 1024
},
{
"name": "use-bq",
"kind": "binaryQuantization",
"rerankWithOriginalVectors": true,
"defaultOversampling": 10
}
]
}
}
Här är ett exempel på en fullständigt angiven vektorfältdefinition som uppfyller kraven för MRL.
Kom ihåg att vektorfält måste vara av typen Edm.Half
eller Edm.Single
. Vektorfält måste ha en vectorSearchProfile
egenskap som avgör algoritmen och komprimeringsinställningarna. Vektorfält har en dimensions
egenskap som används för att ange antalet dimensioner för bedömning och rangordning av resultat. Värdet ska vara dimensionsgränsen för den modell som du använder (1 536 för textinbäddning-3-small).
{
"name": "text_vector",
"type": "Collection(Edm.Single)",
"searchable": true,
"filterable": false,
"retrievable": false,
"stored": false,
"sortable": false,
"facetable": false,
"key": false,
"indexAnalyzer": null,
"searchAnalyzer": null,
"analyzer": null,
"normalizer": null,
"dimensions": 1536,
"vectorSearchProfile": "use-bq-with-mrl",
"vectorEncoding": null,
"synonymMaps": []
}