Half-Precision vektorindexelés az Azure DocumentDB-ben

Mi az a félpontosságú vektorindexelés?

A fél pontosságú vektorindexelés lehetővé teszi a vektorbeágyazások tárolását és indexelését a standard 32 bites lebegőpontos számok helyett 16 bites lebegőpontos számokkal. Ez az optimalizálás a memóriahasználat és a tárolási költségek jelentős csökkenéséhez vezet, így megvalósíthatóbb a nagyobb adathalmazok és a magasabb dimenziójú vektorok használata. Emellett az adatsűrűség optimalizálásával számos vektoros keresési forgatókönyvben hozzájárulhat a lekérdezési teljesítmény javításához.

Főbb előnyök

  • Nagyobb dimenziójú támogatás: A félpontossággal mostantól akár 4000 dimenzióval is indexelheti a vektorokat (ez az előző 2000-hez képest).
  • Csökkentett tárterület-lábnyom: A vektorok 16 bites formátumban való tárolása jelentősen csökkenti a szükséges tárterületet a teljes pontosságú vektorokhoz képest. Ez jelentős költségmegtakarításhoz vezethet, különösen a nagy méretű vektoradatbázisok esetében.
  • Konfigurálható teljesítmény és pontosság: A keresési eredmények finomhangolásához túlbélyegző paramétert biztosítunk a lekérdezés végrehajtása során. Ez lehetővé teszi a lekérési sebesség és a kisebb pontosság lehetséges hatásai közötti kompromisszumok szabályozását.

Fél-precíziós vektorindex létrehozása

Ha vektorindexet határoz meg a gyűjteményhez, engedélyezheti a fél pontosságú tömörítést a beállítás megadásával a "compression": "half" gyűjteményen cosmosSearchOptionsbelül.

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"
      }
    }
  ]
});

A keresés javítása a túlmintavételezéssel

A félig precizitású tömörítést használó vektorindex lekérdezésekor az összesítési szakaszban használhatja a oversampling$search paramétert. Ez a paraméter segít csökkenteni a 16 bites ábrázolás által okozott esetleges pontosságvesztést.

A oversampling tényező lehetővé teszi, hogy több potenciális legközelebbi szomszédot kérjen le a fél pontosságú indexből, mint a kívánt eredmények végleges száma (k). Ezeket a jelölteket ezután az eredeti teljes pontosságú vektorokkal hasonlítják össze, hogy nagyobb pontosságot biztosítsanak a végső rangsorolt eredményekben.

Ha például az első 10 (k=10) legtöbb hasonló vektort szeretné megkapni, érdemes lehet egy oversampling vagy 2,0-s értékre állítani. Ezzel "oversampling": 1.5a rendszerrel először 15 jelöltet kapna a fél pontosságú indexből, majd a teljes pontosságú adatokkal finomítaná a top 10-et.

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
    }
  }
]);

Megjegyzés:

A oversampling tényezőnek a minimumértékkel 1.0rendelkező dupla értéknek kell lennie. Ez a tényező csak a következővel "compression": "half"létrehozott vektorindexekre vonatkozik: .

Half-Precision és termékkonkvantizáció

Az Azure DocumentDB esetében mind a Half-Precision, mind pedig a termékkvantálás (PQ) a vektorindexeket tömöríti, azonban eltérnek abban, hogy miként valósítják meg a tömörítést, és hogyan hatnak a keresésre.

Feature Félprecíziós Termékkvantálás (PQ)
Tömörítési módszer Az egyes vektordimenziókat 16 bitre csökkenti. A vektorteret altereire osztja, és mindegyiket kvantálja.
Maximális méretek Legfeljebb 4000 Legfeljebb 16 000
Pontosság módosítása Kisebb veszteség az alacsonyabb bitmélység miatt. Potenciálisan nagyobb veszteség, beállítható pqCompressedDims segítségével.
Keresési sebesség Kisebb index miatt mérsékelt sebességnövekedés. Jelentős sebességnövekedés a nagymértékben tömörített vektorok miatt.
Index felépítési ideje Viszonylag gyors. Lehet hosszabb is a centroid betanítás (pqSampleSize) miatt.
Indextámogatás HNSW, IVF. DiskANN.
Configuration Egyszerűen engedélyezze compression: "half". További paraméterek: pqCompressedDims, pqSampleSize.
Túlmintavételezés használata Segít a kisebb precízióvesztés kezelésében. Nélkülözhetetlen a nagyobb tömörítési pontosság helyreállításához.
Ideális használati esetek Mérsékelt memóriacsökkentés, megnövelt méretek, elfogadható pontosságú kompromisszumok. Nagy adathalmazok, nagy méretek, gyors keresés rangsorolása, túlméretezéssel felügyelt pontosság.

Következő lépés