Ir para o conteúdo principal

Una os Dados do seu Paciente com RAG Multi-Modal

Entenda como usar a Busca Vetorial do Databrick com embeddings multi-modais para aprimorar suas aplicações RAG com capacidades multi-modais

Code displaying data analytics and AI embedding concepts.

Published: June 6, 2025

Saúde e ciências da vida18 min de leitura

Summary

  • Superpoderes Cross-Modal: Modelos de embedding multimodais permitem que você faça buscas em diferentes modalidades usando consultas de texto sem tags ou metadados, colocando diferentes tipos de dados em um espaço semântico compartilhado.
  • Construir, Pesquisar, Implantar: Aprenda a criar um sistema RAG multimodal completo no Databricks, convertendo imagens em incorporações, armazenando-as em tabelas Delta e habilitando uma poderosa busca de similaridade com a Busca Vetorial.
  • Conexões de Conteúdo Sem Costura: Melhore suas aplicações RAG preenchendo a lacuna entre modalidades, tornando até mesmo documentos complexos como PDFs com tipos de conteúdo mistos totalmente pesquisáveis e contextualmente relevantes.

Introdução: Dados Diversos Habilitam a IA

A recuperação multimodal representa um desafio significativo nos sistemas modernos de IA. Sistemas de recuperação tradicionais têm dificuldades para buscar efetivamente em 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.

Uma imagem comparando dados estruturados e não estruturados.
Figure 1: These sources do not communicate well together, especially if they originate from different system

Qualquer pessoa que trabalhe na área de saúde entende a dificuldade de mesclar dados não estruturados com dados estruturados. Um exemplo comum disso é a documentação clínica, onde anotações clínicas manuscritas ou resumos de alta de pacientes são frequentemente enviados 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 esta etapa, você deve mapear os dados para seus dados estruturados existentes para utilizá-los efetivamente. 

Para este blog, vamos revisar o seguinte: 

  1. Como carregar modelos multimodais de código aberto no Databricks
  2. Use o modelo de código aberto para gerar embeddings em dados não estruturados
  3. Armazene esses embeddings em um Índice de Busca Vetorial (AWS | Azure | GCP)
  4. Use o Genie Spaces (AWS | Azure | GCP) para consultar nossos dados estruturados 
  5. Use DSPy para criar um agente de chamada multi-ferramenta que usa o Genie Space e o Índice de Pesquisa Vetorial para responder à entrada 

Ao final deste blog, você verá como os embeddings multimodais possibilitam o seguinte para a saúde: 

  1. Dados mais diversos usando tudo em um PDF, não apenas o texto
  2. A flexibilidade de usar qualquer dado em conjunto. Na área da saúde, isso é especialmente valioso, pois você pode não saber que tipo de dado precisará trabalhar 
  3. Unificação de dados através de um Agente, permitindo uma resposta mais abrangente
Uma ideia conceitual de como seus dados podem ser unificados através de Agentes e Incorporações Multimodais
Figure 2: A conceptual idea of how your data can be unified through Agents and Multi-Modal Embeddings

O que é um Embedding?

