Sdílet prostřednictvím


Indexování vektorů s poloviční přesností v Azure DocumentDB

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í

Další krok