Do ajuste à produção: um pipeline de incorporação escalonável com o Dataflow

4 DE SETEMBRO DE 2025
Danny McCormick Staff Software Engineer Google Cloud Dataflow
Ian Ballantyne Senior Developer Relations Engineer Google DeepMind

O mundo da IA está se movendo a um ritmo empolgante, e as incorporações estão no centro de muitos aplicativos modernos, como a pesquisa semântica e a geração aumentada via recuperação (RAG, na sigla em inglês). Hoje, temos o prazer de mostrar como você pode aproveitar o novo modelo de incorporação aberto com 308 milhões de parâmetros e altamente eficiente do Google, o EmbeddingGemma. Embora seu tamanho pequeno o torne perfeito para aplicativos no dispositivo, essa mesma eficiência abre novas e poderosas possibilidades para a nuvem, especialmente quando se trata da personalização via ajuste. Mostraremos como usar o EmbeddingGemma com o Dataflow do Google Cloud e com bancos de dados vetoriais, como o AlloyDB, para criar um pipeline de ingestão de conhecimento escalonável e em tempo real.


O poder das incorporações e do Dataflow

As incorporações são representações vetoriais numéricas de dados que capturam as relações subjacentes entre palavras e conceitos. Elas são a pedra angular de aplicativos que precisam entender informações em um nível conceitual mais profundo, desde a pesquisa de documentos semanticamente semelhantes a uma consulta até o fornecimento de contexto relevante para modelos de linguagem grandes (LLMs) em sistemas de RAG.

Para habilitar esses aplicativos, você precisa de um pipeline robusto de ingestão de conhecimento que possa processar dados não estruturados, convertê-los em incorporações e carregá-los em um banco de dados vetorial especializado. É aqui que o Dataflow pode ajudar, encapsulando essas etapas em um único pipeline gerenciado.

O uso de um modelo aberto pequeno e altamente eficiente, como o EmbeddingGemma, no centro do pipeline torna todo o processo independente, o que pode simplificar o gerenciamento porque elimina a necessidade de chamadas de rede externas para outros serviços na etapa de incorporação. Por ser um modelo aberto, ele pode ser hospedado inteiramente dentro do Dataflow. Isso ajuda a processar conjuntos de dados privados em larga escala com segurança.

Além desses benefícios operacionais, o EmbeddingGemma também é ajustável, permitindo que você o personalize para suas necessidades específicas de incorporação de dados; você pode encontrar um exemplo de ajuste aqui. A qualidade é tão importante quanto a escalonabilidade, e o EmbeddingGemma também se destaca nisso. Ele é o modelo de incorporação multilíngue somente de texto com a mais alta classificação na categoria de até 500 milhões de parâmetros no placar Multilingual do Massive Text Embedding Benchmark (MTEB).

O Dataflow é uma plataforma de escalonamento automático totalmente gerenciada para processamento unificado de dados em lotes e streaming. Ao incluir um modelo como o EmbeddingGemma diretamente em um pipeline do Dataflow, você tem várias vantagens:

  • Eficiência da localidade de dados: o processamento acontece nos workers do Dataflow, eliminando a necessidade de chamadas de procedimento remoto (RPC, na sigla em inglês) para um serviço de inferência separado e evitando problemas de cotas e escalonamento automático de vários sistemas juntos. Todo o fluxo de trabalho pode ser empacotado em um único conjunto de workers, reduzindo a pegada de recursos.

  • Sistema unificado: um único sistema lida com o escalonamento automático, a observação e o monitoramento, reduzindo o overhead operacional.

  • Escalonabilidade e simplicidade: o Dataflow faz o escalonamento automático do pipeline com base na demanda, e as transformações do Apache Beam reduzem o código boilerplate.


Criação do pipeline de ingestão com o Dataflow ML

