Pular para o conteúdo principal

Visão Geral

Knowledge no CrewAI é um sistema poderoso que permite que agentes de IA acessem e utilizem fontes de informação externas durante suas tarefas. Pense nisso como dar aos seus agentes uma biblioteca de referência que eles podem consultar enquanto trabalham.
Principais benefícios de usar Knowledge:
  • Aprimorar agentes com informações específicas do domínio
  • Apoiar decisões com dados do mundo real
  • Manter contexto entre conversas
  • Fundamentar respostas em informações factuais

Exemplos de Início Rápido

Para Fontes de Knowledge baseadas em arquivos, certifique-se de colocar seus arquivos em um diretório knowledge na raiz do seu projeto. Além disso, use caminhos relativos do diretório knowledge ao criar a fonte.

Exemplo Básico de Knowledge com String

Code

Exemplo de Knowledge com Conteúdo Web

Você precisa instalar docling para o seguinte exemplo funcionar: uv add docling
Code

Fontes de Knowledge Suportadas

O CrewAI suporta vários tipos de fontes de knowledge prontas para uso:

Fontes de Texto

  • Strings brutas
  • Arquivos de texto (.txt)
  • Documentos PDF

Dados Estruturados

  • Arquivos CSV
  • Planilhas Excel
  • Documentos JSON

Fonte de Knowledge de Arquivo de Texto

Fonte de Knowledge PDF

Fonte de Knowledge CSV

Fonte de Knowledge Excel

Fonte de Knowledge JSON

Certifique-se de criar a pasta ./knowledge. Todos os arquivos de origem (ex: .txt, .pdf, .xlsx, .json) devem ser colocados nesta pasta para gerenciamento centralizado.

Knowledge de Agente vs Crew: Guia Completo

Entendendo os Níveis de Knowledge: O CrewAI suporta knowledge tanto no nível de agente quanto de crew. Esta seção esclarece exatamente como cada um funciona, quando são inicializados, e aborda equívocos comuns sobre dependências.

Como a Inicialização de Knowledge Realmente Funciona

Aqui está exatamente o que acontece quando você usa knowledge:

Knowledge no Nível do Agente (Independente)

O Que Acontece Durante crew.kickoff()

Quando você chama crew.kickoff(), aqui está a sequência exata:

Independência de Armazenamento

Cada nível de knowledge usa coleções de armazenamento independentes:

Exemplos Completos Funcionais

Exemplo 1: Knowledge Apenas do Agente

Exemplo 2: Knowledge Tanto do Agente Quanto da Crew

Exemplo 3: Múltiplos Agentes com Knowledge Diferente

Diferente da recuperação de um banco de dados vetorial usando uma ferramenta, agentes pré-carregados com knowledge não precisarão de uma persona de recuperação ou tarefa. Simplesmente adicione as fontes de knowledge relevantes que seu agente ou crew precisa para funcionar.As fontes de knowledge podem ser adicionadas no nível do agente ou da crew. As fontes de knowledge no nível da crew serão usadas por todos os agentes na crew. As fontes de knowledge no nível do agente serão usadas pelo agente específico que é pré-carregado com o knowledge.

Configuração de Knowledge

Você pode configurar a configuração de knowledge para a crew ou agente.
Code
results_limit: é o número de documentos relevantes a retornar. Padrão é 3. score_threshold: é a pontuação mínima para um documento ser considerado relevante. Padrão é 0.35.

Parâmetros de Knowledge Suportados

sources
List[BaseKnowledgeSource]
obrigatório
Lista de fontes de knowledge que fornecem conteúdo para ser armazenado e consultado. Pode incluir PDF, CSV, Excel, JSON, arquivos de texto ou conteúdo de string.
collection_name
str
Nome da coleção onde o knowledge será armazenado. Usado para identificar diferentes conjuntos de knowledge. Padrão é “knowledge” se não fornecido.
storage
Optional[KnowledgeStorage]
Configuração de armazenamento personalizada para gerenciar como o knowledge é armazenado e recuperado. Se não fornecido, um armazenamento padrão será criado.

Transparência do Armazenamento de Knowledge

Entendendo o Armazenamento de Knowledge: O CrewAI armazena automaticamente as fontes de knowledge em diretórios específicos da plataforma usando ChromaDB para armazenamento vetorial. Entender essas localizações e padrões ajuda com implantações de produção, depuração e gerenciamento de armazenamento.

Onde o CrewAI Armazena Arquivos de Knowledge

Por padrão, o CrewAI usa o mesmo sistema de armazenamento que a memória, armazenando knowledge em diretórios específicos da plataforma:

Localizações de Armazenamento Padrão por Plataforma

macOS:
Linux:
Windows:

Encontrando Sua Localização de Armazenamento de Knowledge

Para ver exatamente onde o CrewAI está armazenando seus arquivos de knowledge:

Controlando Localizações de Armazenamento de Knowledge

Opção 1: Variável de Ambiente (Recomendado)

Opção 2: Armazenamento de Knowledge Personalizado

Opção 3: Armazenamento de Knowledge Específico do Projeto

Comportamento Padrão do Provedor de Embedding

Provedor de Embedding Padrão: O CrewAI usa por padrão embeddings da OpenAI (text-embedding-3-small) para armazenamento de knowledge, mesmo quando usa diferentes provedores de LLM. Você pode facilmente personalizar isso para corresponder à sua configuração.

Entendendo o Comportamento Padrão

Personalizando Provedores de Embedding de Knowledge

Configurando Embeddings do Azure OpenAI

Ao usar embeddings do Azure OpenAI:
  1. Certifique-se de implantar o modelo de embedding na plataforma Azure primeiro
  2. Então você precisa usar a seguinte configuração:

Recursos Avançados

