Entenda como usar o AI Search da Databricks com embeddings multimodais para aprimorar seus aplicativos RAG com capacidades multimodais
por Austin Choi e Jordan Soldo
A recuperação multimodal representa um desafio significativo nos sistemas modernos de IA. Sistemas de recuperação tradicionais lutam para pesquisar efetivamente entre diferentes tipos de dados sem metadados ou marcações extensivas. Isso é particularmente problemático para empresas de saúde que gerenciam grandes volumes de conteúdo diverso, incluindo texto, imagens, áudio e mais, muitas vezes resultando em fontes de dados não estruturadas.
Qualquer pessoa que trabalhe na área da saúde entende a dificuldade de mesclar dados não estruturados com dados estruturados. Um exemplo comum disso é a documentação clínica, onde notas clínicas manuscritas ou resumos de alta de pacientes são frequentemente submetidos em PDFs, imagens e formatos semelhantes. Isso precisa ser convertido manualmente ou processado usando Reconhecimento Óptico de Caracteres (OCR) para encontrar as informações necessárias. Mesmo após essa etapa, você precisa mapear os dados aos seus dados estruturados existentes para utilizá-los de forma eficaz.
Para este blog, revisaremos o seguinte:
Ao final deste blog, você verá como os embeddings multimodais possibilitam o seguinte para a área da saúde:
Um espaço de embedding (AWS | Azure | GCP) é uma representação matemática n-dimensional de registros que permite que uma ou mais modalidades de dados sejam armazenadas como vetores de números de ponto flutuante. O que torna isso útil é que, em um espaço de embedding bem construído, registros de significado semelhante ocupam um espaço semelhante. Por exemplo, imagine que tivéssemos uma foto de um cavalo, a palavra “caminhão” e uma gravação de áudio de um cachorro latindo. Passamos esses três pontos de dados completamente diferentes em nosso modelo de embedding multimodal e obtemos o seguinte:
Aqui está uma representação visual de onde os números existiriam em um espaço de embedding:

Na prática, as dimensões do espaço de embedding estar ão na casa das centenas ou milhares, mas para ilustração, vamos usar um espaço de 3 dimensões. Podemos imaginar que a primeira posição nesses vetores representa “animalidade”, a segunda é “transporte” e a terceira é “barulhento”. Isso faria sentido dadas as embeddings, mas normalmente não sabemos o que cada dimensão representa. O importante é que elas representam o significado semântico dos registros.
Existem várias maneiras de criar um espaço de embedding multimodal, incluindo treinar múltiplos codificadores simultaneamente (como CLIP), usar mecanismos de atenção cruzada (como DALL-E) ou usar vários métodos de alinhamento pós-treinamento. Esses métodos permitem que o significado do registro transcenda a modalidade original e ocupe um espaço compartilhado com outros registros ou formatos díspares.
Esse espaço semântico compartilhado é o que permite recursos poderosos de busca cross-modal. Quando uma consulta de texto e uma imagem compartilham representações vetoriais semelhantes, elas provavelmente compartilham significados semânticos semelhantes, permitindo-nos encontrar imagens relevantes com base em descrições textuais sem tags ou metadados explícitos.
Para implementar efetivamente a busca multimodal, precisamos de modelos que possam gerar embeddings para diferentes tipos de dados dentro de um espaço vetorial compartilhado. Esses modelos são projetados especificamente para entender as relações entre diferentes modalidades e representá-las em um espaço matemático unificado.
Vários modelos poderosos de embedding multimodal estão disponíveis a partir de junho de 2025:
Na Databricks, fornecemos a infraestrutura e as ferramentas para hospedar, avaliar e desenvolver uma solução ponta a ponta, personalizável ao seu caso de uso. Considere os seguintes cenários ao começar a implantar este caso de uso:
Para a implementação completa desta solução, visite este repositório aqui: Link do Github
Este exemplo usará informações sintéticas de pacientes como nossos dados estruturados e exemplos de explicações de benefícios em formato PDF como nossos dados não estruturados. Primeiro, dados sintéticos são gerados para uso com um Genie Space. Em seguida, o modelo de embedding multimodal Nomic, um modelo de embedding multimodal open source de última geração, é carregado no Databricks Model Serving para gerar embeddings em exemplos de explicações de benefícios encontrados online.
Este processo parece complicado, mas o Databricks fornece ferramentas integradas que permitem uma solução completa e ponta a ponta. Em um nível geral, o processo se parece com o seguinte:
Este Genie Space será usado como uma ferramenta para converter linguagem natural em uma consulta SQL para consultar nossos dados estruturados.
Neste exemplo, a biblioteca Faker será usada para gerar informações aleatórias de pacientes. Criaremos duas tabelas para diversificar nossos dados: Visitas de Pacientes e Locais de Consultório, com colunas como motivos da visita, provedores de seguro e tipos de seguro.
Para consultar dados usando linguagem natural, podemos utilizar um Databricks Genie Space (AWS | Azure | GCP) para converter nossa consulta em linguagem natural e recuperar dados relevantes do paciente. Na interface do Databricks, basta clicar na aba Genie na barra esquerda → Novo → selecionar as tabelas patient_visits e practice_locations.