Um pipeline de ingestão de conhecimento típico consiste em quatro fases: leitura de uma origem de dados, pré-processamento dos dados, geração de incorporações e gravação em um banco de dados vetorial.

Dataflow's MLTransform
Com o "MLTransform" do Dataflow, um poderoso "PTransform" para preparação de dados, todo esse fluxo de trabalho pode ser implementado em apenas algumas linhas de código.

Geração de incorporações do Gemma com MLTransform

Vejamos como usar o novo modelo Gemma para gerar incorporações de texto. Este exemplo, adaptado do notebook do EmbeddingGemma, mostra como configurar o MLTransform para usar um modelo do Hugging Face e, em seguida, gravar os resultados no AlloyDB, onde as incorporações podem ser usadas para a pesquisa semântica. Bancos de dados como o AlloyDB nos permitem combinar essa pesquisa semântica com uma pesquisa estruturada adicional para fornecer resultados relevantes e de alta qualidade.

Primeiro, definimos o nome do modelo que vamos usar para as incorporações, juntamente com uma transformação que especifica as colunas que queremos incorporar e o tipo de modelo que estamos usando.

import tempfile
import apache_beam as beam
from apache_beam.ml.transforms.base import MLTransform
from apache_beam.ml.transforms.embeddings.huggingface import SentenceTransformerEmbeddings
 
# The new Gemma model for generating embeddings. You can replace this with your fine tuned model just by changing this path.
text_embedding_model_name = 'google/embeddinggemma-300m'
 
# Define the embedding transform with our Gemma model
embedding_transform = SentenceTransformerEmbeddings(
    model_name=text_embedding_model_name, columns=['x']
)
Python

Depois de gerarmos as incorporações, canalizamos a saída diretamente para nosso coletor, que geralmente é um banco de dados vetorial. Para gravar essas incorporações, definimos um VectorDatabaseWriteTransform orientado por configuração.

Neste caso, usamos o AlloyDB como coletor, transmitindo um objeto AlloyDBVectorWriterConfig. O Dataflow dá suporte à gravação em muitos bancos de dados vetoriais, incluindo AlloyDB, CloudSQL e BigQuery, usando apenas objetos de configuração.

# Define the config used to write to AlloyDB
alloydb_writer_config = AlloyDBVectorWriterConfig(
    connection_config=connection_config,
    table_name=table_name
)
 
# Build and run the pipeline
with beam.Pipeline() as pipeline:
  _ = (
      pipeline
      | "CreateData" >> beam.Create(content) # In production could be replaced by a transform to read from any source
      # MLTransform generates the embeddings
      | "Generate Embeddings" >> MLTransform(
          write_artifact_location=tempfile.mkdtemp()
      ).with_transform(embedding_transform)
      # The output is written to our vector database
      | 'Write to AlloyDB' >> VectorDatabaseWriteTransform(alloydb_writer_config)
  )
Python

Esse padrão simples, mas poderoso, permite processar conjuntos de dados enormes em paralelo, gerar incorporações com o EmbeddingGemma — 308 milhões de parâmetros — e preencher o banco de dados vetorial, tudo em um único pipeline escalonável, econômico e gerenciado.


Comece a usar hoje mesmo

Ao combinar os modelos Gemma mais recentes com a escalonabilidade do Dataflow e o poder de pesquisa vetorial dos bancos de dados vetoriais, como o AlloyDB, você pode criar aplicativos de IA sofisticados e de última geração com facilidade.

Para saber mais, explore a documentação do Dataflow ML, especialmente a documentação sobre preparação de dados e geração de incorporações. Você também pode experimentar um pipeline simples usando o EmbeddingGemma seguindo este notebook.

Para aplicativos de larga escala do lado do servidor, explore nosso modelo de incorporação do Gemini de última geração por meio da API Gemini para obter o máximo de desempenho e capacidade.

Para saber mais sobre o EmbeddingGemma, leia nosso anúncio de lançamento no blog do Google for Developers.