RagTool
Descrição
ORagTool 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
ORagTool 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
ORagTool 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
RagToolConfigcom as chaves opcionaisembedding_model(ProviderSpec) evectordb(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étodoadd:
Code
Exemplo de Integração com Agente
Veja como integrar oRagTool com um agente do CrewAI:
Code
Configuração Avançada
É possível personalizar o comportamento doRagTool fornecendo um dicionário de configuração:
Code
Configuração do Modelo de Embedding
O parâmetroembedding_model aceita um dicionário crewai.rag.embeddings.types.ProviderSpec com a seguinte estrutura:
Provedores Suportados
OpenAI
OpenAI
main.py
api_key(str): Chave da API OpenAImodel_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-002dimensions(int): Número de dimensões do embeddingorganization_id(str): ID da organização OpenAIapi_base(str): URL base personalizada da APIapi_version(str): Versão da APIdefault_headers(dict): Cabeçalhos personalizados para solicitações à API
OPENAI_API_KEYouEMBEDDINGS_OPENAI_API_KEY:api_keyOPENAI_ORGANIZATION_IDouEMBEDDINGS_OPENAI_ORGANIZATION_ID:organization_idOPENAI_MODEL_NAMEouEMBEDDINGS_OPENAI_MODEL_NAME:model_nameOPENAI_API_BASEouEMBEDDINGS_OPENAI_API_BASE:api_baseOPENAI_API_VERSIONouEMBEDDINGS_OPENAI_API_VERSION:api_versionOPENAI_DIMENSIONSouEMBEDDINGS_OPENAI_DIMENSIONS:dimensions
Cohere
Cohere
main.py
api_key(str): Chave da API Coheremodel_name(str): Modelo a ser utilizado. Padrão:large. Opções:embed-english-v3.0,embed-multilingual-v3.0,large,small
COHERE_API_KEYouEMBEDDINGS_COHERE_API_KEY:api_keyEMBEDDINGS_COHERE_MODEL_NAME:model_name
VoyageAI
VoyageAI
main.py
api_key(str): Chave da API VoyageAImodel(str): Modelo a ser utilizado. Padrão:voyage-2. Opções:voyage-3,voyage-3-lite,voyage-code-3,voyage-large-2input_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:Trueoutput_dtype(str): Tipo de dados da saídaoutput_dimension(int): Dimensão dos embeddings de saídamax_retries(int): Número máximo de tentativas. Padrão:0timeout(float): Tempo limite da solicitação em segundos
VOYAGEAI_API_KEYouEMBEDDINGS_VOYAGEAI_API_KEY:api_keyVOYAGEAI_MODELouEMBEDDINGS_VOYAGEAI_MODEL:modelVOYAGEAI_INPUT_TYPEouEMBEDDINGS_VOYAGEAI_INPUT_TYPE:input_typeVOYAGEAI_TRUNCATIONouEMBEDDINGS_VOYAGEAI_TRUNCATION:truncationVOYAGEAI_OUTPUT_DTYPEouEMBEDDINGS_VOYAGEAI_OUTPUT_DTYPE:output_dtypeVOYAGEAI_OUTPUT_DIMENSIONouEMBEDDINGS_VOYAGEAI_OUTPUT_DIMENSION:output_dimensionVOYAGEAI_MAX_RETRIESouEMBEDDINGS_VOYAGEAI_MAX_RETRIES:max_retriesVOYAGEAI_TIMEOUTouEMBEDDINGS_VOYAGEAI_TIMEOUT:timeout
Ollama
Ollama
main.py
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
OLLAMA_MODELouEMBEDDINGS_OLLAMA_MODEL:model_nameOLLAMA_URLouEMBEDDINGS_OLLAMA_URL:url
Amazon Bedrock
Amazon Bedrock
main.py
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-v3session(Any): Objeto de sessão Boto3 para autenticação da AWS
AWS_ACCESS_KEY_ID: Chave de acesso da AWSAWS_SECRET_ACCESS_KEY: Chave secreta da AWSAWS_REGION: Região da AWS (por exemplo,us-east-1)
Azure OpenAI
Azure OpenAI
main.py
deployment_id(str): Obrigatório - ID de implantação do Azure OpenAIapi_key(str): Chave da API Azure OpenAIapi_base(str): Endpoint do recurso Azure OpenAIapi_version(str): Versão da API. Exemplo:2024-02-01model_name(str): Nome do modelo. Padrão:text-embedding-ada-002api_type(str): Tipo de API. Padrão:azuredimensions(int): Dimensões da saídadefault_headers(dict): Cabeçalhos personalizados
AZURE_OPENAI_API_KEYouEMBEDDINGS_AZURE_API_KEY:api_keyAZURE_OPENAI_ENDPOINTouEMBEDDINGS_AZURE_API_BASE:api_baseEMBEDDINGS_AZURE_DEPLOYMENT_ID:deployment_idEMBEDDINGS_AZURE_API_VERSION:api_versionEMBEDDINGS_AZURE_MODEL_NAME:model_nameEMBEDDINGS_AZURE_API_TYPE:api_typeEMBEDDINGS_AZURE_DIMENSIONS:dimensions
Google Generative AI
Google Generative AI
main.py
api_key(str): Chave da API Google AImodel_name(str): Nome do modelo. Padrão:gemini-embedding-001. Opções:gemini-embedding-001,text-embedding-005,text-multilingual-embedding-002task_type(str): Tipo de tarefa para embeddings. Padrão:RETRIEVAL_DOCUMENT. Opções:RETRIEVAL_DOCUMENT,RETRIEVAL_QUERY
GOOGLE_API_KEY,GEMINI_API_KEYouEMBEDDINGS_GOOGLE_API_KEY:api_keyEMBEDDINGS_GOOGLE_GENERATIVE_AI_MODEL_NAME:model_nameEMBEDDINGS_GOOGLE_GENERATIVE_AI_TASK_TYPE:task_type
Google Vertex AI
Google Vertex AI
main.py
model_name(str): Nome do modelo. Padrão:textembedding-gecko. Opções:text-embedding-004,textembedding-gecko,textembedding-gecko-multilingualproject_id(str): ID do projeto Google Cloud. Padrão:cloud-large-language-modelsregion(str): Região do Google Cloud. Padrão:us-central1api_key(str): Chave de API para autenticação
GOOGLE_APPLICATION_CREDENTIALS: Caminho para o arquivo JSON da conta de serviçoGOOGLE_CLOUD_PROJECTouEMBEDDINGS_GOOGLE_VERTEX_PROJECT_ID:project_idEMBEDDINGS_GOOGLE_VERTEX_MODEL_NAME:model_nameEMBEDDINGS_GOOGLE_VERTEX_REGION:regionEMBEDDINGS_GOOGLE_VERTEX_API_KEY:api_key
Jina AI
Jina AI
main.py
api_key(str): Chave da API Jina AImodel_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
JINA_API_KEYouEMBEDDINGS_JINA_API_KEY:api_keyEMBEDDINGS_JINA_MODEL_NAME:model_name
HuggingFace
HuggingFace
main.py
url(str): URL completa do endpoint da API de inferência do HuggingFace
HUGGINGFACE_URLouEMBEDDINGS_HUGGINGFACE_URL:url
Instructor
Instructor
main.py
model_name(str): ID do modelo HuggingFace. Padrão:hkunlp/instructor-base. Opções:hkunlp/instructor-xl,hkunlp/instructor-large,hkunlp/instructor-basedevice(str): Dispositivo no qual executar. Padrão:cpu. Opções:cpu,cuda,mps,xpuinstruction(str): Prefixo de instrução para embeddings
EMBEDDINGS_INSTRUCTOR_MODEL_NAME:model_nameEMBEDDINGS_INSTRUCTOR_DEVICE:deviceEMBEDDINGS_INSTRUCTOR_INSTRUCTION:instruction
Sentence Transformer
Sentence Transformer
main.py
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-v2device(str): Dispositivo no qual executar. Padrão:cpu. Opções:cpu,cuda,mps,xpunormalize_embeddings(bool): Indica se os embeddings devem ser normalizados. Padrão:False
EMBEDDINGS_SENTENCE_TRANSFORMER_MODEL_NAME:model_nameEMBEDDINGS_SENTENCE_TRANSFORMER_DEVICE:deviceEMBEDDINGS_SENTENCE_TRANSFORMER_NORMALIZE_EMBEDDINGS:normalize_embeddings
ONNX
ONNX
main.py
preferred_providers(list[str]): Lista de provedores de execução ONNX em ordem de preferência
EMBEDDINGS_ONNX_PREFERRED_PROVIDERS:preferred_providers(lista separada por vírgulas)
OpenCLIP
OpenCLIP
main.py
model_name(str): Arquitetura do modelo OpenCLIP. Padrão:ViT-B-32. Opções:ViT-B-32,ViT-B-16,ViT-L-14checkpoint(str): Nome do checkpoint pré-treinado. Padrão:laion2b_s34b_b79k. Opções:laion2b_s34b_b79k,laion400m_e32,openaidevice(str): Dispositivo no qual executar. Padrão:cpu. Opções:cpu,cuda
EMBEDDINGS_OPENCLIP_MODEL_NAME:model_nameEMBEDDINGS_OPENCLIP_CHECKPOINT:checkpointEMBEDDINGS_OPENCLIP_DEVICE:device
Text2Vec
Text2Vec
main.py
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
EMBEDDINGS_TEXT2VEC_MODEL_NAME:model_name
Roboflow
Roboflow
main.py
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
ROBOFLOW_API_KEYouEMBEDDINGS_ROBOFLOW_API_KEY:api_keyROBOFLOW_API_URLouEMBEDDINGS_ROBOFLOW_API_URL:api_url
WatsonX (IBM)
WatsonX (IBM)
main.py
model_id(str): Identificador do modelo WatsonXurl(str): Endpoint da API WatsonXapi_key(str): Chave da API IBM Cloudproject_id(str): ID do projeto WatsonXspace_id(str): ID do espaço WatsonX (alternativa ao project_id)batch_size(int): Tamanho do lote para embeddings. Padrão:100concurrency_limit(int): Número máximo de solicitações simultâneas. Padrão:10persistent_connection(bool): Utilizar conexões persistentes. Padrão:True- Mais de 20 opções adicionais de autenticação e configuração
WATSONX_API_KEYouEMBEDDINGS_WATSONX_API_KEY:api_keyWATSONX_URLouEMBEDDINGS_WATSONX_URL:urlWATSONX_PROJECT_IDouEMBEDDINGS_WATSONX_PROJECT_ID:project_idEMBEDDINGS_WATSONX_MODEL_ID:model_idEMBEDDINGS_WATSONX_SPACE_ID:space_idEMBEDDINGS_WATSONX_BATCH_SIZE:batch_sizeEMBEDDINGS_WATSONX_CONCURRENCY_LIMIT:concurrency_limitEMBEDDINGS_WATSONX_PERSISTENT_CONNECTION:persistent_connection
Personalizado
Personalizado
main.py
embedding_callable(type[EmbeddingFunction]): Classe da função de embedding personalizada
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
ORagTool 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.