Pular para o conteúdo principal

PDFSearchTool

Ainda estamos trabalhando para melhorar as ferramentas, então pode haver comportamentos inesperados ou mudanças futuras.

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

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

Veja como utilizar o PDFSearchTool para buscar dentro de um documento PDF:
Code
from crewai_tools import PDFSearchTool

# Inicialize a ferramenta permitindo buscas em qualquer conteúdo PDF caso o caminho seja informado durante a execução
tool = PDFSearchTool()

# OU

# Inicialize a ferramenta com um caminho PDF específico para buscas exclusivas naquele documento
tool = PDFSearchTool(pdf='path/to/your/document.pdf')

Argumentos

  • pdf: Opcional O caminho do PDF para busca. Pode ser fornecido na inicialização ou nos argumentos do método run. Caso seja fornecido na inicialização, a ferramenta confinará suas buscas ao documento especificado.

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.
Code
from crewai_tools import PDFSearchTool
from 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

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=true

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).