RAG Multimodal

O que é RAG Multimodal?

Geração Aumentada por Recuperação Multimodal (Multimodal Retrieval-Augmented Generation, Multimodal RAG) estende o clássico RAG ao recuperar e usar evidências de múltiplas modalidades—mais comumente:

  • Texto (documentos, anotações, páginas da web)
  • Imagens (fotos, capturas de tela, diagramas, páginas digitalizadas)
  • Fontes de modalidade mista (PDFs com layout, slides, tabelas + figuras, formulários)

Um sistema de RAG multimodal normalmente responde a perguntas ao:

  1. Recuperar itens relevantes entre modalidades (por exemplo, um diagrama + a seção de um manual que o descreve),
  2. Fundir esses resultados em um contexto coerente,
  3. Gerar uma resposta com um modelo capaz de raciocinar sobre esse contexto (frequentemente um modelo visão‑linguagem (vision-language model, VLM)).

Isso viabiliza fluxos de trabalho que um RAG somente texto não consegue lidar bem, como “O que significa esta caixa de diálogo de erro?” (captura de tela) ou “Qual parte neste esquema corresponde ao componente circulado em vermelho?” (diagrama).

Por que o RAG multimodal importa

Muitas fontes de conhecimento de alto valor não são “texto limpo”:

  • PDFs digitalizados e faxes exigem reconhecimento óptico de caracteres (Optical Character Recognition, OCR).
  • Documentação de produtos incorpora informações cruciais em diagramas.
  • Solução de problemas depende de capturas de tela, layouts de UI e fotos.
  • Documentos científicos e de engenharia codificam significado em gráficos e tabelas.

Pipelines somente texto ou ignoram esses sinais ou os reduzem a uma extração de texto frágil. O RAG multimodal busca fazer com que a recuperação e a fundamentação funcionem sobre os dados como eles existem.

Blocos de construção centrais

Um sistema de RAG multimodal é uma especialização do pipeline padrão de recuperação descrito em Busca Vetorial e Vetores de Embedding (Vector Search & Embeddings), Ingestão e Segmentação (Ingestion & Chunking) e Reordenação (Reranking), com considerações extras para parsing e representação específicos por modalidade.

1) Ingestão: analisar e normalizar múltiplas modalidades

A ingestão responde: Quais são as unidades recuperáveis e como as representamos?

Saídas comuns de ingestão:

  • Blocos de texto: parágrafos, seções ou trechos semânticos
  • Ativos de imagem: figuras extraídas de PDFs, imagens de slides, capturas de tela, fotos
  • Elementos de layout: caixas delimitadoras, ordem de leitura, coordenadas da página
  • Texto derivado:
    • Texto de OCR para páginas/imagens digitalizadas
    • Legendas geradas por modelos de legendagem de imagens (image captioning models) (opcional)
    • Texto alternativo (alt-text) ou “menções de figuras” ao redor no documento

Exemplo prático: ingerindo um manual em PDF

  • Extrair texto por página + títulos de seção
  • Extrair imagens incorporadas (figuras)
  • Executar OCR em páginas que são apenas imagem
  • Armazenar metadados (metadata): doc_id, page, section_title, figure_id, bbox, timestamps, rótulos de controle de acesso

É aqui que o RAG multimodal muitas vezes dá certo ou dá errado: se você não consegue extrair figuras de forma confiável, associá‑las ao texto próximo ou preservar o layout, a qualidade da recuperação vai sofrer.

2) Representação: como você cria embeddings de itens multimodais

A recuperação multimodal depende de vetores de embedding (embeddings). Existem duas estratégias amplas:

Estratégia A: **Espaço de embedding compartilhado** (entre modalidades)

Use um modelo que projete texto e imagens no mesmo espaço vetorial (vector space), permitindo consultas como:

  • Texto → recuperar imagens (“diagrama de montagem de bomba hidráulica”)
  • Imagem → recuperar texto (“encontre a seção que descreve esta captura de tela”)

