Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A termékkvantálás (PQ) egy hatékony technika az Azure DocumentDB-ben, amely jelentősen tömöríti a vektorkeresésben használt nagy dimenziójú vektorbeágyazást. Ez a tömörítés csökkenti a memóriahasználatot, és felgyorsítja a legközelebbi szomszédkereséseket, és javítja a nagy vektoradatkészletek hatékonyságát. Bár a PQ a sebesség és a skálázás előnyeit kínálja, a pontosság rovására is járhat.
Benefits
- Csökkentett tárterület: A PQ jelentősen csökkenti a vektorindexekhez szükséges tárterületet a teljes pontosságú (lebegőpontos32) vektorokhoz képest, ami jelentős költségmegtakarítást eredményez a nagy adathalmazok esetében.
- Gyorsabb keresés: A tömörített vektorok használata lehetővé teszi a rendszer számára a távolságok kiszámítását és a potenciális legközelebbi szomszédok gyorsabb megtalálását, mint a teljes pontosságú vektorokkal.
- Továbbfejlesztett méretezhetőség: Az alacsonyabb memóriaterhelés lehetővé teszi a vektorkeresés skálázását a fürtben lévő nagyobb és magasabb dimenziójú beágyazások kezeléséhez.
Hogyan működik?
A termékkvantizálás a nagy dimenziójú vektorteret több alsó dimenziós altérre osztja. Ezután az egyes altéreket egymástól függetlenül kvantáljuk egy fürtözési algoritmus használatával (általában k-közép). Az egyes fürtök középpontja a benne lévő összes vektort jelöli. Az egyes eredeti vektorokat ezután az egyes altérben található fürtazonosítók rövid kódja jelöli.
Termékkvantálás használata
Vektorindex termékkvantizálással történő létrehozásához használja a createIndexes parancsot a cosmosSearchOptions, "compression": "pq" és "kind" : "vector-diskann" megadásával:
{
"createIndexes": "<collection_name>",
"indexes": [
{
"name": "<index_name>",
"key": {
"<path_to_property>": "cosmosSearch"
},
"cosmosSearchOptions": {
"kind": "vector-diskann",
"similarity": "<string_value>", // "COS", "L2"
"dimensions": <integer_value>, // Max 16,000
"compression": "pq",
"pqCompressedDims": <integer_value>, // Dimensions after compression (< original)
"pqSampleSize": <integer_value> // Samples for centroid generation
}
}
]
}
| Field | Típus | Description |
|---|---|---|
compression |
karakterlánc | Termékkvantálás engedélyezésére "pq" van beállítva. |
pqCompressedDims |
egész szám | A PQ-tömörítés utáni dimenziók (az eredeti méretnél kisebbnek kell lenniük). Automatikusan kiszámítva, ha nincs megadva. Tartomány: 1-8000. |
pqSampleSize |
egész szám | PQ centroid betanítás mintavektorainak száma. A magasabb érték jobb minőséget, de hosszabb összeállítási időt jelent. Alapértelmezett: 1000. Tartomány: 1000-100000. |
Megjegyzés:
A termékkvantálás jelenleg csak az vector-diskann indextípussal támogatott.
Megjegyzés:
A legjobb eredmény érdekében hozzon létre egy PQ-indexet, miután a gyűjtemény adataival rendelkezik. Ha a gyűjtemény üres, a rendszer véletlenszerű vektorokat használ a kezdeti centroidokhoz. Ha a dokumentumok száma kisebb, mint pqSampleSize, a betanítási adatokat véletlenszerű adatokkal töltjük fel a meglévő vektoradatok tartományán belül.
A tömörített dimenziók beállítása
Ha nem adja meg pqCompressedDims, az automatikusan az eredeti vektor dimensionsalapján határozza meg:
| Eredeti dimenziótartomány | pqCompressedDims |
|---|---|
| [0 - 32) | méretek / 2 |
| [32 - 64) | 16 |
| [64 - 128) | 32 |
| [128 - 512) | 64 |
| [512 - 1536) | 96 |
| 1536 felett | 128 |
PQ-index létrehozása
db.runCommand(
{
"createIndexes": "your_vector_collection",
"indexes": [
{
"key": { "v": "cosmosSearch" },
"name": "diskann_pq_index",
"cosmosSearchOptions": {
"kind": "vector-diskann",
"similarity": "COS",
"dimensions": 1536,
"compression": "pq",
"pqCompressedDims": 96,
"pqSampleSize": 2000
}
}
]
} )
A keresés javítása a túlmintavételezéssel
A PQ-tömörítés pontosságvesztéshez vezethet a távolságszámításokban. Az Azure DocumentDB a oversampling operátorban kínálja a $search paramétert ennek csökkentése érdekében.
A oversampling tényező (legalább 1 lebegőpontos szám) meghatározza, hogy hány jelölt vektort kell lekérni a tömörített indexből a k (a kívánt eredmények száma) meghaladásával. Ezek a további jelöltek az eredeti, teljes pontosságú vektorok használatával pontosítják a keresést, javítva a végső pontosságot k . 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 az indexből, majd a teljes pontosságú adatokkal finomítaná a top 10-et.
{
"$search": {
"cosmosSearch": {
"vector": <vector_to_search>,
"path": "<path_to_property>",
"k": <num_results_to_return>,
"oversampling": <float_value>
},
}
}
Ez a kódrészlet egy vektorkeresést mutat be a $search Product quantization operátor használatával. Bemenetként vesz queryVector, és megkeresi a v mezőt. A lekérdezés a 10 legtöbb hasonló dokumentumot (k: 102,0-s tényezővel oversampling ) kéri le, amely 20 jelöltet kér le, akik javítják a keresés pontosságát a tömörített indexen.
db.your_vector_collection.aggregate([
{
$search: {
"cosmosSearch": {
"vector": [0.1, 0.5, 0.9, ...],
"path": "v",
"k": 10,
"oversampling": 2.0 // Retrieve 2 * 10 = 20 candidates for reranking
},
"returnStoredSource": true
}
}
])
Half-Precision és termékkonkvantizáció
A Félprecíziós és a termékkvantálási (PQ) eljárások egyaránt tömörítik a vektorindexeket az Azure DocumentDB-ben, de eltérnek abban, hogyan érik el a tömörítést, és milyen hatással vannak 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. |
A termékkvantálás szempontjai
-
Pontosság és tömörítés: A nagyobb PQ-tömörítés kisebb indexekhez és gyorsabb kereséshez, de nagyobb pontosságvesztéshez vezet. Kísérletezzen
pqCompressedDims-val ésoversampling-vel, hogy megtalálja a megfelelő egyensúlyt. -
Index építési ideje: A PQ index létrehozása hosszabb időt vehet igénybe a centroidok betanítási folyamata miatt, amelyet
pqSampleSizebefolyásol. - Adatterjesztés: A PQ akkor működik a legjobban, ha a vektoradatok tiszta fürtstruktúrával rendelkeznek.