Skip to main content

RagTool

Descrição

O RagTool foi desenvolvido para responder perguntas aproveitando o poder da Geração Aumentada por Recuperação (RAG) por meio do sistema RAG nativo da CrewAI. Ele fornece uma base de conhecimento dinâmica que pode ser consultada para recuperar informações relevantes de várias fontes de dados. Esta ferramenta é particularmente útil para aplicações que exigem acesso a uma ampla variedade de informações e precisam fornecer respostas contextualmente relevantes.

Exemplo

O exemplo a seguir demonstra como inicializar a ferramenta e usá-la com diferentes fontes de dados:
Code

Fontes de Dados Suportadas

O RagTool pode ser utilizado com uma grande variedade de fontes de dados, incluindo:
  • 📰 Arquivos PDF
  • 📊 Arquivos CSV
  • 📃 Arquivos JSON
  • 📝 Texto
  • 📁 Diretórios/Pastas
  • 🌐 Páginas web em HTML
  • 📽️ Canais do YouTube
  • 📺 Vídeos do YouTube
  • 📚 Sites de documentação
  • 📝 Arquivos MDX
  • 📄 Arquivos DOCX
  • 🧾 Arquivos XML
  • 📬 Gmail
  • 📝 Repositórios GitHub
  • 🐘 Bancos de dados PostgreSQL
  • 🐬 Bancos de dados MySQL
  • 🤖 Conversas no Slack
  • 💬 Mensagens do Discord
  • 🗨️ Fóruns Discourse
  • 📝 Newsletters do Substack
  • 🐝 Conteúdo do Beehiiv
  • 💾 Arquivos Dropbox
  • 🖼️ Imagens
  • ⚙️ Fontes de dados personalizadas

Parâmetros

O RagTool aceita os seguintes parâmetros:
  • summarize: Opcional. Indica se o conteúdo recuperado deve ser resumido. O padrão é False.
  • adapter: Opcional. Um adaptador personalizado para a base de conhecimento. Se não for fornecido, será utilizado o CrewAIRagAdapter.
  • config: Opcional. Configuração do sistema RAG subjacente da CrewAI. Aceita um TypedDict RagToolConfig com as chaves opcionais embedding_model (ProviderSpec) e vectordb (VectorDbConfig). Todos os valores de configuração fornecidos programaticamente têm precedência sobre as variáveis de ambiente.

Adicionando Conteúdo

Você pode adicionar conteúdo à base de conhecimento utilizando o método add:
Code

Exemplo de Integração com Agente

Veja como integrar o RagTool com um agente do CrewAI:
Code

Configuração Avançada

É possível personalizar o comportamento do RagTool fornecendo um dicionário de configuração:
Code

Configuração do Modelo de Embedding

O parâmetro embedding_model aceita um dicionário crewai.rag.embeddings.types.ProviderSpec com a seguinte estrutura:

Provedores Suportados

main.py
Opções de Configuração:
  • api_key (str): Chave da API OpenAI
  • model_name (str): Modelo a ser utilizado. Padrão: text-embedding-ada-002. Opções: text-embedding-3-small, text-embedding-3-large, text-embedding-ada-002
  • dimensions (int): Número de dimensões do embedding
  • organization_id (str): ID da organização OpenAI
  • api_base (str): URL base personalizada da API
  • api_version (str): Versão da API
  • default_headers (dict): Cabeçalhos personalizados para solicitações à API
Variáveis de Ambiente:
  • OPENAI_API_KEY ou EMBEDDINGS_OPENAI_API_KEY: api_key
  • OPENAI_ORGANIZATION_ID ou EMBEDDINGS_OPENAI_ORGANIZATION_ID: organization_id
  • OPENAI_MODEL_NAME ou EMBEDDINGS_OPENAI_MODEL_NAME: model_name
  • OPENAI_API_BASE ou EMBEDDINGS_OPENAI_API_BASE: api_base
  • OPENAI_API_VERSION ou EMBEDDINGS_OPENAI_API_VERSION: api_version
  • OPENAI_DIMENSIONS ou EMBEDDINGS_OPENAI_DIMENSIONS: dimensions
main.py
Opções de Configuração:
  • api_key (str): Chave da API Cohere
  • model_name (str): Modelo a ser utilizado. Padrão: large. Opções: embed-english-v3.0, embed-multilingual-v3.0, large, small
