🚀 Experimente o Zilliz Cloud, o Milvus totalmente gerenciado, gratuitamente—experimente um desempenho 10x mais rápido! Experimente Agora>>

milvus-logo
LFAI
  • Home
  • Blog
  • Embeddings Matryoshka: Detalhe em várias escalas

Embeddings Matryoshka: Detalhe em várias escalas

  • Engineering
October 30, 2024
Stefan Webb, David Wang

O que são Matryoshka Embeddings?

Ao criar sistemas de pesquisa vetorial eficientes, um dos principais desafios é gerir os custos de armazenamento, mantendo uma latência e uma recuperação aceitáveis. Os modelos modernos de incorporação produzem vectores com centenas ou milhares de dimensões, criando um armazenamento significativo e uma sobrecarga computacional para o vetor bruto e o índice.

Tradicionalmente, os requisitos de armazenamento são reduzidos através da aplicação de um método de quantização ou de redução da dimensionalidade imediatamente antes da construção do índice. Por exemplo, podemos poupar armazenamento reduzindo a precisão utilizando a Quantização de Produtos (PQ) ou o número de dimensões utilizando a Análise de Componentes Principais (PCA). Estes métodos analisam todo o conjunto de vectores para encontrar um conjunto mais compacto que mantenha as relações semânticas entre os vectores.

Embora eficazes, estas abordagens padrão reduzem a precisão ou a dimensionalidade apenas uma vez e numa única escala. Mas e se pudéssemos manter várias camadas de detalhe em simultâneo, como uma pirâmide de representações cada vez mais precisas?

Eis os embeddings Matryoshka. Com o nome das bonecas russas (ver ilustração), estas construções inteligentes incorporam várias escalas de representação num único vetor. Ao contrário dos métodos tradicionais de pós-processamento, os encaixes Matryoshka aprendem esta estrutura multi-escala durante o processo de formação inicial. O resultado é notável: não só a incorporação completa capta a semântica da entrada, como cada prefixo de subconjunto aninhado (primeira metade, primeiro quarto, etc.) fornece uma representação coerente, embora menos pormenorizada.

Figure: Visualization of Matryoshka embeddings with multiple layers of detail Figura: Visualização das incorporações Matryoshka com várias camadas de pormenor

Figura: Visualização de embeddings Matryoshka com várias camadas de pormenor

Esta abordagem contrasta fortemente com as incrustações convencionais, em que a utilização de subconjuntos arbitrários das dimensões do vetor destrói normalmente o significado semântico. Com as incorporações Matryoshka, pode escolher a granularidade que melhor equilibra a precisão e o custo computacional da sua tarefa específica.

Precisa de uma pesquisa rápida e aproximada? Utilize a "boneca" mais pequena. Precisa de máxima precisão? Utilize a incorporação completa. Esta flexibilidade torna-os particularmente valiosos para sistemas que se adaptam a diferentes requisitos de desempenho ou restrições de recursos.

Inferência

Uma aplicação valiosa das incorporações Matryoshka é a aceleração das pesquisas de semelhança sem sacrificar a recuperação. Ao aproveitar subconjuntos mais pequenos de embeddings de consultas e bases de dados - como o primeiro 1/32 das suas dimensões - podemos construir um índice sobre este espaço reduzido que ainda preserva muita da informação de semelhança. Os resultados iniciais deste espaço de incorporação mais pequeno podem ser utilizados diretamente. No entanto, existe também uma técnica para aumentar a recuperação e ter em conta qualquer redução menor do corte dimensional, tornando esta abordagem eficiente e eficaz para tarefas de pesquisa de semelhanças.

Figure: How the funnel search works with Matryoshka embeddings Figura: Como a pesquisa de funil funciona com as incorporações Matryoshka

Figura: Como funciona a pesquisa em funil com os embeddings Matryoshka

