Busca RAG em PDF
PDFSearchTool
Seção intitulada “PDFSearchTool”Descrição
Seção intitulada “Descrição”O PDFSearchTool é uma ferramenta RAG projetada para buscas semânticas dentro do conteúdo de PDFs. Ela permite inserir uma consulta de busca e um documento PDF, aproveitando técnicas avançadas de busca para encontrar conteúdos relevantes de forma eficiente. Essa capacidade a torna especialmente útil para extrair informações específicas de arquivos PDF grandes rapidamente.
Instalação
Seção intitulada “Instalação”Para começar a usar o PDFSearchTool, primeiro, garanta que o pacote crewai_tools está instalado com o seguinte comando:
pip install 'crewai[tools]'Exemplo
Seção intitulada “Exemplo”Veja como utilizar o PDFSearchTool para buscar dentro de um documento PDF:
from crewai_tools import PDFSearchTool
# Inicialize a ferramenta permitindo buscas em qualquer conteúdo PDF caso o caminho seja informado durante a execuçãotool = PDFSearchTool()
# OU
# Inicialize a ferramenta com um caminho PDF específico para buscas exclusivas naquele documentotool = PDFSearchTool(pdf='path/to/your/document.pdf')Argumentos
Seção intitulada “Argumentos”pdf: Opcional O caminho do PDF para busca. Pode ser fornecido na inicialização ou nos argumentos do métodorun. Caso seja fornecido na inicialização, a ferramenta confinará suas buscas ao documento especificado.
Modelo e embeddings personalizados
Seção intitulada “Modelo e embeddings personalizados”Por padrão, a ferramenta utiliza OpenAI para embeddings e sumarização. Para personalizar, use um dicionário de configuração conforme abaixo. Observação: um banco vetorial (vectordb) é necessário, pois os embeddings gerados precisam ser armazenados e consultados.
from crewai_tools import PDFSearchToolfrom chromadb.config import Settings # Persistência no Chroma
tool = PDFSearchTool( config={ # Obrigatório: provedor de embeddings + configuração "embedding_model": { # Provedores suportados: "openai", "azure", "google-generativeai", "google-vertex", # "voyageai", "cohere", "huggingface", "jina", "sentence-transformer", # "text2vec", "ollama", "openclip", "instructor", "onnx", "roboflow", "watsonx", "custom" "provider": "openai", "config": { # "model" é mapeado internamente para "model_name". "model": "text-embedding-3-small", # Opcional: chave da API (se ausente, usa variáveis de ambiente do provedor) # "api_key": "sk-...",
# Exemplos específicos por provedor # --- Google --- # (defina provider="google-generativeai") # "model": "models/embedding-001", # "task_type": "retrieval_document",
# --- Cohere --- # (defina provider="cohere") # "model": "embed-english-v3.0",
# --- Ollama (local) --- # (defina provider="ollama") # "model": "nomic-embed-text", }, },
# Obrigatório: configuração do banco vetorial "vectordb": { "provider": "chromadb", # ou "qdrant" "config": { # Exemplo Chroma: # "settings": Settings( # persist_directory="/content/chroma", # allow_reset=True, # is_persistent=True, # ),
# Exemplo Qdrant: # from qdrant_client.models import VectorParams, Distance # "vectors_config": VectorParams(size=384, distance=Distance.COSINE),
# Observação: o nome da coleção é controlado pela ferramenta (padrão: "rag_tool_collection"). } }, })Segurança
Seção intitulada “Segurança”Validação de Caminhos
Seção intitulada “Validação de Caminhos”Os caminhos de arquivo fornecidos a esta ferramenta são validados em relação ao diretório de trabalho atual. Caminhos que resolvem fora do diretório de trabalho são rejeitados com um ValueError.
Para permitir caminhos fora do diretório de trabalho (por exemplo, em testes ou pipelines confiáveis), defina a variável de ambiente:
CREWAI_TOOLS_ALLOW_UNSAFE_PATHS=trueValidação de URLs
Seção intitulada “Validação de URLs”Entradas de URL também são validadas: URIs file:// e requisições direcionadas a faixas de IP privadas ou reservadas são bloqueadas para prevenir ataques de falsificação de requisições do lado do servidor (SSRF).