Abordagem clássica: codificadores contrasteivos visão‑linguagem (por exemplo, famílias no estilo CLIP). Eles produzem:

  • v_text = f_text(query)
  • v_image = f_image(image) e a similaridade geralmente é cosseno ou produto escalar (dot-product).

Prós

  • Recuperação simples: um índice (ou dois índices com vetores comparáveis)
  • Busca entre modalidades funciona naturalmente

Contras

  • Detalhes de granularidade fina (texto pequeno em imagens, componentes minúsculos) podem ser fracos
  • O deslocamento de domínio (domain shift) pode ser severo (médico, industrial, escrita à mão)

Estratégia B: **Vetores de embedding específicos por modalidade + fusão**

Mantenha diferentes espaços de embedding:

  • Vetores de embedding de texto para blocos de texto
  • Vetores de embedding de imagem para imagens
  • Opcional: vetores de embedding de layout/tabela

Depois combine os resultados via:

  • Fusão tardia (late fusion): recuperar top‑k por modalidade e então mesclar/reordenar
  • Pontuação híbrida (hybrid scoring): soma ponderada de pontuações normalizadas
  • Pipelines de duas etapas (two-stage pipelines): grande cobertura primeiro, reordenação cara depois

Prós

  • Melhores modelos por modalidade (best-of-breed)
  • Mais fácil atualizar partes de forma independente

Contras

  • Heurísticas de fusão importam
  • Consultas entre modalidades exigem trabalho extra (por exemplo, legendar imagens para texto)

Na prática, muitos sistemas em produção usam um híbrido: recuperação em espaço compartilhado para cobertura entre modalidades, e depois reordenação sensível à modalidade.

3) Indexação: o que é armazenado e pesquisado

Um índice multimodal geralmente armazena múltiplos “objetos de recuperação”, cada um com:

  • Vetor(es): um ou mais embeddings
  • Carga útil/metadados (payload/metadata): fonte, página, caixas delimitadoras, timestamps, listas de controle de acesso (access control lists, ACLs)
  • Referências brutas: URI para a imagem, ponteiro para a página do PDF etc.

Decisão de projeto: vetor único vs múltiplos vetores

  • Vetor único por item é mais simples e barato.
  • Representações de múltiplos vetores (por exemplo, por região da imagem, por frase do parágrafo) podem melhorar a cobertura para consultas de granularidade fina, mas aumentam a complexidade.

A indexação é fortemente acoplada à segmentação; veja Ingestão e Segmentação para princípios gerais, com a nuance adicional de que “limites de chunk” podem ser:

  • uma figura,
  • um slide,
  • uma região da página,
  • uma tabela,
  • um parágrafo que referencia uma figura (“veja a Figura 3”).

4) Recuperação e fusão

A recuperação multimodal frequentemente se beneficia de recuperação em múltiplas etapas (multi-stage retrieval):

  1. Recuperação de primeira etapa (rápida, alta cobertura):

    • busca vetorial sobre blocos de texto
    • busca vetorial sobre imagens
    • opcional Busca Híbrida (Esparsa + Densa) (Hybrid Search (Sparse + Dense)) para texto (BM25 + densa)
  2. Reordenação de segunda etapa (mais lenta, maior precisão):

    • reordenador codificador cruzado (cross-encoder) para texto
    • reordenador visão‑linguagem que pontua pares (consulta, imagem)
    • reordenação em nível de documento usando atributos de metadados
  3. Fusão:

    • intercalar por pontuação
    • impor diversidade (evitar 10 imagens quase duplicadas)
    • agrupar por documento e manter a melhor evidência por fonte

5) Geração: usar contexto multimodal com segurança

Para geração, você pode usar:

  • Um LLM (large language model) somente texto, alimentado com texto extraído (OCR + legendas + texto ao redor)
  • Um LLM/VLM multimodal, alimentado com texto e as imagens de fato (recomendado quando detalhes visuais importam)

Se você precisa de respostas fiéis com citações, integre padrões de Fundamentação e Citações (Grounding & Citations):

  • Forneça ponteiros de fonte para cada item recuperado (doc/página/figura)
  • Peça ao modelo para citar ou referenciar evidência exata
  • Prefira extrair‑e‑depois‑explicar para conteúdo pesado em OCR