Para acelerar eficazmente a pesquisa por semelhança, mantendo a precisão, podemos utilizar uma abordagem de "pesquisa em funil". Primeiro, efectuamos uma pesquisa de semelhanças inicial utilizando apenas o primeiro 1/32 das dimensões de incorporação, gerando um vasto conjunto de itens candidatos. De seguida, classificamos estes candidatos com base na sua semelhança com a consulta, utilizando os primeiros 1/16 das dimensões, eliminando uma parte da lista. Este processo continua de forma iterativa, reavaliando e podando com subconjuntos cada vez maiores das dimensões de incorporação - 1/8, 1/4, e assim por diante. É importante notar que só efectuamos uma pesquisa de semelhança inicial neste espaço de dimensão inferior e que uma única passagem do modelo de incorporação calcula a incorporação da consulta. Este processo de afunilamento reduz os candidatos em cada passo e é mais rápido e mais eficiente do que a pesquisa direta no espaço de dimensão total. A obtenção de muitas correspondências a partir do espaço 1/32-dimensional e o seu refinamento através da pesquisa de funil pode acelerar significativamente a pesquisa de semelhanças, preservando uma forte capacidade de recuperação.

Formação

Vejamos alguns pormenores técnicos. O método é muito simples de aplicar. Considere o contexto de afinação de um modelo BERT para a incorporação de frases. Para converter um modelo BERT, que foi pré-treinado com base na perda de tokens mascarados, num modelo de incorporação de frases, formamos a incorporação de frases como a média da camada final, ou seja, a média das incorporações contextualizadas por token.

Uma opção de objetivo de formação é a perda Cosine Sentence (CoSENT), L(u,v;s)L(u, v; s) L v s . Introduz um par de frases incorporadas, u,vu,v u v, e a sua pontuação de semelhança pretendida, ss s (ver a ligação acima para a fórmula). Agora, para aprender os encaixes Matryoshka, fazemos uma pequena modificação no objetivo de treino:

LM(u,v)=w0L(u1:d,v1:d)+w1L(u1:d/2,v1:d/2)+w2L(u1:d/4,v1:d/4)+⋯L_M(u, v) = w_0L(u_{1:d}, v_{1:d}) + w_1L(u_{1:d/2}, v_{1:d/2}) + w_2L(u_{1:d/4}, v_{1:d/4}) + \cdots L v = w L1, v 1) + w L1, v 1) + w L1, v

onde a soma é continuada calculando a perda em metade da entrada para o termo anterior até ser atingido um estrangulamento de informação. Os autores sugerem que se defina

w0=w1=⋯=1w_0=w_1=\cdots=1 w

Em termos simples, a perda Matryoshka é uma soma ponderada da perda original sobre subconjuntos recursivos da entrada.

Uma das principais conclusões da equação acima é que a perda de Matryoshka consegue uma aprendizagem eficiente de representações a várias escalas através da partilha de pesos entre os modelos de incorporação (o mesmo modelo é utilizado para codificar, por exemplo, u1:du_{1:d} u e u1:d/2u_{1:d/2} u ) e partilhando dimensões entre escalas(u1:d/2u_{1:d/2} u é um subconjunto de uu u).

Embeddings Matryoshka e Milvus

O Milvus suporta sem problemas qualquer modelo de integração Matryoshka que possa ser carregado através de bibliotecas padrão como pymilvus.model, sentence-transformers ou outras ferramentas semelhantes. Do ponto de vista do sistema, não há diferença funcional entre um modelo de incorporação normal e um modelo especificamente treinado para gerar incorporações Matryoshka.

Os modelos de incorporação Matryoshka mais populares incluem:

Para obter um guia completo sobre a utilização de embeddings Matryoshka com o Milvus, consulte o bloco de notas Funnel Search with Matryoshka Embeddings.

Resumo

O embedding Matryoshka permite que os desenvolvedores criem embeddings encurtados sem sacrificar a integridade semântica, tornando-os ideais para pesquisa e armazenamento mais eficientes. Embora seja possível modificar um modelo existente, também estão disponíveis opções pré-treinadas, como as da OpenAI e da Hugging Face.

No entanto, uma limitação atual é a escassez de modelos Matryoshka embeddings de código aberto, com poucos disponíveis no hub Hugging Face. Além disso, estes modelos não são muitas vezes rotulados explicitamente como "Matryoshka", tornando-os mais difíceis de localizar. Esperamos que, com o crescente interesse, uma disponibilidade mais ampla e uma rotulagem mais clara possam surgir em breve.

Pronto para otimizar as suas capacidades de pesquisa? Comece já a utilizar as incorporações Milvus + Matryoshka!

Recursos

Try Managed Milvus for Free

Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

Get Started

Like the article? Spread the word

Continue Lendo