Executando verificação de segurança...
7

TurboQuant: 7,9× Menos RAM em Embeddings — Roda 8× Mais Docs na Mesma GPU

Embeddings de texto consomem até 80% da memória GPU em sistemas RAG de escala. Para 1 milhão de documentos com embeddings de dimensão 384, são necessários 1,5 GB em float32. Com 10 milhões de documentos, isso escala para 15 GB, exigindo sharding complexo ou offloading para CPU com latência elevada.

Implementei uma biblioteca Python com os quatro principais métodos do TurboQuant (Google Research, 2025) usando apenas NumPy. Os experimentos utilizam um corpus real de 591 documentos técnicos do Redis, indexados com o modelo BAAI/bge-small-en-v1.5.

Repositório completo com benchmarks

Resultados Principais

TurboQuantMSE 4-bit atinge 7,9× de compressão (192 MB vs 1,5 GB baseline) com recall@10 de 0.925 (-1 pp vs float32). Em 2-bit, alcança 15,7× de compressão (96 MB) mantendo o mesmo recall.

A latência de busca HNSW/FAISS permanece inalterada, pois a desquantização é vetorizada e ocorre durante a busca.

Comparação Detalhada

MétodoMemória (1M docs)CompressãoRecall@10Degradação
float321,5 GB0.935
TurboQuantMSE 4-bit192 MB7,9×0.925-1 pp
TurboQuantMSE 2-bit96 MB15,7×0.925-1 pp
Uniform 2-bit96 MB15,7×0.425-51 pp
Product Quantization192 MB7,9×0.892-4,3 pp

Validação em Pipeline RAG

Query de teste: "Como o Redis lida com falta de memória?"

Resposta float32 (top 5 documentos):

1. "Redis usa eviction policies LRU/LFU quando maxmemory é atingida"
2. "Configuração maxmemory-policy allkeys-lru é padrão"  
3. "Memória OOM protegida por políticas de eviction"

Resposta TurboQuantMSE 4-bit (7,9× menos RAM):

[Idêntica à float32 - mesma ordem de documentos]

Resposta Uniform 2-bit:

[Documentos irrelevantes sobre NestJS e autenticação]

Métodos Implementados

1. TurboQuantMSE (Método Principal)

Inovação central: Rotação ortogonal aleatória antes da quantização escalar.

Pipeline matemático:

1. R ← matriz ortogonal aleatória d×d
2. y = embeddings × Rᵀ        (rotação)
3. ŷ ← LloydMax(y, b bits)    (quantização por dimensão)  
4. x̂ = ŷ × R                 (des-rotação)

Por que funciona: Embeddings têm covariância não-isotrópica. A rotação uniformiza a variância entre dimensões, permitindo quantização escalar independente com MSE ótimo.

2. TurboQuantProd (Para Similaridade Cosseno)

TurboQuantMSE + correção de bias no produto interno.

Aplica quantização 1-bit no erro residual para estimativas não viesadas:

similarity_corrigida = <q̂, k̂> + correção_residuo(||q - q̂||, ||k - k̂||)

Preserva 99,8% da similaridade cosseno vs float32.

3. Comparações Baseline

  • Uniform Quantization: Divisão equiespaçada por dimensão
  • Lloyd-Max puro: Codebook ótimo sem rotação

Vantagens vs Product Quantization

  • Indexação em tempo zero (sem k-means pesado)
  • 11× menor MSE na mesma taxa de bits
  • Totalmente vetorizável em GPU/CPU
  • Recall superior em baixas taxas de bits

Como Aplicar no Seu Projeto

# Quantize seus embeddings
python compress_embeddings.py \
    --input your_embeddings.npy \
    --method turboquant_mse \
    --bits 4 \
    --output embeddings_4bit.npz

# Indexe no FAISS
python index_embeddings.py \
    --embeddings embeddings_4bit.npz \
    --index_type HNSW

Paper original: TurboQuant: Online Vector Quantization with Near-optimal Distortion Rate

Teste no seu ambiente e compartilhe os resultados!

Carregando publicação patrocinada...
3

Meus 2 cents,

Obrigado por compartilhar !

Sao bem poucas os estudos e/ou implementacoes do TurboQuant para RAG - eh um segmento que deve estourar conforme ele se torna mais mainstream.

Devidamente starreado e forkeado.

Parabens pela iniciativa !

Saude e Sucesso !

3

Texto full gpt, sem nenhuma explicação, so joga termos e ideias e não explica nada.
Olha um paragrafo aleatório:

"Embeddings têm energia não-uniforme entre dimensões. A rotação redistribui perfeitamente."

Me diz q se tu falar isso para uma pessoa da area se ela vai entender alguma coisa ou vai ser só um lero lero. Enfim, diversos exemplos de uma pessoa q so pediu pro gpt gerar um texto sobre algo q fez. No final não deu pra entender nada que a pessoa fez, só o problema e o resultado.

3
1
1
2

Kralho que daora mano ontem eu estava lendo sobre o Turboquant e hoje o Google recomendou esse artigo do Tabnews, cara está perfeito independente se usou IA ou não está muito claro.

Pra quem já conhece Fine Tuning, Embbeddings, RAG... etc. Consegue entender seu raciocínio completamente mandou muito bem!!!

Isso prova apenas o que estou visualizando na prática, que você consegue conectar com pessoas do seu nicho ou level 😉 pra todos outros o choro é livre. Querem tudo mastigado e quando não conseguem a culpa é terceirizada para outra pessoa.

Senão, estão entendendo o texto não é sua culpa a falta de conhecimento alheio, sobre o assunto Turbo quant essa é uma excelente oportunidade pra se aprofundarem mais e não ficar de mi-mi-mi que o texto é ruim, e se aprimore antes de virem falar mal.

0
1

Sei lá, me senti burro lendo isso, ou talvez tenha vivido em uma caverna, muitos termos técnicos, pouca explicação do que é ou o que faz de fato, o que o experimento busca a ter como retorno ou qual foi a conclusão. 😵‍💫

1

Não li a versão anterior do texto, mas essa nova versão está bem compreensível.

Muito massa ver bons resultados desse turboquant, a google n disponibilizou uma implementação inicial e os primeiros resultados independentes que tive notícia não eram tão bons com relação a velocidade, se não me engano. Você fez alguma análise de tempo? Qual o setup dos testes?

Indo nessa linha do turboquant, ontem eu encontrei um post no redit de uma implementação baseada no turboquant que usa uma álgebra diferente, essa implementação chamava rotorquant que prometia uma taxa de compressão ainda maior, acho que 19x, talvez seja do seu interesse.

No mais parabéns.

Conteúdo excluído
1

Valeu pelo toque direto. Concordo que o visual inicial tava carregado demais. Refiz sem emoji, mais limpo e direto pro ponto técnico. Se ainda não tá bom, me fala especificamente o que incomoda que eu ajusto na hora.