[Tutorial] Construindo um Pipeline Visual de Recuperação de Documentos com ColPali e Pontuação de I…

Neste tutorial, construímos um pipeline visual de recuperação de documentos ponta a ponta usando ColPali. Focamos em tornar a configuração robusta, resolvendo conflitos comuns de dependência e garantindo que o ambiente permaneça estável. Renderizamos páginas de PDF como imagens, as incorporamos usando as representações multi-vetoriais do ColPali, e contamos com a pontuação de interação tardia para recuperar as páginas mais relevantes para uma consulta em linguagem natural. Ao tratar cada página visualmente, em vez de como texto simples, preservamos o layout, tabelas e figuras que são frequentemente perdidos na recuperação tradicional de apenas texto.

Copiar Código Copiado Usar um navegador diferente

import subprocess, sys, os, json, hashlib

def pip(cmd):

subprocess.check_call([sys.executable, "-m", "pip"] + cmd)

pip(["uninstall", "-y", "pillow", "PIL", "torchaudio", "colpali-engine"])

pip(["install", "-q", "--upgrade", "pip"])

pip(["install", "-q", "pillow<12", "torchaudio==2.8.0"])

pip(["install", "-q", "colpali-engine", "pypdfium2", "matplotlib", "tqdm", "requests"])

Preparamos um ambiente de execução limpo e estável desinstalando pacotes conflitantes e atualizando o pip. Fixamos explicitamente versões compatíveis de Pillow e torchaudio para evitar erros de importação em tempo de execução. Em seguida, instalamos o ColPali e suas dependências necessárias para que o restante do tutorial seja executado sem interrupções.

Copiar Código Copiado Usar um navegador diferente

import torch

import requests

import pypdfium2 as pdfium

from PIL import Image

from tqdm import tqdm

import matplotlib.pyplot as plt

from transformers.utils.import_utils import is_flash_attn_2_available

from colpali_engine.models import ColPali, ColPaliProcessor

device = "cuda" if torch.cuda.is_available() else "cpu"

dtype = torch.float16 if device == "cuda" else torch.float32

MODEL_NAME = "vidore/colpali-v1.3"

model = ColPali.from_pretrained(

MODEL_NAME,

torch_dtype=dtype,

device_map=device,

attn_implementation="flash_attention_2" if device == "cuda" and is_flash_attn_2_available() else None,

).eval()

processor = ColPaliProcessor.from_pretrained(MODEL_NAME)

Importamos todas as bibliotecas necessárias e detectamos se uma GPU está disponível para aceleração. Carregamos o modelo e o processador do ColPali com a precisão e a implementação de atenção apropriadas com base no tempo de execução. Garantimos que o modelo esteja pronto para inferência, alternando-o para o modo de avaliação.

Copiar Código Copiado Usar um navegador diferente

PDF_URL = "https://arxiv.org/pdf/2407.01449.pdf"

pdf_bytes = requests.get(PDF_URL).content

pdf = pdfium.PdfDocu

Fonte: MarkTechPost

Publicado em 2026-02-19

Notícias relacionadas

Continue explorando