RAG-Anything: Como Fazer RAG com PDFs que Têm Imagens, Tabelas e Equações

RAG-Anything é um framework open source em Python para conversar com seus PDFs e documentos do Office sem perder imagens, tabelas nem equações. Em vez de achatar o arquivo em texto plano, separa cada elemento, o descreve com um modelo de linguagem ou de visão e conecta tudo em um grafo de conhecimento que você pode consultar em linguagem natural. É desenvolvido pelo HKUDS, o laboratório da Universidade de Hong Kong por trás do LightRAG, tem licença MIT e ultrapassa as 24.100 estrelas no GitHub.

O que é RAG-Anything?

RAG-Anything é um pipeline de RAG multimodal (multimodal RAG) construído sobre o LightRAG. Cobre toda a jornada, desde a ingestão do documento até a resposta, em quatro etapas:

  1. Análise. Um analisador divide o arquivo em blocos de texto, imagens, tabelas e equações, e registra a página de onde cada um vem.
  2. Análise por tipo. Cada elemento passa por seu próprio processador. Um modelo de visão escreve descrições das imagens levando em conta o contexto, as tabelas são interpretadas como dados estruturados e as equações são processadas em LaTeX.
  3. Grafo de conhecimento. Os elementos são convertidos em entidades relacionadas com o texto que as rodeia. Uma cadeia de relações belongs_to conserva a hierarquia de seções do documento.
  4. Recuperação híbrida. As consultas combinam busca vetorial com percurso do grafo, então uma resposta pode trazer um parágrafo junto com o gráfico que o explica. É a ideia por trás do knowledge graph RAG ou graph RAG, estendida a conteúdo que não é texto.

Aceita PDFs, documentos do Office (DOC, DOCX, PPT, PPTX, XLS, XLSX), imagens (JPG, PNG, BMP, TIFF, GIF, WebP) e arquivos de texto (TXT, MD). As versões recentes também aceitam áudio e vídeo, que vemos mais abaixo.

Por que o RAG tradicional falha com PDFs que têm tabelas e gráficos?

Porque um pipeline de RAG típico extrai a camada de texto do PDF, a divide em fragmentos e gera embeddings desses fragmentos. Tudo que não é texto corrido se perde no caminho:

  • Um gráfico de barras desaparece.
  • Uma tabela se torna uma lista de números sem os cabeçalhos de suas colunas.
  • Uma fórmula fica como caracteres quebrados.

Em documentação técnica, relatórios financeiros e papers de pesquisa, a resposta geralmente está bem ali.

RAG-Anything trata esses elementos como conteúdo de primeira classe. Um gráfico é descrito por um modelo de visão e é salvo como uma entidade vinculada ao parágrafo que o menciona. Uma tabela conserva sua estrutura e sua legenda.

A abordagem está descrita no relatório técnico dos autores no arXiv (2510.12323, outubro de 2025). Segundo os próprios autores, supera os métodos existentes em benchmarks multimodais, com as maiores vantagens em documentos longos. São resultados reportados pela equipe que criou a ferramenta, e o relatório é um preprint.

Qual é a diferença entre LightRAG e RAG-Anything?

LightRAG é o motor e RAG-Anything é a camada multimodal que fica em cima. LightRAG fornece a indexação baseada em grafos, o armazenamento e os modos de consulta. RAG-Anything adiciona os analisadores, os processadores por tipo de conteúdo e as relações entre texto, imagens, tabelas e equações dentro do grafo.

Os dois projetos estão muito conectados:

  • Se você já tem uma base de conhecimento no LightRAG, pode passar essa instância para RAG-Anything. Herda o diretório de trabalho, a função do LLM e a de embeddings, e você pode agregar documentos multimodais ao mesmo armazenamento.
  • Desde junho de 2026, o próprio LightRAG habilita RAG multimodal através de uma integração nativa de RAG-Anything.

Regra prática: se seus documentos são quase tudo prosa, o LightRAG é suficiente. Se as respostas estão em figuras, tabelas ou fórmulas, você precisa da camada de RAG-Anything.

RAG-Anything ou MarkItDown?

Depende se você precisa de um sistema de RAG completo ou apenas converter documentos para passá-los a um modelo. MarkItDown é um utilitário leve da Microsoft que converte PDFs, Office, imagens, áudio, HTML e EPUB para Markdown, conservando títulos, listas, tabelas e links. É pensado para alimentar LLMs, mas apenas converte: não indexa nem recupera nada.

MarkItDown RAG-Anything
O que produz Um arquivo Markdown Um grafo de conhecimento consultável
Imagens EXIF e OCR; descrições com LLM opcionais para PPTX e imagens Descrição com modelo de visão de cada imagem, vinculada ao texto
Busca e respostas Não inclui Recuperação híbrida vetorial e de grafo
Modelos necessários Nenhum para a conversão básica LLM, modelo de visão e embeddings
Instalação pip install 'markitdown[all]' pip install raganything

Se você vai colar um documento no contexto do Claude Code ou do seu agente, MarkItDown é a ferramenta mais direta. Se você tem uma pasta com centenas de documentos e quer fazer perguntas cujas respostas estão em gráficos e tabelas, RAG-Anything é a opção.

Como se instala RAG-Anything?

Se instala do PyPI e requer Python 3.9 ou superior:

pip install raganything

# Extras opcionais para mais formatos
pip install 'raganything[all]'
pip install 'raganything[image]'   # BMP, TIFF, GIF, WebP
pip install 'raganything[text]'    # TXT, MD

Se preferir trabalhar a partir do código fonte, o projeto usa uv:

