Google ScaNN (Scalable Nearest Neighbors) este una dintre cele mai performante biblioteci open-source de căutare a celor mai apropiați vecini cu produs scalar maxim (MIPS). Inovația cheie a ScaNN este cuantizarea anizotropă a vectorilor (Anisotropic Vector Quantization).
În timp ce cuantizarea vectorială tradițională (PQ) încearcă să minimizeze distanța L2 dintre vectorul original și reprezentarea cuantizată, ScaNN penalizează în mod asimetric erorile paralele cu vectorul de interogare față de erorile ortogonale, păstrând ordinea de clasificare a produsului scalar.
import scann
import numpy as np
dataset = np.random.randn(50000, 256).astype(np.float32)
# Construire pipeline ScaNN cu partiționare AH (Anisotropic Hashing)
searcher = scann.scann_ops_pybind.builder(dataset, 10, "dot_product") \
.tree(num_leaves=1000, num_leaves_to_search=100, training_sample_size=20000) \
.score_ah(dimensions_per_block=2, anisotropic_quantization_threshold=0.2) \
.reorder(100) \
.build()
query = np.random.randn(256).astype(np.float32)
neighbors, distances = searcher.search(query)
print("Top vecini identificați:", neighbors)
Această tehnică permite ScaNN să depășească de două ori performanța metodelor convenționale pe clasamentele standard ANN-Benchmarks la același nivel de recall.
Întrebări & Exemple practice:
Google ScaNN: Cuantizare Anizotropă și Scalable Nearest NeighborsAi o întrebare despre Google ScaNN: Cuantizare Anizotropă și Scalable Nearest Neighbors sau ai descoperit un truc, prompt sau fragment de cod util? Distribuie-l cu ceilalți membri ai comunității!
Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!
Nu au fost adăugate încă întrebări sau resurse pentru această pagină. Dacă ai testat un prompt sau ai un snippet util, adaugă-l mai jos pentru comunitate.