Variáveis de Ambiente:
  • COHERE_API_KEY ou EMBEDDINGS_COHERE_API_KEY: api_key
  • EMBEDDINGS_COHERE_MODEL_NAME: model_name
main.py
Opções de Configuração:
  • api_key (str): Chave da API VoyageAI
  • model (str): Modelo a ser utilizado. Padrão: voyage-2. Opções: voyage-3, voyage-3-lite, voyage-code-3, voyage-large-2
  • input_type (str): Tipo de entrada. Opções: document (para armazenamento), query (para pesquisa)
  • truncation (bool): Indica se entradas que excedem o comprimento máximo devem ser truncadas. Padrão: True
  • output_dtype (str): Tipo de dados da saída
  • output_dimension (int): Dimensão dos embeddings de saída
  • max_retries (int): Número máximo de tentativas. Padrão: 0
  • timeout (float): Tempo limite da solicitação em segundos
Variáveis de Ambiente:
  • VOYAGEAI_API_KEY ou EMBEDDINGS_VOYAGEAI_API_KEY: api_key
  • VOYAGEAI_MODEL ou EMBEDDINGS_VOYAGEAI_MODEL: model
  • VOYAGEAI_INPUT_TYPE ou EMBEDDINGS_VOYAGEAI_INPUT_TYPE: input_type
  • VOYAGEAI_TRUNCATION ou EMBEDDINGS_VOYAGEAI_TRUNCATION: truncation
  • VOYAGEAI_OUTPUT_DTYPE ou EMBEDDINGS_VOYAGEAI_OUTPUT_DTYPE: output_dtype
  • VOYAGEAI_OUTPUT_DIMENSION ou EMBEDDINGS_VOYAGEAI_OUTPUT_DIMENSION: output_dimension
  • VOYAGEAI_MAX_RETRIES ou EMBEDDINGS_VOYAGEAI_MAX_RETRIES: max_retries
  • VOYAGEAI_TIMEOUT ou EMBEDDINGS_VOYAGEAI_TIMEOUT: timeout
main.py
Opções de Configuração:
  • model_name (str): Nome do modelo Ollama (por exemplo, llama2, mistral, nomic-embed-text)
  • url (str): URL do endpoint da API Ollama. Padrão: http://localhost:11434/api/embeddings
Variáveis de Ambiente:
  • OLLAMA_MODEL ou EMBEDDINGS_OLLAMA_MODEL: model_name
  • OLLAMA_URL ou EMBEDDINGS_OLLAMA_URL: url
main.py
Opções de Configuração:
  • model_name (str): ID do modelo Bedrock. Padrão: amazon.titan-embed-text-v1. Opções: amazon.titan-embed-text-v1, amazon.titan-embed-text-v2:0, cohere.embed-english-v3, cohere.embed-multilingual-v3
  • session (Any): Objeto de sessão Boto3 para autenticação da AWS
Variáveis de Ambiente:
  • AWS_ACCESS_KEY_ID: Chave de acesso da AWS
  • AWS_SECRET_ACCESS_KEY: Chave secreta da AWS
  • AWS_REGION: Região da AWS (por exemplo, us-east-1)
main.py
Opções de Configuração:
  • deployment_id (str): Obrigatório - ID de implantação do Azure OpenAI
  • api_key (str): Chave da API Azure OpenAI
  • api_base (str): Endpoint do recurso Azure OpenAI
  • api_version (str): Versão da API. Exemplo: 2024-02-01
  • model_name (str): Nome do modelo. Padrão: text-embedding-ada-002
  • api_type (str): Tipo de API. Padrão: azure
  • dimensions (int): Dimensões da saída
  • default_headers (dict): Cabeçalhos personalizados
Variáveis de Ambiente:
  • AZURE_OPENAI_API_KEY ou EMBEDDINGS_AZURE_API_KEY: api_key
  • AZURE_OPENAI_ENDPOINT ou EMBEDDINGS_AZURE_API_BASE: api_base
  • EMBEDDINGS_AZURE_DEPLOYMENT_ID: deployment_id
  • EMBEDDINGS_AZURE_API_VERSION: api_version
  • EMBEDDINGS_AZURE_MODEL_NAME: model_name
  • EMBEDDINGS_AZURE_API_TYPE: api_type
  • EMBEDDINGS_AZURE_DIMENSIONS: dimensions