Arquiteturas comuns

Arquitetura 1: “Texto primeiro com alternativas visuais”

  1. Recuperar blocos de texto (densa + esparsa).
  2. Se a confiança for baixa ou a consulta mencionar artefatos visuais (“captura de tela”, “diagrama”), recuperar imagens também.
  3. Converter imagens em texto via OCR/legendagem para um LLM somente texto, ou passar as imagens para um VLM.

Isso é custo-efetivo quando a maioria das consultas pode ser respondida a partir de texto.

Arquitetura 2: Recuperação unificada entre modalidades

  1. Criar embeddings da consulta e pesquisar em um espaço unificado que contenha tanto texto quanto imagens.
  2. Retornar uma lista mista (blocos de texto + figuras) e alimentar ambos em um VLM.

Isso é direto para experiências como “buscar em tudo”, mas depende fortemente da qualidade do alinhamento de embeddings.

Arquitetura 3: RAG multimodal agêntico

Para tarefas complexas, use uma estratégia iterativa de RAG Agêntico (Agentic RAG):

  • O agente decompõe uma consulta (“Identifique o número da peça nesta foto e encontre instruções de substituição”)
  • Executa etapas de recuperação direcionadas:
    1. Fazer OCR da imagem,
    2. pesquisar no catálogo de peças,
    3. recuperar páginas do guia de instalação,
    4. verificar restrições
  • Chama ferramentas via Chamada de Funções / Uso de Ferramentas (Function Calling / Tool Use)

Isso tende a ser mais robusto do que a recuperação em uma única passada para fluxos de trabalho longos e de múltiplos saltos.

Exemplos práticos

Exemplo A: Suporte ao cliente para capturas de tela de software

Pergunta do usuário: “O que significa este erro e como eu corrijo?” + captura de tela

Pipeline

  1. Ingestão:
    • Artigos da base de conhecimento (texto)
    • Capturas de tela anotadas (imagens) com OCR e metadados de regiões de UI
  2. Consulta:
    • Executar OCR na captura de tela do usuário para extrair código/mensagem de erro
    • Recuperar:
      • blocos de texto que correspondem ao código de erro (esparsa + densa)
      • capturas de tela similares via vetores de embedding de imagem
  3. Reordenação:
    • priorizar resultados que correspondem ao código de erro exato (filtro estruturado)
  4. Geração:
    • fornecer resolução passo a passo
    • citar o artigo da base de conhecimento e (opcionalmente) mostrar a captura de tela correspondente

Por que o multimodal ajuda

  • Usuários frequentemente omitem o texto exato do erro; a captura de tela o contém.
  • Similaridade visual ajuda quando mensagens de erro variam levemente ou são localizadas.

Exemplo B: Manual de engenharia com diagramas + procedimentos

Pergunta do usuário: “Neste diagrama, qual válvula é a válvula de alívio de pressão, e qual especificação de torque se aplica?”

Pipeline

  • Recuperar a figura relevante (imagem) e a seção que a descreve (texto).
  • Usar um VLM para:
    • referenciar o diagrama (identificar o componente rotulado “PRV”)
    • cruzar com o texto que contém a especificação de torque
  • Retornar resposta com citações: seção do manual + ID da figura

Truque comum: vincular figuras ao texto ao ingerir “referências a figuras” (frases como “Veja a Figura 12”) e armazená‑las como arestas explícitas nos metadados.

Exemplo C: Busca em catálogo de varejo entre imagens e descrições

Pergunta do usuário: “Mostre-me sapatos como este” + foto

  • Imagem → recuperar produtos visualmente similares (vetores de embedding de imagem)
  • Depois filtrar por metadados de texto (disponibilidade de tamanho, gênero, marca)
  • Opcionalmente recuperar documentos de política (devoluções/frete) para responder perguntas de acompanhamento com RAG

Este é um problema clássico de recuperação “imagem‑para‑item”, com RAG usado para explicações fundamentadas e respostas sobre políticas.