git clone https://github.com/HKUDS/RAG-Anything.git
cd RAG-Anything
uv sync
uv sync --all-extras   # todas as funções opcionais

Há duas coisas que pip não instala para você:

  • LibreOffice é obrigatório para processar documentos do Office. No macOS é brew install --cask libreoffice, no Ubuntu/Debian sudo apt-get install libreoffice, e no Windows, o instalador do site oficial.
  • Os modelos do MinerU são baixados automaticamente na primeira vez que você processa um documento.

Para verificar que o analisador está pronto:

mineru --version

MinerU, Docling ou PaddleOCR: qual analisador convém usar?

Comece com MinerU, que é o analisador padrão, a menos que seu corpus seja quase tudo Office: nesse caso, experimente Docling. RAG-Anything suporta três analisadores e você escolhe um com o argumento parser ou a variável de ambiente PARSER:

Analisador Ideal para
MinerU (padrão) PDFs, imagens e Office; OCR e extração de tabelas sólidos; aceleração por GPU
Docling Documentos do Office e HTML; conserva melhor a estrutura do documento
PaddleOCR Trabalho intensivo de OCR em PDFs escaneados e imagens; converte Office/TXT/MD para PDF primeiro

PaddleOCR precisa de seu próprio extra (pip install 'raganything[paddleocr]') e além disso uma versão de paddlepaddle para sua plataforma, que se instala seguindo seu guia oficial.

O método de análise pode ser auto, ocr ou txt. MinerU também aceita opções como device (cpu, cuda, mps), um intervalo de páginas e lang para o OCR.

Como conversar com seus PDFs usando RAG-Anything?

Você configura três funções de modelo (um LLM, um modelo de visão e uma função de embeddings), processa o arquivo e o consulta. As chamadas principais são essas:

config = RAGAnythingConfig(
    working_dir="./rag_storage",
    parser="mineru",
    parse_method="auto",
    enable_image_processing=True,
    enable_table_processing=True,
    enable_equation_processing=True,
)

rag = RAGAnything(
    config=config,
    llm_model_func=llm_model_func,
    vision_model_func=vision_model_func,
    embedding_func=embedding_func,
)

await rag.process_document_complete(
    file_path="path/to/your/document.pdf",
    output_dir="./output",
    parse_method="auto",
)

result = await rag.aquery(
    "What are the main findings shown in the figures and tables?",
    mode="hybrid",
)

As definições completas das três funções de modelo estão no README. O exemplo oficial as conecta à API da OpenAI, e o parâmetro base_url permite que você as aponte para qualquer endpoint compatível.

Há três formas de consultar:

  • Consultas de texto, com os modos do LightRAG: hybrid, local, global e naive.
  • Consultas melhoradas com VLM, que se ativam sozinhas quando há um modelo de visão configurado. Se o contexto recuperado inclui imagens, as próprias imagens são enviadas ao modelo de visão, não apenas suas descrições.
  • Consultas multimodais (aquery_with_multimodal), que permitem incluir uma tabela ou uma equação em LaTeX dentro da própria pergunta.

Para processar uma pasta completa, process_folder_complete recebe uma lista de extensões, uma flag recursive e max_workers.

Se você já processou seus documentos com outra ferramenta, insert_content_list aceita conteúdo já analisado e pula a análise completamente.

O repositório inclui um script de ponta a ponta pronto para usar:

python examples/raganything_example.py path/to/document.pdf --api-key YOUR_API_KEY --parser mineru

RAG-Anything pode processar áudio e vídeo?

Sim, desde as versões 1.4.x (setembro de 2026). As duas funções são opcionais.

  • Áudio (.mp3, .wav, .flac, .m4a, .ogg)
    • Instale com pip install 'raganything[audio]' e ative enable_audio_processing=True.
    • A transcrição é feita localmente com faster-whisper, usando o modelo que você indicar em WHISPER_MODEL (por padrão, base).
  • Vídeo (.mp4, .mov, .webm, .avi, .mkv)
    • Instale com pip install 'raganything[video]', que além disso precisa de ffmpeg em seu PATH, e ative enable_video_processing=True.
    • O pipeline detecta cenas com SceneDetect, descreve os fotogramas chave com o modelo de visão, transcreve a faixa de áudio e une tudo por marca de tempo.

Os arquivos de mídia entram na mesma base de conhecimento que seus documentos. Assim, uma única pergunta pode se apoiar simultaneamente na especificação em PDF e na gravação de uma revisão de design.

RAG-Anything é gratuito?

O framework é gratuito e tem licença MIT, mas executá-lo não necessariamente é, porque chama três modelos: um LLM, um modelo de visão para as imagens e um modelo de embeddings. Se você usa APIs hospedadas, paga por tokens ao indexar, já que cada imagem e cada tabela passa por um modelo, e novamente ao consultar.

Algumas partes rodam localmente sem custo de API:

  • Os modelos dos analisadores (MinerU, Docling, PaddleOCR).
  • A transcrição de áudio com faster-whisper.
  • Os scripts de teste de análise incluídos (office_document_test.py, image_format_test.py, text_format_test.py), que exercitam o analisador sem chave de API.

Por isso são uma boa forma de verificar quão bem seus documentos são analisados antes de gastar com a indexação.


E você? Quais documentos gostaria de poder consultar com um RAG multimodal em seu trabalho?

Por qual analisador começaria?
  • MinerU
  • Docling
  • PaddleOCR
  • Prefiro outra opção (conte qual)
0 votantes

Comente abaixo ou, se este artigo chegou até você por email, responda diretamente ao email: sua resposta é publicada aqui.

Relacionado: Building the Entire RAG Ecosystem and Optimizing Every Component