Como é que a quantização de produtos acelera grandes coleções privadas de vetores?

Eva Wong é a Redatora Técnica e e entusiasta residente na ZimaSpace. Uma geek de longa data com paixão por homelabs e software de código aberto, ela é especialista em traduzir conceitos técnicos complexos em guias acessíveis e práticos . Eva acredita que o auto-hospedagem deve ser divertida, não intimidante. Através dos seus tutoriais, ela capacita a comunidade adesmistificar configurações de hardware , desde a construção do seu primeiro NAS até dominar os contêineres Docker., from building their first NAS to mastering Docker containers.

A quantização de produto acelera grandes coleções privadas de vetores ao dividir os embeddings em subespaços e substituir cada subvetor por um código compacto de centróide aprendido.

Este é um mecanismo específico dentro da família mais abrangente da quantização vetorial. Em vez de reduzir cada coordenada de forma independente, a PQ aprende vários livros de códigos mais pequenos e representa um embedding de alta dimensionalidade como uma sequência de IDs de código. Um servidor de pesquisa doméstico pode manter muito mais desses códigos na memória e estimar as distâncias às consultas a partir de tabelas pré-calculadas, reduzindo tanto os bytes ocupados pelos vetores armazenados como a quantidade de operações aritméticas em precisão total necessárias durante uma análise ampla de candidatos.

A PQ Divide Um Embedding de Alta Dimensionalidade em Vários Subvetores

Suponha que um embedding tenha dimensão `d`. A PQ escolhe `M` subquantizadores e divide as coordenadas em `M` blocos de menor dimensão, para que cada bloco possa ser modelado separadamente.

O número de subquantizadores determina em quantos blocos de menor dimensão o embedding original é dividido e, por conseguinte, quantos IDs de código formam uma representação PQ.

É esta fatorização que dá o nome à quantização de produto: a aproximação completa é composta por escolhas feitas de forma independente em vários subespaços, em vez de resultar de um único livro de códigos enorme sobre o vetor completo. Os subespaços têm de dividir as dimensões do vetor de uma forma compatível. O tamanho e o número dos subespaços afetam a compressão, o custo de treino do livro de códigos, a precisão das distâncias e a forma como a distribuição dos dados se ajusta à representação fatorizada.

Cada Subespaço Aprende um Livro de Códigos de Centróides Representativos

A PQ é normalmente treinada com uma amostra representativa da coleção. Para cada subespaço, o agrupamento encontra vetores centróide que representam grupos de subvetores semelhantes.

Um quantizador de produto utiliza normalmente k-means para aprender centróides dentro de cada subespaço, minimizando o erro de aproximação entre os subvetores de treino e os representantes que lhes são atribuídos.

Após o treino, a base de dados já não precisa de armazenar todas as coordenadas originais no código compacto de pesquisa. Precisa apenas do identificador do centróide mais próximo de cada subespaço.

Se a amostra de treino representar mal os futuros documentos domésticos, os centróides aprendidos podem aproximar mal os vetores posteriores. A qualidade do livro de códigos é, portanto, uma fronteira de implementação, e não um pormenor pontual que possa ser ignorado.

O Vetor Armazenado Torna-se numa Sequência Curta de IDs de Código

Para cada subvetor, o codificador encontra o centróide mais próximo e armazena o índice desse centróide. A concatenação dos `M` índices forma o código PQ do embedding completo.

Armazenar m códigos de subvetor com um número configurável de bits substitui um vetor longo de números de vírgula flutuante por uma sequência curta de identificadores de centróides, além de livros de códigos partilhados.

Por exemplo, oito bits por subquantizador podem representar 256 escolhas de centróide nesse subespaço. O código vetorial total cresce então com o número de subquantizadores, em vez de exigir precisão de 32 bits para cada dimensão original. Os livros de códigos e a sobrecarga do índice também consomem memória, pelo que a coleção completa é maior do que apenas os bytes dos códigos. As poupanças tornam-se mais significativas quando o número de vetores é suficientemente elevado para amortizar esses livros de códigos partilhados.