main.py
Opções de Configuração:
  • api_key (str): Chave da API Google AI
  • model_name (str): Nome do modelo. Padrão: gemini-embedding-001. Opções: gemini-embedding-001, text-embedding-005, text-multilingual-embedding-002
  • task_type (str): Tipo de tarefa para embeddings. Padrão: RETRIEVAL_DOCUMENT. Opções: RETRIEVAL_DOCUMENT, RETRIEVAL_QUERY
Variáveis de Ambiente:
  • GOOGLE_API_KEY, GEMINI_API_KEY ou EMBEDDINGS_GOOGLE_API_KEY: api_key
  • EMBEDDINGS_GOOGLE_GENERATIVE_AI_MODEL_NAME: model_name
  • EMBEDDINGS_GOOGLE_GENERATIVE_AI_TASK_TYPE: task_type
main.py
Opções de Configuração:
  • model_name (str): Nome do modelo. Padrão: textembedding-gecko. Opções: text-embedding-004, textembedding-gecko, textembedding-gecko-multilingual
  • project_id (str): ID do projeto Google Cloud. Padrão: cloud-large-language-models
  • region (str): Região do Google Cloud. Padrão: us-central1
  • api_key (str): Chave de API para autenticação
Variáveis de Ambiente:
  • GOOGLE_APPLICATION_CREDENTIALS: Caminho para o arquivo JSON da conta de serviço
  • GOOGLE_CLOUD_PROJECT ou EMBEDDINGS_GOOGLE_VERTEX_PROJECT_ID: project_id
  • EMBEDDINGS_GOOGLE_VERTEX_MODEL_NAME: model_name
  • EMBEDDINGS_GOOGLE_VERTEX_REGION: region
  • EMBEDDINGS_GOOGLE_VERTEX_API_KEY: api_key
main.py
Opções de Configuração:
  • api_key (str): Chave da API Jina AI
  • model_name (str): Nome do modelo. Padrão: jina-embeddings-v2-base-en. Opções: jina-embeddings-v3, jina-embeddings-v2-base-en, jina-embeddings-v2-small-en
Variáveis de Ambiente:
  • JINA_API_KEY ou EMBEDDINGS_JINA_API_KEY: api_key
  • EMBEDDINGS_JINA_MODEL_NAME: model_name
main.py
Opções de Configuração:
  • url (str): URL completa do endpoint da API de inferência do HuggingFace
Variáveis de Ambiente:
  • HUGGINGFACE_URL ou EMBEDDINGS_HUGGINGFACE_URL: url
main.py
Opções de Configuração:
  • model_name (str): ID do modelo HuggingFace. Padrão: hkunlp/instructor-base. Opções: hkunlp/instructor-xl, hkunlp/instructor-large, hkunlp/instructor-base
  • device (str): Dispositivo no qual executar. Padrão: cpu. Opções: cpu, cuda, mps, xpu
  • instruction (str): Prefixo de instrução para embeddings
Variáveis de Ambiente:
  • EMBEDDINGS_INSTRUCTOR_MODEL_NAME: model_name
  • EMBEDDINGS_INSTRUCTOR_DEVICE: device
  • EMBEDDINGS_INSTRUCTOR_INSTRUCTION: instruction
main.py
Opções de Configuração:
  • model_name (str): Nome do modelo Sentence Transformers. Padrão: all-MiniLM-L6-v2. Opções: all-mpnet-base-v2, all-MiniLM-L6-v2, paraphrase-multilingual-MiniLM-L12-v2
  • device (str): Dispositivo no qual executar. Padrão: cpu. Opções: cpu, cuda, mps, xpu
  • normalize_embeddings (bool): Indica se os embeddings devem ser normalizados. Padrão: False
Variáveis de Ambiente:
  • EMBEDDINGS_SENTENCE_TRANSFORMER_MODEL_NAME: model_name
  • EMBEDDINGS_SENTENCE_TRANSFORMER_DEVICE: device
  • EMBEDDINGS_SENTENCE_TRANSFORMER_NORMALIZE_EMBEDDINGS: normalize_embeddings
main.py
Opções de Configuração:
  • preferred_providers (list[str]): Lista de provedores de execução ONNX em ordem de preferência