Reescrita de Consulta

O CrewAI implementa um mecanismo inteligente de reescrita de consulta para otimizar a recuperação de knowledge. Quando um agente precisa pesquisar nas fontes de knowledge, o prompt da tarefa bruto é automaticamente transformado em uma consulta de pesquisa mais eficaz.

Como a Reescrita de Consulta Funciona

  1. Quando um agente executa uma tarefa com fontes de knowledge disponíveis, o método _get_knowledge_search_query é acionado
  2. O LLM do agente é usado para transformar o prompt original da tarefa em uma consulta de pesquisa otimizada
  3. Esta consulta otimizada é então usada para recuperar informações relevantes das fontes de knowledge

Benefícios da Reescrita de Consulta

Precisão de Recuperação Melhorada

Ao focar em conceitos-chave e remover conteúdo irrelevante, a reescrita de consulta ajuda a recuperar informações mais relevantes.

Consciência de Contexto

As consultas reescritas são projetadas para ser mais específicas e conscientes do contexto para recuperação de banco de dados vetorial.

Exemplo

A consulta reescrita é mais focada na necessidade de informação principal e remove instruções irrelevantes sobre formatação de saída.
Este mecanismo é totalmente automático e não requer configuração dos usuários. O LLM do agente é usado para realizar a reescrita da consulta, então usar um LLM mais capaz pode melhorar a qualidade das consultas reescritas.

Eventos de Knowledge

O CrewAI emite eventos durante o processo de recuperação de knowledge que você pode escutar usando o sistema de eventos. Esses eventos permitem que você monitore, depure e analise como o knowledge está sendo recuperado e usado pelos seus agentes.

Eventos de Knowledge Disponíveis

  • KnowledgeRetrievalStartedEvent: Emitido quando um agente começa a recuperar knowledge das fontes
  • KnowledgeRetrievalCompletedEvent: Emitido quando a recuperação de knowledge é concluída, incluindo a consulta usada e o conteúdo recuperado
  • KnowledgeQueryStartedEvent: Emitido quando uma consulta às fontes de knowledge começa
  • KnowledgeQueryCompletedEvent: Emitido quando uma consulta é concluída com sucesso
  • KnowledgeQueryFailedEvent: Emitido quando uma consulta às fontes de knowledge falha
  • KnowledgeSearchQueryFailedEvent: Emitido quando uma consulta de pesquisa falha

Exemplo: Monitorando Recuperação de Knowledge

Para mais informações sobre como usar eventos, consulte a documentação Event Listeners.

Fontes de Knowledge Personalizadas

O CrewAI permite que você crie fontes de knowledge personalizadas para qualquer tipo de dados estendendo a classe BaseKnowledgeSource. Vamos criar um exemplo prático que busca e processa artigos de notícias espaciais.

Exemplo de Fonte de Knowledge de Notícias Espaciais

Depuração e Solução de Problemas

Depurando Problemas de Knowledge

Verificar Inicialização de Knowledge do Agente

Verificar Localizações de Armazenamento de Knowledge

Testar Recuperação de Knowledge

Inspecionar Coleções de Knowledge

Verificar Processamento de Knowledge

Problemas Comuns de Armazenamento de Knowledge

Erros “Arquivo não encontrado”:
Erros “Incompatibilidade de dimensão de embedding”:
Erros “ChromaDB permissão negada”:
Knowledge não persistindo entre execuções:

Comandos de Reset de Knowledge

Limpando Knowledge

Se você precisar limpar o knowledge armazenado no CrewAI, você pode usar o comando crewai reset-memories com a opção --knowledge.
Command
Isso é útil quando você atualizou suas fontes de knowledge e quer garantir que os agentes estejam usando as informações mais recentes.

Melhores Práticas

  • Mantenha tamanhos de chunk apropriados para seu tipo de conteúdo
  • Considere sobreposição de conteúdo para preservação de contexto
  • Organize informações relacionadas em fontes de knowledge separadas
  • Ajuste tamanhos de chunk baseado na complexidade do conteúdo
  • Configure modelos de embedding apropriados
  • Considere usar provedores de embedding locais para processamento mais rápido
  • Com a estrutura de arquivo típica fornecida pelo CrewAI, as fontes de knowledge são incorporadas toda vez que o kickoff é acionado.
  • Se as fontes de knowledge são grandes, isso leva à ineficiência e latência aumentada, pois os mesmos dados são incorporados cada vez.
  • Para resolver isso, inicialize diretamente o parâmetro knowledge em vez do parâmetro knowledge_sources.
  • Link para a issue para ter a ideia completa Github Issue
  • Use knowledge no nível do agente para informações específicas do papel
  • Use knowledge no nível da crew para informações compartilhadas que todos os agentes precisam
  • Configure embedders no nível do agente se você precisar de estratégias de embedding diferentes
  • Use nomenclatura consistente de coleção mantendo papéis de agente descritivos
  • Teste a inicialização de knowledge verificando agent.knowledge após o kickoff
  • Monitore localizações de armazenamento para entender onde o knowledge está armazenado
  • Reset knowledge apropriadamente usando os tipos de comando corretos
  • Configure CREWAI_STORAGE_DIR para uma localização conhecida em produção
  • Escolha provedores de embedding explícitos para corresponder à sua configuração de LLM e evitar conflitos de chave de API
  • Monitore o tamanho do armazenamento de knowledge conforme ele cresce com adições de documentos
  • Organize fontes de knowledge por domínio ou propósito usando nomes de coleção
  • Inclua diretórios de knowledge em suas estratégias de backup e implantação
  • Configure permissões de arquivo apropriadas para arquivos de knowledge e diretórios de armazenamento
  • Use variáveis de ambiente para chaves de API e configuração sensível