-15% OFF

Uma Consulta Cria Tabelas de Consulta de Distâncias para Cada Subespaço

Quando chega uma consulta, o sistema divide-a nos mesmos subespaços e calcula a sua distância a cada centróide de cada livro de códigos. Esses valores formam pequenas tabelas de consulta.

Uma tabela de distâncias entre a consulta e os centróides pré-calcula a distância da consulta a cada centróide de cada subespaço, permitindo compor as distâncias dos candidatos a partir de pequenas consultas em tabelas, em vez de efetuar operações aritméticas sobre vetores completos.

Para estimar a distância a um vetor armazenado na base de dados, a pesquisa já não reconstrói todas as coordenadas completas. Lê cada ID de código, consulta a distância correspondente do subespaço e soma esses valores.

Este percurso orientado por tabelas é frequentemente designado por cálculo assimétrico de distâncias, porque a consulta pode permanecer em alta precisão enquanto os vetores da base de dados são representados por códigos quantizados.

Os Códigos Compactos Melhoram a Localidade da Cache à Medida que as Coleções Crescem

As análises de grandes volumes de vetores são frequentemente limitadas pela transferência dos dados dos candidatos através da memória, e não pela complexidade matemática de uma única operação de distância.

Os códigos curtos permitem que mais candidatos caibam nas caches da CPU e reduzem a largura de banda necessária por comparação.

O percurso de cálculo de distâncias comprimido pode ser acelerado com consultas em tabelas compatíveis com SIMD, porque a pesquisa com quantização de produto lê repetidamente códigos compactos e acumula distâncias dos subespaços.

Numa coleção doméstica privada, isso pode fazer a diferença entre um índice cuja representação ativa de pesquisa permanece na RAM e outro que compete continuamente com o LLM local, a base de dados e a cache do sistema de ficheiros.

O benefício é menor quando a coleção é pequena, quando a filtragem por metadados reduz cada consulta a apenas alguns vetores ou quando outra camada do índice domina a latência.

A PQ Normalmente Troca Algum Recall por Compressão e Velocidade

Os códigos de centróide aproximam os subvetores originais, pelo que dois candidatos podem trocar de ordem quando as suas distâncias reais são próximas. De forma geral, uma compressão mais agressiva deixa menos informação para os distinguir.

Considerar a quantização de produto como uma compressão com perdas torna clara a fronteira: códigos mais pequenos reduzem a memória ocupada pelos vetores, mas o erro de quantização pode alterar a ordenação dos vizinhos próximos.

Aumentar o número de subquantizadores ou de bits pode preservar mais detalhe, mas aumenta cada código e as estruturas de consulta. Códigos mais pequenos poupam mais memória, mas aumentam a probabilidade de erro de quantização. A configuração adequada depende do corpus. Manuais muito semelhantes, versões duplicadas de documentos e pesquisa de código com granularidade fina podem exigir mais precisão do que a recuperação semântica abrangente em notas domésticas diversificadas.

Uma Primeira Passagem Compacta Pode Ser Seguida por Reclassificação em Precisão Total

A PQ não exige que a resposta final confie cegamente na ordenação das distâncias comprimidas. Um sistema pode recuperar um conjunto mais amplo de candidatos com PQ e, em seguida, recalcular as pontuações apenas desses candidatos utilizando os vetores originais armazenados noutro local.

No contexto da recuperação semântica de vetores, a PQ altera a representação utilizada para comparar candidatos; a proveniência, a filtragem por metadados, a reordenação e o RAG continuam a funcionar em torno dessa etapa vetorial.

Esta abordagem em duas etapas distribui de forma assimétrica a memória e o processamento: os códigos comprimidos tratam do grande espaço de candidatos, enquanto os vetores exatos só são acedidos para uma pequena lista final.

A quantização de produto acelera uma coleção privada quando os códigos compactos reduzem de forma significativa o conjunto de trabalho e o tráfego de distâncias, sem baixar o recall medido para além da qualidade de evidência exigida pelo sistema RAG local.

Centro de Tecnologia e IA

Mais para Ler

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.