RAG no n8n
O que é RAG?
Recuperação Aumentada por Geração (RAG, do inglês Retrieval-Augmented Generation) é uma técnica que melhora a qualidade das respostas de modelos de linguagem ao combiná-los com fontes externas de dados. Em vez de depender apenas dos dados internos usados durante o treinamento do modelo, os sistemas RAG recuperam documentos relevantes e ancoram as respostas em conhecimento atualizado, específico de um domínio ou privado. Fluxos de trabalho RAG geralmente utilizam bancos de dados vetoriais para gerenciar e recuperar esses dados externos de forma eficiente.
O que é um banco de dados vetorial?
Um banco de dados vetorial é um tipo especializado de banco de dados projetado para armazenar e recuperar vetores de alta dimensionalidade — representações numéricas de texto, imagens ou outros tipos de dados. Quando você envia um documento, o banco de dados vetorial o divide em vários fragmentos e usa um modelo de embedding para converter cada fragmento em um vetor.
Você pode consultar esses vetores usando busca por similaridade, que retorna resultados com base no significado semântico, e não em correspondência exata de palavras-chave. Isso torna os bancos de dados vetoriais uma base poderosa para sistemas RAG e outras aplicações de IA que exigem recuperação e raciocínio sobre grandes volumes de conhecimento.
Como usar RAG no n8n?
Comece com um modelo RAG
👉 Use o modelo inicial de RAG para experimentar rapidamente o RAG no n8n. Esse modelo inclui dois fluxos de trabalho prontos: um para enviar arquivos e outro para fazer perguntas sobre eles.
Inserir dados no banco de dados vetorial
Antes que um agente possa acessar sua base de conhecimento personalizada, você precisa inserir os dados no banco de dados vetorial:
- Adicione os nós necessários para obter os dados de origem.
- Insira um nó de banco de dados vetorial (por exemplo, Simple Vector Store) e selecione a operação Inserir documentos.
- Escolha um modelo de embedding para converter o texto em vetores. Para mais informações sobre como escolher o modelo ideal, consulte as Perguntas Frequentes.
- Adicione um nó Default Data Loader para dividir o conteúdo em fragmentos. Você pode usar as configurações padrão ou personalizar a estratégia de divisão:
- Divisão por caractere: divide com base no número de caracteres.
- Divisão recursiva por caractere: divide recursivamente com base em Markdown, HTML, blocos de código ou caracteres comuns (recomendado para a maioria dos casos).
- Divisão por token: divide com base no número de tokens.
- (Opcional) Adicione metadados a cada fragmento para enriquecer o contexto e facilitar a filtragem posterior.
Consultar dados
Você pode consultar os dados de duas formas principais: usando um agente ou diretamente por meio de nós.
Usando um agente
- Adicione um agente ao seu fluxo de trabalho.
- Adicione o banco de dados vetorial como uma ferramenta e forneça uma descrição clara para ajudar o agente a entender quando usá-lo:
- Defina o limite de fragmentos a serem retornados.
- Ative Incluir metadados para fornecer contexto adicional a cada fragmento.
- Adicione o mesmo modelo de embedding usado na inserção dos dados.
💡 Dica profissional
Para economizar tokens de modelos caros, você pode primeiro usar a ferramenta Vector Store Question Answer Tool para recuperar os dados relevantes e, em seguida, passar esses resultados para o agente. Veja este modelo para ver isso em ação.
Usando nós diretamente
- Adicione um nó de banco de dados vetorial à tela e selecione a operação Obter vários.
- Insira sua consulta ou pergunta:
- Defina o limite para controlar quantos fragmentos serão retornados.
- Ative Incluir metadados, se necessário.
Perguntas Frequentes
Como escolher o modelo de embedding adequado?
O modelo ideal depende do seu caso de uso.
De modo geral, modelos menores (como text-embedding-ada-002) são mais rápidos e econômicos, sendo adequados para documentos curtos, cenários genéricos ou fluxos de trabalho RAG leves. Modelos maiores (como text-embedding-3-large) oferecem melhor compreensão semântica e são mais indicados para documentos longos, temas complexos ou situações em que a precisão é crítica.
Qual método de divisão de texto é mais adequado ao meu cenário?
Isso depende muito das características dos seus dados:
- Fragmentos pequenos (por exemplo, de 200 a 500 tokens) são ideais para recuperação granular.
- Fragmentos maiores podem conter mais contexto, mas também correm o risco de se tornarem vagos ou ruidosos.
Definir um tamanho apropriado de sobreposição entre fragmentos é fundamental para que a IA compreenda o contexto ao redor de cada bloco. Por isso, dividir com base em Markdown ou blocos de código geralmente produz melhores resultados.
Outra boa prática é enriquecer os fragmentos com mais contexto (por exemplo, indicando de qual documento eles vieram). Se quiser se aprofundar nesse tema, recomendamos a excelente publicação da Anthropic.