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").
            }
        },
    }
)