Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Co je indexování vektorů Half-Precision?
Indexování vektorových embeddingů s poloviční přesností umožňuje ukládat a indexovat tyto embeddingy pomocí 16bitových čísel s plovoucí desetinnou čárkou namísto standardních 32bitových plovoucích čísel. Tato optimalizace vede ke značnému snížení nákladů na využití paměti i úložiště, což usnadňuje práci s většími datovými sadami a vícerozměrnými vektory. Optimalizací hustoty dat navíc může přispět ke zlepšení výkonu dotazů v mnoha scénářích vektorových vyhledávání.
Klíčové výhody
- Podpora zvýšeného počtu dimenzí: S poloviční přesností teď můžete indexovat vektory s až 4 000 rozměry (zvýšení z předchozího limitu 2 000).
- Snížené nároky na úložiště: Ukládání vektorů v 16bitovém formátu výrazně snižuje objem úložiště požadovaný v porovnání s vektory s plnou přesností. To může vést ke značným úsporám nákladů, zejména u rozsáhlých vektorových databází.
- Konfigurovatelný výkon vs. přesnost: Abychom mohli výsledky hledání doladit, poskytneme během provádění dotazu parametr převzorkování . To vám umožní řídit kompromis mezi rychlostí načítání a potenciálním dopadem snížené přesnosti.
Vytvoření indexu vektoru Half-Precision
Při definování vektorového indexu pro vaši kolekci můžete povolit kompresi s poloviční přesností zadáním "compression": "half" možnosti v rámci cosmosSearchOptions.
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"
}
}
]
});
Vylepšení vyhledávání pomocí převzorkování
Při dotazování vektorového indexu, který využívá kompresi s poloviční přesností, můžete použít oversampling parametr v rámci $search fáze agregace. Tento parametr pomáhá zmírnit případné ztráty přesnosti zavedené 16bitovou reprezentací.
Faktor oversampling umožňuje načíst více potenciálních blízkých sousedů z indexu s poloviční přesností než konečný počet požadovaných výsledků (k). Tyto kandidáty se pak porovnávají pomocí původních vektorů s plnou přesností, aby se zajistila vyšší přesnost v konečných seřazených výsledcích.
Pokud například chcete získat prvních 10 (k=10) nejvíce podobných vektorů, osvědčeným postupem může být nastavit oversampling hodnotu jako 1,5 nebo 2,0. Systém "oversampling": 1.5by nejprve získal 15 kandidátů z indexu s poloviční přesností a pak upřesní prvních 10 pomocí dat úplné přesnosti.
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
}
}
]);
Poznámka:
Faktor oversampling musí být dvojitý s minimální hodnotou 1.0. Tento faktor je relevantní pouze pro vektorové indexy vytvořené pomocí "compression": "half".
Poloviční přesnost vs. kvantování produktu
Half-Precision i Product Quantization (PQ) komprimují indexy vektorů v Azure DocumentDB, ale liší se v tom, jak docílí komprese a ovlivňují vyhledávání.
| Vlastnost | Poloviční přesnost | Kvantování produktu (PQ) |
|---|---|---|
| Metoda komprese | Zmenšuje každou dimenzi vektoru na 16 bitů. | Rozdělí vektorový prostor na podprostory a vyčíslí každou z nich. |
| Maximální rozměry | Až 4 000 | Až 16 000 |
| Změna přesnosti | Mírná ztráta vlivem nižší hloubky bitu. | Potenciálně větší ztráta, konfigurovatelná prostřednictvím pqCompressedDims. |
| Rychlost vyhledávání | Mírné zvýšení rychlosti kvůli menšímu indexu. | Výrazné zvýšení rychlosti kvůli vysoce komprimovaným vektorům. |
| Čas sestavení indexu | Relativně rychle. | Může být delší v důsledku tréninku centroidu (pqSampleSize). |
| Podpora indexů | HNSW, IVF. | DiskANN. |
| Configuration | Jednoduše povolte compression: "half". |
Další parametry: pqCompressedDims, pqSampleSize. |
| Použití převzorkování | Pomáhá s drobnou ztrátou přesnosti. | Nezbytné pro obnovení přesnosti z větší komprese. |
| Ideální případy použití | Střední snížení paměti, zvětšení rozměrů a přijatelný kompromis v přesnosti. | Velké datové sady, vysoké dimenze, rychlé vyhledávání s prioritou, přesnost spravovaná pomocí převzorkování |