Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Wat is de Half-Precision vectorindexering?
Met halve-precisie-vectorindexering kunt u vector-insluitingen met 16-bits floating-point getallen opslaan en indexeren, in plaats van de standaard 32-bits floats te gebruiken. Deze optimalisatie leidt tot aanzienlijke verlagingen van zowel geheugengebruik als opslagkosten, waardoor het beter mogelijk is om te werken met grotere gegevenssets en hogere dimensionale vectoren. Bovendien kan het door het optimaliseren van de gegevensdichtheid bijdragen aan verbeterde queryprestaties in veel vectorzoekscenario's.
Belangrijkste voordelen
- Verbeterde dimensionaliteitsondersteuning: Met halve precisie kunt u nu indexvectoren met maximaal 4.000 dimensies (een toename van de vorige limiet van 2000).
- Verminderde opslagvoetafdruk: Het opslaan van vectoren in een 16-bits indeling vermindert de hoeveelheid opslagruimte die nodig is in vergelijking met vectoren met volledige precisie. Dit kan leiden tot aanzienlijke kostenbesparingen, met name voor grootschalige vectordatabases.
- Configureerbare prestaties versus precisie: Om uw zoekresultaten af te stemmen, bieden we een oversampling-parameter tijdens het uitvoeren van query's. Hiermee kunt u de afweging tussen de snelheid van het ophalen en de mogelijke impact van verminderde precisie bepalen.
Een Half-Precision vectorindex maken
Wanneer u een vectorindex voor uw verzameling definieert, kunt u halve-precisiecompressie inschakelen door binnen de "compression": "half" de cosmosSearchOptions optie te specificeren.
db.runCommand({
"createIndexes": "<vector_collection_name>",
"indexes": [
{
"key": { "<vector_field_name>": "cosmosSearch" },
"name": "<index_name>",
"cosmosSearchOptions": {
"kind": "vector-hnsw", // or vector-ivf
"similarity": "cos",
"dimensions": integer_value, // max 4000
"compression": "half"
}
}
]
});
Zoeken verbeteren met Oversampling
Wanneer u een query uitvoert op een vectorindex die gebruikmaakt van halve precisiecompressie, kunt u de oversampling parameter in de $search aggregatiefase gebruiken. Deze parameter helpt bij het beperken van mogelijke precisieverlies die wordt geïntroduceerd door de 16-bits weergave.
Met de oversampling factor kunt u meer potentiële dichtstbijzijnde buren ophalen uit de index met halve precisie dan het uiteindelijke aantal resultaten dat u wilt (k). Deze kandidaten worden vervolgens vergeleken met behulp van de oorspronkelijke volledige precisievectoren om een hogere nauwkeurigheid te garanderen in de uiteindelijke gerangschikte resultaten.
Als beste werkwijze voor het ophalen van de top 10 (k=10) meest vergelijkbare vectoren kunt u overwegen om op een waarde zoals oversampling of 2,0 in te stellen. Hiermee "oversampling": 1.5krijgt het systeem eerst 15 kandidaten uit de halve precisie-index en verfijnt vervolgens de top 10 met behulp van de volledige precisiegegevens.
db.collection.aggregate([
{
"$search": {
"cosmosSearch": {
"vector": query_vector,
"path": path_to_property,
"k": num_results_to_return,
"oversampling": double_value
}
}
},
{
"$project": {
"similarityScore": { "$meta": "searchScore" },
"_id": 0
}
}
]);
Opmerking
De oversampling factor moet een dubbele waarde zijn met een minimumwaarde van 1.0. Deze factor is alleen relevant voor vectorindexen die zijn gemaakt met "compression": "half".
Half-Precision versus Product Kwantisatie
Zowel Half-Precision als Product Quantization (PQ) comprimeren vectorindexen in Azure Cosmos DB voor MongoDB (vCore), maar ze verschillen in hoe zij compressie realiseren en de invloed ervan op zoeken:
| Eigenschap | Half-Precision | Product kwantisatie (PQ) |
|---|---|---|
| Compressiemethode | Vermindert elke vectordimensie tot 16 bits. | Verdeelt vectorruimte in subruimten en kwantificeert elk. |
| Maximumdimensies | Maximaal 4.000 | Tot 16.000 |
| Precisiewijziging | Een gering verlies door een lagere bitdiepte. | Potentieel groter verlies, configureerbaar via pqCompressedDims. |
| Zoeksnelheid | Gemiddelde snelheidstoename als gevolg van een kleinere index. | Aanzienlijke snelheidstoename door zeer gecomprimeerde vectoren. |
| Tijd voor indexopbouw | Relatief snel. | Kan langer zijn vanwege zwaartepuntstraining (pqSampleSize). |
| Indexondersteuning | HNSW, IVF. | DiskANN. |
| Configuratie | Schakel eenvoudig compression: "half" in. |
Meer parameters: pqCompressedDims, pqSampleSize. |
| Gebruik van oversampling | Helpt bij gering precisieverlies. | Essentieel voor het herstellen van nauwkeurigheid van grotere compressie. |
| Ideale gebruiksvoorbeelden | Gemiddelde geheugenreductie, verhoogde dimensies, acceptabele precisie. | Grote gegevenssets, hoge dimensies, geprioriteerde snelle zoekopdrachten, precisie beheerd door middel van oversampling. |