Esboço de implementação (pseudocódigo em estilo Python)

Abaixo está um esboço simplificado mostrando recuperação multi-índice (texto + imagens) com fusão tardia. Sistemas reais adicionam batching, índices ANN, reordenação e tratamento robusto de metadados.

from typing import List, Dict, Any
import numpy as np

# Assume you have:
# - text_embedder: encodes text -> vector
# - image_embedder: encodes image -> vector
# - text_index, image_index: ANN indexes returning (id, score)
# - store: maps ids -> payload (text chunk or image URI + metadata)

def retrieve_multimodal(query: str, top_k_text=20, top_k_img=20) -> List[Dict[str, Any]]:
    qv_text = text_embedder.encode(query)          # shape (d,)
    qv_img  = image_embedder.encode_text(query)    # text->image space (cross-modal)

    text_hits = text_index.search(qv_text, top_k_text)   # [(id, score), ...]
    img_hits  = image_index.search(qv_img, top_k_img)

    # Late fusion: normalize + merge
    def normalize(hits):
        scores = np.array([s for _, s in hits], dtype=np.float32)
        if len(scores) == 0:
            return []
        scores = (scores - scores.min()) / (scores.max() - scores.min() + 1e-6)
        return [(i, float(s)) for (i, _), s in zip(hits, scores)]

    fused = []
    for _id, s in normalize(text_hits):
        fused.append({"id": _id, "score": s, "type": "text", **store.get(_id)})
    for _id, s in normalize(img_hits):
        fused.append({"id": _id, "score": s, "type": "image", **store.get(_id)})

    fused.sort(key=lambda x: x["score"], reverse=True)
    return fused[:20]

def build_prompt_context(results):
    # For text chunks: include snippet
    # For images: include URI + OCR/caption if available
    ctx = []
    for r in results:
        if r["type"] == "text":
            ctx.append(f"[TEXT] {r['source']} p{r.get('page')}: {r['text']}")
        else:
            ctx.append(f"[IMAGE] {r['source']} fig{r.get('figure_id')}: {r.get('caption','')}\nURI: {r['uri']}")
    return "\n\n".join(ctx)

Na prática, você normalmente adicionaria:

  • uma etapa de reordenação (veja Reordenação) para melhorar a precisão,
  • filtros estritos (ACLs, produto, data, localidade),
  • cache de embeddings e resultados de recuperação (veja Cache (Caching)).

Principais escolhas de projeto e trade-offs

Textificação vs raciocínio multimodal de verdade

Uma pergunta recorrente: Devo converter imagens em texto e usar um LLM de texto, ou passar imagens para um VLM?

  • Textificação (OCR/legenda → LLM somente texto) funciona bem quando:

    • as imagens são principalmente texto (digitalizações, capturas de tela)
    • você precisa de inferência mais barata
    • o layout visual não é crucial
  • Multimodal de verdade (VLM vê pixels) é melhor quando:

    • relações espaciais importam (diagramas, gráficos)
    • OCR é pouco confiável (fontes estilizadas, baixa resolução)
    • você precisa referenciar regiões visuais

Muitos sistemas combinam ambos: OCR/legendas melhoram a recuperação e fornecem texto pesquisável, enquanto o VLM verifica detalhes no momento da resposta.

Granularidade: página vs região vs objeto

Para imagens e PDFs, a granularidade impacta fortemente a recuperação:

  • Embedding de página inteira: simples, mas ruidoso; uma página pode conter muitos tópicos.
  • Nível de figura: bom para manuais e artigos; alinha-se a como as pessoas referenciam visuais.
  • Nível de região (painéis recortados, widgets de UI): melhor para capturas de tela e diagramas densos, mas exige segmentação e mais armazenamento.

Metadados e layout importam mais do que você imagina

Corpora multimodais frequentemente exigem restrições “não semânticas”:

  • filtragem por produto/versão (mudanças de UI v1.2 vs v1.3)
  • idioma e localidade
  • recência do documento
  • números de página e títulos de seção
  • referências a figuras e texto de legendas