Precisamos do ID do Espaço Genie para capturar o número que vem depois de rooms. Você pode ver um exemplo abaixo:
Como estamos usando DSPy, tudo o que precisamos fazer é definir uma função Python.
É isso! Vamos configurar o fluxo de trabalho de Geração Multi-Modal agora.
Para esta etapa, usaremos o modelo totalmente aberto colNomic-embed-multimodal-7b no HuggingFace para gerar embeddings para nossos dados não estruturados, neste caso, PDFs. Selecionamos o modelo da Nomic devido à sua licença Apache 2.0 e alto desempenho em benchmarks.
O método para gerar seus embeddings variará dependendo do seu caso de uso e modalidade. Revise as Melhores Práticas de Busca Vetorial do Databricks (AWS | Azure | GCP) para entender o que é melhor para o seu caso de uso.
Precisamos que este modelo esteja disponível dentro do Unity Catalog (UC) do Databricks, então usaremos o MLflow para carregá-lo do Huggingface e registrá-lo. Em seguida, podemos implantar o modelo em um endpoint de serviço de modelo.
O modelo Python inclui lógica adicional para lidar com entradas de imagem, que pode ser encontrada no repositório completo.
Volumes UC são projetados como sistemas de arquivos para hospedar qualquer arquivo e é onde armazenamos nossos dados não estruturados. Você pode usá-los no futuro para armazenar outros arquivos, como imagens, e repetir o processo conforme necessário. Isso inclui o modelo acima. No repositório, você verá que o cache se refere a um volume.
Você terá uma pasta chamada sample_pdf_sbc contendo alguns resumos de benefícios e cobertura de exemplo. Precisamos preparar esses PDFs para incorporá-los.
O modelo colNomic-embed-multimodal-7b é treinado especificamente para reconhecer texto e imagens dentro de uma imagem, uma entrada comum de PDFs. Isso permite que o modelo tenha um desempenho excepcionalmente bom na recuperação dessas páginas.
Este método permite que você utilize todo o conteúdo dentro de um PDF sem precisar de uma estratégia de divisão de texto para garantir que a recuperação funcione de forma eficaz. O próprio modelo pode incorporar essas imagens bem em seu próprio espaço de embedding.
Usaremos pdf2image para converter cada página do PDF em uma imagem, preparando-a para incorporação.
Agora que temos as imagens dos PDFs, podemos gerar os embeddings. Ao mesmo tempo, podemos salvar os embeddings em uma tabela Delta com colunas adicionais que recuperaremos juntamente com nossa Busca Vetorial, como o caminho do arquivo para a localização do Volume.
A criação de um índice de Pesquisa Vetorial pode ser feita pela interface do usuário ou pela API. O método da API é mostrado abaixo.
Agora, só precisamos juntar tudo com um Agente.
Usamos o DSPy para isso devido ao seu design declarativo e em Python puro. Ele nos permite iterar e desenvolver rapidamente, testando vários modelos para ver quais funcionarão melhor para nosso caso de uso. Mais importante ainda, a natureza declarativa nos permite modularizar nosso Agente para que possamos isolar a lógica do Agente das ferramentas e nos concentrar em definir COMO o agente deve realizar sua tarefa.
E a melhor parte? Sem engenharia manual de prompts!
Essa assinatura especifica e impõe as entradas e saídas, ao mesmo tempo que explica como a assinatura deve funcionar.
O módulo receberá as instruções da assinatura e criará um prompt ideal para enviar ao LLM. Para este caso de uso específico, construiremos um módulo personalizado chamado `MultiModalPatientInsuranceAnalyzer()`.
Este módulo personalizado dividirá as assinaturas em etapas, quase como “encadear” chamadas, no método forward. Seguimos este processo:
Revise quais ferramentas o Agente usou e o raciocínio que o Agente seguiu para responder à pergunta.
Depois de ter um Agente funcionando, recomendamos o seguinte:
O framework de avaliação será crucial para entender a eficácia com que o índice AI Search recupera informações relevantes para seu agente RAG. Ao seguir essas métricas, você saberá onde fazer ajustes, desde a alteração do modelo de embedding até o ajuste dos prompts que interagem com o LLM.
Você também deve monitorar para ver se a API de Modelo Fundamental (AWS | Azure | GCP) é suficiente para seu caso de uso. Em certo ponto, você atingirá os limites da API para as APIs de Modelo Fundamental, então precisará fazer a transição para Provisioned Throughput (AWS | Azure | GCP) para ter um endpoint mais confiável para seu LLM.
Além disso, fique de olho em seus custos em relação ao serving de modelos serverless (AWS | Azure | GCP). A maioria desses custos se originará do SKU de serving de modelos serverless do Databricks e poderá crescer à medida que você escala.
Confira estes blogs para entender como fazer isso no Databricks.
Além disso, os Arquitetos de Soluções de Entrega (DSAs) da Databricks Delivery Solutions Architects (DSAs) ajudam a acelerar iniciativas de Dados e IA em organizações. Os DSAs fornecem liderança arquitetônica, otimizam plataformas para custo e desempenho, aprimoram a experiência do desenvolvedor e impulsionam a execução bem-sucedida de projetos. Eles preenchem a lacuna entre a implantação inicial e as soluções de nível de produção, trabalhando em estreita colaboração com várias equipes, incluindo engenharia de dados, líderes técnicos, executivos e outras partes interessadas para garantir soluções personalizadas e um tempo de valorização mais rápido. Entre em contato com sua Equipe de Conta Databricks para saber mais.
Comece construindo seu próprio aplicativo GenAI! Confira a documentação para começar.
No Databricks, você tem todas as ferramentas necessárias para desenvolver essa solução de ponta a ponta. Confira os blogs abaixo para saber mais sobre como gerenciar e trabalhar com seu novo Agente com os Agentes Personalizados do Agent Bricks.
(Esta publicação no blog foi traduzida utilizando ferramentas baseadas em inteligência artificial) Publicação original
Assine nosso blog e receba os posts mais recentes diretamente na sua caixa de entrada.