As postagens anteriores da série "Explicação sobre o Gemma" forneceram uma visão geral detalhada das arquiteturas da família de modelos Gemma. Você pode encontrar links para cada postagem abaixo:
Nesta postagem, exploramos a nova arquitetura do EmbeddingGemma e seu roteiro. Para uma introdução de nível alto, você pode ler este blog de anúncio. Para uma visão abrangente da metodologia, dos experimentos e da avaliação, consulte o relatório técnico completo. Vamos lá!
Você já se perguntou como os computadores são treinados para interpretar o significado e o contexto de suas palavras, frases ou até mesmo de documentos inteiros? A magia muitas vezes está em algo chamado "incorporações", que são representações numéricas que capturam a essência e o significado do texto. O EmbeddingGemma é um modelo de incorporação capaz de transformar texto em incorporações. Essas incorporações podem ser usadas para tarefas como pesquisa, geração aumentada via recuperação e compreensão.
O EmbeddingGemma não foi criado a partir do zero. Ele começou como um modelo Gemma 3 pré-treinado com 300 milhões de parâmetros. Ele foi, então, transformado usando o método de adaptação do T5Gemma, que converte o modelo Gemma original somente decodificador em uma arquitetura de codificador-decodificador. Em seguida, inicializamos o EmbeddingGemma a partir do codificador desse novo modelo, garantindo que ele fosse capaz de produzir representações expressivas desde o início. Essa abordagem permite que o EmbeddingGemma herde muito do "conhecimento de mundo" de seu antecessor sem precisar de treinamento adicional
Você pode usar o EmbeddingGemma para gerar incorporações usando frameworks como o Sentence Transformers. Dada uma sequência de entrada de texto, o EmbeddingGemma a processa por meio de uma série de etapas cuidadosamente projetadas para produzir uma representação vetorial concisa.
SentenceTransformer(
(0): Transformer({'max_seq_length': 2048, 'do_lower_case': False, 'architecture': 'Gemma3TextModel'})
(1): Pooling({'word_embedding_dimension': 768, 'pooling_mode_cls_token': False, 'pooling_mode_mean_tokens': True, 'pooling_mode_max_tokens': False, 'pooling_mode_mean_sqrt_len_tokens': False, 'pooling_mode_weightedmean_tokens': False, 'pooling_mode_lasttoken': False, 'include_prompt': True})
(2): Dense({'in_features': 768, 'out_features': 3072, 'bias': False, 'activation_function': 'torch.nn.modules.linear.Identity'})
(3): Dense({'in_features': 3072, 'out_features': 768, 'bias': False, 'activation_function': 'torch.nn.modules.linear.Identity'})
(4): Normalize()
)
(0): Transformer
Uma sequência de entrada é transmitida através desse modelo transformador somente codificador. Esse transformador utiliza a atenção bidirecional para entender o significado de cada token do contexto fornecido, produzindo uma sequência de vetores com 768 dimensões, uma para cada token da sequência de entrada.
(1): Pooling
A saída do transformador é uma sequência de incorporações de tokens. A tarefa da camada pooling é converter essa sequência de comprimento variável em uma única incorporação de tamanho fixo para toda a entrada. O EmbeddingGemma está usando uma estratégia de pooling chamada "Mean Pooling". Essa é a abordagem mais comum, na qual é calculada a média de todas as incorporações de tokens.
(2): Dense
Em seguida, aplicamos uma projeção linear para escalonar a incorporação (768) até uma dimensão de incorporação maior (3072).
(3): Dense
Depois, aplicamos outra projeção linear para escalonar a incorporação com 3072 dimensões aprendida para as dimensões finais de destino (768).
(4): Normalize
Por fim, aplicamos a normalização euclidiana, habilitando comparações eficientes de similaridades. Essa é uma operação mais simples e mais barata, em comparação com o RMSNorm mais complexo existente em outros modelos Gemma.
O EmbeddingGemma aprende a criar suas poderosas incorporações otimizando uma combinação de três funções distintas de perda ponderada durante seu treinamento.
A perda de NCE ensina ao modelo os conceitos fundamentais de similaridade e contraste. Para cada entrada (por exemplo, uma consulta), ele aprende a:
A chave é a inclusão de "negativos difíceis" (respostas semanticamente similares à consulta, mas que são incorretas ou incompletas). Ao ser treinado com esses exemplos complicados, o modelo é forçado a aprender as distinções sutis e refinadas que separam o correto do quase correto.
É como construir uma biblioteca bem organizada, na qual os itens relacionados são colocados próximos uns dos outros, enquanto os não relacionados são mantidos distantes.
Essa perda foi projetada para incentivar o EmbeddingGemma a produzir incorporações que estão espalhadas pelo espaço de incorporação. Mesmo que o modelo tenha aprendido a separar coisas similares e não similares, ele ainda pode ficar "preguiçoso" e simplesmente empilhar todas as incorporações no mesmo cantinho.
Esse regularizador torna as incorporações robustas para quantização e permite uma pesquisa eficiente em bancos de dados vetoriais usando algoritmos de vizinho mais próximo aproximado (ANN, na sigla em inglês).
Essa perda atua como uma forma de destilação de conhecimento, na qual o EmbeddingGemma aprende tendo um modelo maior e mais poderoso, o Gemini Embedding, como professor.
A perda minimiza a distância L2 (uma medida de diferença) entre as incorporações dos dois modelos de incorporação para consultas e passagens. Isso permite que o EmbeddingGemma aprenda com o modelo professor, herdando efetivamente grande parte de seus conhecimentos e capacidades.
Ao combinar essas três funções de perda, o EmbeddingGemma aprende a produzir representações bem estruturadas, expressivas e robustas, habilitando um alto desempenho em tarefas de pesquisa e recuperação do mundo real.
O MLR é uma técnica que permite aninhar representações menores e de alta qualidade dentro de uma maior. Por exemplo, mesmo que as incorporações do EmbeddingGemma tenham 768 dimensões, você pode truncar as incorporações e obter incorporações menores, com 512, 256 ou até 128 dimensões, que mantêm a alta qualidade.
Durante o treinamento, as funções de perda não são apenas aplicadas à incorporação final com 768 dimensões, mas também aos subconjuntos sobrepostos dessa incorporação (as primeiras 512, 256 e 128 dimensões). Isso garante que até mesmo uma versão truncada da incorporação inteira seja uma representação poderosa e completa.
Para você, isso significa poder escolher o compromisso certo entre desempenho e eficiência para o aplicativo sem precisar treinar nem gerenciar vários modelos. Basta selecionar o tamanho de incorporação que atende melhor às suas necessidades, desde as 768 dimensões completas, para a máxima qualidade, até tamanhos menores, para mais velocidade e custos de armazenamento reduzidos.
A jornada do modelo inclui várias etapas:
Com a adaptação cuidadosa de um modelo de base poderoso e seu refinamento com uma abordagem de treinamento multifacetada, a arquitetura do EmbeddingGemma foi projetada para fornecer representações de texto altamente eficazes e versáteis, adequadas a uma ampla gama de aplicativos.
Exploramos a arquitetura do EmbeddingGemma, um modelo poderoso para geração de incorporações de texto. Conhecemos suas origens, o processo de geração de incorporações e o roteiro de desenvolvimento. Para se aprofundar em nossa metodologia de treinamento, em comparativos de mercado de avaliação e nos resultados experimentais completos, recomendamos a leitura do relatório técnico oficial.
Modelos como o EmbeddingGemma lideram o caminho para tecnologias semânticas mais eficientes e poderosas. À medida que esses modelos se tornarem mais capazes e acessíveis, podemos esperar avanços em várias áreas importantes, como geração aumentada via recuperação (RAG), IA no dispositivo e hiperpersonalização.
Encontre os pesos do modelo no Hugging Face, no Kaggle e na Vertex AI e comece a experimentar hoje mesmo.
Agradecemos a leitura!