Trate metadados como sinais de recuperação de primeira classe, não como algo secundário.

Reordenação entre modalidades

A recuperação de primeira etapa deve favorecer cobertura; a precisão frequentemente é recuperada por reordenação:

  • Codificadores cruzados de texto para blocos de texto
  • Pontuação visão‑linguagem para (consulta, imagem)
  • Atributos de “coerência do documento” (múltiplos blocos da mesma seção)

Isso frequentemente traz grandes ganhos de qualidade por um custo adicional modesto.

Aplicações

O RAG multimodal é especialmente valioso em:

  • Assistentes de conhecimento corporativo: PDFs, decks de slides, documentos digitalizados, diagramas
  • TI/helpdesk: capturas de tela, logs + artigos de base de conhecimento
  • Manufatura e serviço de campo: fotos de equipamentos + manuais de manutenção
  • E-commerce e varejo: busca visual + texto do catálogo + fundamentação de políticas
  • Conformidade e auditorias: formulários, assinaturas (com controles de privacidade cuidadosos)
  • Educação: slides de aula + figuras de livro didático + exemplos resolvidos

Em domínios regulados (médico, jurídico), o RAG multimodal pode ajudar com recuperação e sumarização, mas exige governança forte e revisão humana.

Avaliação e depuração

A avaliação é mais difícil do que em RAG somente texto porque “relevância” pode depender de detalhes visuais.

Métricas offline de recuperação

Use métricas padrão de recuperação de informação (information retrieval, IR), calculadas por modalidade e no geral:

  • Recall@k / Precision@k
  • MRR, nDCG
  • Acompanhamento separado para:
    • texto→texto, texto→imagem
    • imagem→imagem, imagem→texto

Qualidade de resposta ponta a ponta

Meça:

  • fidelidade à evidência recuperada (veja Fundamentação e Citações)
  • correção em perguntas multimodais (diagramas, gráficos, UI)
  • robustez a ruído de OCR e qualidade de imagem

Modos de falha comuns

  • Erros de OCR causam recuperação perdida ou fundamentação incorreta.
  • Incompatibilidade de embeddings: imagens visualmente similares, mas semanticamente erradas.
  • Desconexão figura/texto: recuperar uma figura sem o parágrafo explicativo relevante.
  • Excesso de legendagem: legendas geradas alucinam detalhes e poluem o índice.
  • Poluição por duplicatas: muitas capturas de tela quase idênticas sufocam a diversidade.

Dicas de depuração:

  • Registre sinais de “por que foi recuperado” (vizinhos mais próximos, pontuações, modalidade).
  • Inspecione embeddings por agrupamento e navegação de vizinho mais próximo.
  • Adicione conjuntos de teste direcionados: erros em capturas de tela, perguntas sobre diagramas, páginas digitalizadas.

Considerações de segurança, privacidade e governança

Corpora multimodais frequentemente contêm conteúdo sensível (rostos, IDs, painéis internos). Salvaguardas práticas incluem:

  • filtros de recuperação cientes de ACL (aplicados no servidor)
  • pipelines de redação/anonimização (borrar rostos, remover PII em saídas de OCR)
  • logs de auditoria de ativos recuperados
  • marca d’água ou metadados de proveniência para saídas geradas quando necessário
  • políticas estritas de retenção para imagens e embeddings em cache (veja Cache)

Como o RAG multimodal se relaciona com outras técnicas de recuperação

Resumo

RAG multimodal é geração aumentada por recuperação em que a recuperação e a fundamentação abrangem imagens, documentos e conteúdo de modalidade mista. Os principais desafios de engenharia não são apenas a escolha do modelo, mas também fidelidade de ingestão, projeto do índice, fusão/reordenação e geração fundamentada entre modalidades. Quando bem feito, ele habilita assistentes que conseguem responder com confiabilidade perguntas sobre os artefatos do mundo real com os quais as pessoas trabalham: capturas de tela, PDFs digitalizados, diagramas, tabelas e instruções visuais.