Um espaço de incorporação (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 incorporação bem construído, registros de significado semelhante ocupam um espaço semelhante. Por exemplo, imagine que tínhamos 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 para o nosso modelo de incorporação multimodal e obtemos o seguinte:

  • Imagem de cavalo: [0.92, 0.59, 0.17]
  • “Caminhão”: [0.19, 0.93, 0.81]
  • Latido de cachorro: [0.94, 0.11, 0.86]

Aqui está uma representação visual de onde os números existiriam em um espaço de embedding:

Uma representação 2D de pontos de dados de alta dimensão em um espaço de embedding.

Na prática, as dimensões do espaço de embedding estarão nas centenas ou milhares, mas para ilustração, vamos usar o espaço 3. Podemos imaginar que a primeira posição nesses vetores representa "animalidade", a segunda é "transporte" e a terceira é "volume". Isso faria sentido considerando os embeddings, mas normalmente, não sabemos o que cada dimensão representa. O importante é que eles representam o significado semântico dos registros.

Existem várias maneiras de criar um espaço de incorporação multimodal, incluindo o treinamento de vários codificadores simultaneamente (como o CLIP), usando mecanismos de atenção cruzada (como o DALL-E), ou usando 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.

Este espaço semântico compartilhado é o que permite poderosas capacidades de busca cross-modal. Quando uma consulta de texto e uma imagem compartilham representações vetoriais semelhantes, provavelmente compartilham significados semânticos semelhantes, permitindo-nos encontrar imagens relevantes com base em descrições textuais sem tags ou metadados explícitos.

Modelos de Incorporação Multimodal: Compartilhando Espaços de Incorporação

Para implementar efetivamente a pesquisa multimodal, precisamos de modelos que possam gerar incorporações para diferentes tipos de dados dentro de um espaço vetorial compartilhado. Esses modelos são especificamente projetados para entender as relações entre diferentes modalidades e representá-las em um espaço matemático unificado.

Vários modelos poderosos de incorporação multimodal estão disponíveis a partir de junho de 2025:

  • Embed Multimodal da Cohere 4: Um modelo versátil que se destaca na incorporação de texto e dados de imagem com alta precisão e desempenho.
  • Nomic-Embed: Oferece fortes capacidades para incorporar vários tipos de dados em um espaço unificado. É um dos poucos modelos totalmente de código aberto.
  • Meta ImageBind: Um modelo impressionante que pode lidar com seis modalidades diferentes, incluindo imagens, texto, áudio, profundidade, térmico e dados IMU.
  • CLIP (Contrastive Language-Image pretraining): Desenvolvido pela OpenAI, o CLIP é treinado em uma variedade diversificada de pares de texto-imagem e pode efetivamente preencher a lacuna entre dados visuais e textuais.

Principais Considerações Arquitetônicas

Na Databricks, fornecemos a infraestrutura e as ferramentas para hospedar, avaliar e desenvolver uma solução de ponta a ponta, personalizável para o seu caso de uso. Considere os seguintes cenários ao começar a implantar este caso de uso: 

Escalabilidade & Performance

  • As opções de processamento devem ser selecionadas com base no tamanho do conjunto de dados: processamento em memória para conjuntos de dados menores ou trabalho de desenvolvimento, versus Model Serving (AWS | Azure | GCP) para cargas de trabalho de produção que exigem alta taxa de transferência
  • Pontos finais otimizados para armazenamento de vetores Databricks vs. Pontos finais padrão (AWS | Azure | GCP). Se você tem muitos vetores, considere o armazenamento otimizado para armazenar mais vetores (cerca de 250M+) 

Considerações de Custo

  • Para implementações em grande escala, servir modelos de embedding e usar AI Query (AWS | Azure | GCP) para inferência em lote é mais eficiente do que o processamento em memória.
  • Determine se você precisa de uma atualização acionada ou contínua para o seu Índice de Busca Vetorial (AWS | Azure | GCP)
  • Novamente, considere os pontos finais otimizados para armazenamento vs. Pontos finais padrão.
  • Você pode acompanhar esses custos com o SKU de Inferência em Tempo Real Serverless 
  • Considere o uso de Políticas de Orçamento (AWS | Azure | GCP) para garantir que você está rastreando corretamente seu consumo 

Excelência Operacional

  • Use pipelines e fluxos de trabalho (AWS | Azure | GCP) e Pacotes de Ativos Databricks (AWS | Azure | GCP) no Databricks para detectar mudanças nos dados de origem e atualizar as incorporações de acordo
  • Use Vector Search Delta Sync (AWS | Azure | GCP) para automatizar completamente a sincronização com seu índice, sem necessidade de gerenciamento de pipelines
  • A Pesquisa Vetorial lida com falhas, tentativas e otimizações automaticamente para garantir a confiabilidade.

Considerações de Rede e Segurança

  • Use Perfis de Conformidade Databricks (AWS | Azure | GCP) para conformidade HIPAA em seu espaço de trabalho
  • Use o Gerenciador de Segredos da Databricks ou Sistemas de Gerenciamento de Chaves para gerenciar seus segredos
  • Por favor, revise a explicação de confiança e segurança (AWS | Azure | GCP) em nossa documentação sobre como a Databricks lida com seus dados para serviços gerenciados de IA. 

Descrição Técnica da Solução

Para a implementação completa desta solução, por favor, visite este repositório aqui: Link do Github

Este exemplo usará informações sintéticas de pacientes como nossos dados estruturados e amostras 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 Espaço Genie. Depois Modelo de incorporação multimodal Nomic, um modelo de incorporação multimodal de código aberto de última geração, é carregado no Databricks Model Serving para gerar incorporações em amostras de explicações de benefícios encontradas online. 

Este processo parece complicado, mas o Databricks fornece ferramentas integradas que permitem uma solução completa de ponta a ponta. Em um nível alto, o processo se parece com o seguinte: 

  1. Ingestão via Autoloader (AWS | Azure | GCP)
  2. ETL com Pipelines Declarativos Lakeflow (AWS | Azure | GCP)
  3. Criação de Embeddings com modelos de embedding multimodal hospedados no Databricks 
  4. Hospede os embeddings em um índice de busca vetorial (AWS | Azure | GCP)
  5. Servindo com Model Serving (AWS | Azure | GCP)
  6. Framework do Agente para proteger, implantar e governar o Agente

Criação do Espaço Genie

Este Espaço Genie será usado como uma ferramenta para converter linguagem natural em uma consulta SQL para consultar nossos dados estruturados. 

Passo 1: Gerar Dados Sintéticos do Paciente

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 Prática, com colunas como motivos para a visita, provedores de seguro e tipos de seguro. 

Passo 2: Crie um Espaço Genie de Informações do Paciente

Para consultar dados usando linguagem natural, podemos utilizar um Espaços Genie Databricks (AWS | Azure | GCP) para converter nossa consulta em linguagem natural e recuperar dados relevantes do paciente. No UI do Databricks, basta clicar na aba Genie na barra à esquerda → Novo → selecionar as tabelas patient_visits e practice_locations. 

Usuários de negócios interagindo com dados usando linguagem natural em um espaço Genie.

Precisamos do ID do Espaço Genie para capturar o número que vem depois dos quartos. Você pode ver um exemplo abaixo:

Passo 3: Crie a função que representará a Ferramenta Genie que nosso Agente usará. 

Como estamos usando DSPy, tudo o que precisamos fazer é definir uma função Python.

É isso aí! Vamos configurar o fluxo de trabalho de Geração Multimodal agora. 

Geração de Embedding Multi-Modal

Para esta etapa, usaremos o modelo totalmente aberto colNomic-embed-multimodal-7b do HuggingFace para gerar incorporações para nossos dados não estruturados, neste caso, PDFs. Selecionamos o modelo 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 Pesquisa Vetorial do Databricks (AWS | Azure | GCP) para entender o que é melhor para o seu caso de uso. 

Passo 1: Carregar, Registrar e Servir o modelo no Databricks

Precisamos que este modelo esteja disponível dentro do Catálogo Unity (UC), então usaremos o MLflow para carregá-lo do Huggingface e registrá-lo. Depois, 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 podem ser encontradas no completo repositório

UC Volumes 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. 

Passo 2: Carregue nossos PDFs em uma lista

Você terá uma pasta chamada sample_pdf_sbc contendo alguns exemplos de resumos de benefícios e coberturas. Precisamos preparar esses PDFs para incorporá-los.

Passo 3: Converta seus PDFs em imagens para serem incorporadas pelo modelo colNomic. 

O modelo colNomic-embed-multimodal-7b é especificamente treinado 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 fragmentação de texto para garantir que a recuperação funcione efetivamente. O próprio modelo pode incorporar bem essas imagens em seu próprio espaço de incorporação. 

Usaremos pdf2image para converter cada página do PDF em uma imagem, preparando-a para incorporação.

Passo 4: Gerar as Incorporações

Agora que temos as imagens em PDF, podemos gerar os embeddings. Ao mesmo tempo, podemos salvar as incorporações em uma tabela Delta com colunas adicionais que recuperaremos junto com nossa Busca Vetorial, como o caminho do arquivo para o local do Volume. 

Passo 5: Crie um Índice de Busca Vetorial e Ponto Final

A criação de um índice de Busca Vetorial pode ser feita via UI ou API. O método API é mostrado abaixo. 

Agora só precisamos juntar tudo com um Agente. 

Unindo os Dados com DSPy

Usamos o DSPy para isso por causa de seu design declarativo e puramente em Python. Ele nos permite iterar e desenvolver rapidamente, testando vários modelos para ver quais funcionarão melhor para o nosso caso de uso. Mais importante, 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 de prompt manual! 

Passo 1: Defina suas dspy.Signatures 

Esta assinatura especifica e impõe as entradas e saídas, além de explicar como a assinatura deve funcionar. 

Passo 2: Adicione sua assinatura a um dspy.module

O módulo pegará as instruções da assinatura e criará um prompt otimizado para enviar ao LLM. Para este caso de uso específico, vamos construir um módulo personalizado chamado `MultiModalPatientInsuranceAnalyzer()`. 

Este módulo personalizado dividirá as assinaturas como etapas, quase como “encadeando” chamadas, no método forward. Seguimos este processo: 

  1. Pegue as assinaturas definidas acima e inicialize-as na classe
  2. Defina suas ferramentas. Eles só precisam ser uma função Python 
    1. Para este post, você criará uma ferramenta de Busca Vetorial e uma ferramenta de Espaço Genie. Ambas as ferramentas usarão o SDK do Databricks para fazer uma chamada de API para esses serviços. 
    2. Defina sua lógica no método forward. No nosso caso, sabemos que precisamos extrair palavras-chave, acertar o índice de Pesquisa Vetorial, e então passar tudo para a chamada LLM final para uma resposta.

Passo 3: Tudo pronto! Agora execute!

Reveja quais ferramentas o Agente usou e o raciocínio que o Agente fez para responder à pergunta.

Passos seguintes

Uma vez que você tenha um Agente funcionando, recomendamos o seguinte: 

  1. Use o Framework de Agente Mosaic AI para implantar seus agentes em pontos finais de agentes e gerenciá-los/usar versões deles usando o Catálogo Unity 
  2. Use o Mosaic AI Agent Eval Framework (AWS | Azure | GCP) para fazer avaliações e garantir que seus agentes estão atuando de acordo com suas expectativas

O framework de avaliação será crucial para entender quão efetivamente o índice de Pesquisa Vetorial recupera informações relevantes para o seu agente RAG. Seguindo essas métricas, você saberá onde fazer ajustes, desde mudar o modelo de incorporação até ajustar os prompts que interagem com o LLM. 

Você também deve monitorar para ver se a API do Modelo de Fundação (AWS | Azure | GCP) é suficiente para o seu caso de uso. Em determinado momento, você atingirá os limites da API para as APIs do Modelo de Fundação, então você precisará fazer a transição para o Throughput Provisionado (AWS | Azure | GCP) para ter um endpoint mais confiável para o seu LLM.

Além disso, fique de olho nos seus custos contra o modelo de serviço sem servidor (AWS | Azure | GCP). A maioria desses custos virá do modelo de serviço sem servidor Databricks SKU e pode aumentar à medida que você escala. 

Confira estes blogs para entender como fazer isso na Databricks. 

Além disso, os Arquitetos de Soluções de Entrega da Databricks (DSAs) ajudam a acelerar as 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 conduzem a execução bem-sucedida do projeto. Eles preenchem a lacuna entre a implantação inicial e as soluções de produção, trabalhando de perto com várias equipes, incluindo engenharia de dados, líderes técnicos, executivos e outros stakeholders para garantir soluções personalizadas e um tempo de valor mais rápido. Entre em contato com sua Equipe de Conta Databricks para saber mais.


 

Comece construindo seu próprio App GenAI! Confira a documentação para começar. 

Na Databricks, você tem todas as ferramentas de que precisa para desenvolver esta solução de ponta a ponta. Confira os blogs abaixo para aprender sobre como gerenciar e trabalhar com seu novo Agente com o Mosaic AI Agent Framework.

 

(This blog post has been translated using AI-powered tools) Original Post

Nunca perca uma postagem da Databricks

Inscreva-se nas categorias de seu interesse e receba as últimas postagens na sua caixa de entrada