Variáveis de Ambiente:
  • EMBEDDINGS_ONNX_PREFERRED_PROVIDERS: preferred_providers (lista separada por vírgulas)
main.py
Opções de Configuração:
  • model_name (str): Arquitetura do modelo OpenCLIP. Padrão: ViT-B-32. Opções: ViT-B-32, ViT-B-16, ViT-L-14
  • checkpoint (str): Nome do checkpoint pré-treinado. Padrão: laion2b_s34b_b79k. Opções: laion2b_s34b_b79k, laion400m_e32, openai
  • device (str): Dispositivo no qual executar. Padrão: cpu. Opções: cpu, cuda
Variáveis de Ambiente:
  • EMBEDDINGS_OPENCLIP_MODEL_NAME: model_name
  • EMBEDDINGS_OPENCLIP_CHECKPOINT: checkpoint
  • EMBEDDINGS_OPENCLIP_DEVICE: device
main.py
Opções de Configuração:
  • model_name (str): Nome do modelo Text2Vec do HuggingFace. Padrão: shibing624/text2vec-base-chinese. Opções: shibing624/text2vec-base-multilingual, shibing624/text2vec-base-chinese
Variáveis de Ambiente:
  • EMBEDDINGS_TEXT2VEC_MODEL_NAME: model_name
main.py
Opções de Configuração:
  • api_key (str): Chave da API Roboflow. Padrão: "" (string vazia)
  • api_url (str): URL da API de inferência do Roboflow. Padrão: https://infer.roboflow.com
Variáveis de Ambiente:
  • ROBOFLOW_API_KEY ou EMBEDDINGS_ROBOFLOW_API_KEY: api_key
  • ROBOFLOW_API_URL ou EMBEDDINGS_ROBOFLOW_API_URL: api_url
main.py
Opções de Configuração:
  • model_id (str): Identificador do modelo WatsonX
  • url (str): Endpoint da API WatsonX
  • api_key (str): Chave da API IBM Cloud
  • project_id (str): ID do projeto WatsonX
  • space_id (str): ID do espaço WatsonX (alternativa ao project_id)
  • batch_size (int): Tamanho do lote para embeddings. Padrão: 100
  • concurrency_limit (int): Número máximo de solicitações simultâneas. Padrão: 10
  • persistent_connection (bool): Utilizar conexões persistentes. Padrão: True
  • Mais de 20 opções adicionais de autenticação e configuração
Variáveis de Ambiente:
  • WATSONX_API_KEY ou EMBEDDINGS_WATSONX_API_KEY: api_key
  • WATSONX_URL ou EMBEDDINGS_WATSONX_URL: url
  • WATSONX_PROJECT_ID ou EMBEDDINGS_WATSONX_PROJECT_ID: project_id
  • EMBEDDINGS_WATSONX_MODEL_ID: model_id
  • EMBEDDINGS_WATSONX_SPACE_ID: space_id
  • EMBEDDINGS_WATSONX_BATCH_SIZE: batch_size
  • EMBEDDINGS_WATSONX_CONCURRENCY_LIMIT: concurrency_limit
  • EMBEDDINGS_WATSONX_PERSISTENT_CONNECTION: persistent_connection
main.py
Opções de Configuração:
  • embedding_callable (type[EmbeddingFunction]): Classe da função de embedding personalizada
Observação: As funções de embedding personalizadas devem implementar o protocolo EmbeddingFunction definido em crewai.rag.core.base_embeddings_callable. O método __call__ deve aceitar dados de entrada e retornar embeddings como uma lista de arrays numpy (ou um formato compatível que será normalizado). Os embeddings retornados são normalizados e validados automaticamente.

Observações

  • Todos os campos de configuração são opcionais, a menos que estejam marcados como Obrigatório
  • Normalmente, as chaves de API podem ser fornecidas por meio de variáveis de ambiente em vez da configuração
  • Os valores padrão são exibidos quando aplicável

Conclusão

O RagTool oferece uma maneira poderosa de criar e consultar bases de conhecimento a partir de diversas fontes de dados. Ao explorar a Geração Aumentada por Recuperação, ele permite que agentes acessem e recuperem informações relevantes de forma eficiente, ampliando a capacidade de fornecer respostas precisas e contextualmente apropriadas.