Cuantizare Vectorială (Scalar & Product Quantization) în Baze de Date Vectoriale & Căutare Semantică

Tehnici de compresie a vectorilor pentru reducerea consumului de memorie RAM cu până la 75-90% și accelerarea interogărilor fără pierderi semnificative de calitate.

Sintaxă & interogare
# Tipuri de cuantizare în Vector DB:
• Scalar Quantization (SQ): float32 (4 bytes) -> int8 (1 byte)  [reducere 75% RAM]
• Product Quantization (PQ): descompune vectorul în sub-vectori grupați în codebooks
• Binary Quantization (BQ): float32 -> 1 bit per dimensiune (pentru embeddings mari)

Descriere & Utilizare

Un milion de vectori cu 1536 de dimensiuni stocați în format float32 (4 octeți per număr) ocupă aproximativ 6.14 GB doar pentru datele brute, iar graful HNSW adaugă încă 2–4 GB de RAM. La zeci de milioane de documente, costul serverelor cu sute de gigabytes de RAM devine prohibitiv.

Cuantizarea Vectorială (Vector Quantization) rezolvă această problemă comprimând reprezentarea numerică: Scalar Quantization (SQ) mapează fiecare valoare float32 într-un întreg de 8 biți (int8), reducând amprenta de memorie cu exact 75% cu o scădere infimă a acurateței (recall pierdut sub 1%).

Product Quantization (PQ) oferă o compresie și mai agresivă (până la 95%), iar motoarele moderne (Qdrant, Pinecone) combină căutarea rapidă pe vectorii comprimați cu o fază finală de Oversampling & Rescoring pe discuri NVMe pentru precizie maximă.

Cum să o reții ușor

💡 Ca salvarea unei imagini RAW necomprimate de 50 MB ca fișier JPEG de 3 MB: ochiul uman (și modelul AI) nu observă nicio diferență calitativă, dar economisești 94% din spațiul de stocare.

Opțiuni și parametri tehnici

  • Scalar Quantization (SQ): recomandat ca prim pas în orice proiect de producție mare; este extrem de stabil și rapid.
  • Rescore (always_ram / on_disk): dacă este activat, motorul ia primii K * 3 candidați din indexul cuantizat și le recalculează scorul pe vectorii originali din NVMe.
  • Binary Quantization (BQ): ideal doar pentru modele speciale antrenate nativ cu pierdere binară (ex: Cohere Embed v3).

Exemple practice și cazuri de utilizare

  • Activarea Scalar Quantization în Qdrant: client.update_collection(collection_name="articole", quantization_config=models.ScalarQuantization(scalar=models.ScalarQuantizationConfig(type=models.ScalarType.INT8, quantile=0.99, always_ram=True)))
  • Economie de costuri: o instanță cu 64 GB RAM poate găzdui 10 milioane de vectori în loc de doar 2.5 milioane.
  • Configurare rescoring: setează oversampling=2.0 la căutare pentru a verifica de două ori mai mulți candidați.

Sfaturi de configurare & capcane

Activează întotdeauna opțiunea always_ram=False în Qdrant dacă rulezi pe servere cu discuri NVMe rapide — vectorii originali vor rămâne pe disc și vor fi citiți doar pentru primele 10 rezultate finale.

Comenzi și ghiduri înrudite