PgDog: Projeto Open Source de Shard para pgvector

Escalar o pgvector além de um milhão de embeddings se torna desafiador devido à construção lenta do índice. Este post apresenta o PgDog, um projeto open source que particiona o índice pgvector. Aproveitando as características de agrupamento inerentes do IVFFlat, o PgDog distribui partições do espaço vetorial em várias máquinas. Vetores de consulta são roteados para shards apropriados com base na proximidade com os centroides, calculados usando scikit-learn, melhorando significativamente a velocidade de busca e o recall. Os detalhes da implementação cobrem o cálculo do centroide, uma função de particionamento personalizada e análise de SQL usando pg_query. Experimentos demonstram a eficácia do PgDog, oferecendo otimizações como consultas paralelas entre shards e alocação refinada de centroides. Trabalhos futuros incluem suporte a mais algoritmos de distância e instruções SIMD para cálculos mais rápidos.