O Langflow é uma ferramenta de desenvolvimento visual para a criação de aplicações com modelos de linguagem grandes (LLMs). Ele permite que você construa fluxos de trabalho complexos de LLMs arrastando e soltando componentes, sem a necessidade de escrever código.

Essa plataforma vem crescendo bastante neste tempo de aplicações de IA para todos os lados, por permitir a construção de fluxos de IA utilizando uma interface gráfica intuitiva e o método de no-code, que elimina as barreiras técnicas da codificação.

Neste post, vamos explorar um dos seus segmentos, que é a prototipagem de Chatbots com dados internos, mais conhecido por RAG (Retrieval Augmented Generation - Geração Aumentada por Recuperação).

Sumário


Instalação

A instalação do Langflow é bem prática. Eu fiz a minha através de um sistema Linux, mas no Windows a instalação é um app, que requer um compilador de C++ para funcionar.

Para instalação no Linux, é preciso ter a versão do Python 3.10+ e é recomendado utilizar o package-manager uv, mas podem ser usados outros package-managers como o pip.


Modelos Locais

Para a construção do nosso RAG, serão necessários modelos de embedding para a manipulação do banco de dados.

Buscando manter o fluxo totalmente gratuito, optei por utilizar modelos gratuitos via ollama. Se você tiver uma chave da OPENAI, pode utilizar o componente de embedding próprio do GPT.

Para a instalação do ollama, a depender do seu sistema operacional, veja este site.

O modelo que escolhi foi um modelo leve, focado em embeddings. Para baixá-lo, execute:
ollama pull nomic-embed-text

Após fazer a instalação do modelo, você deve executar: ollama run <nome_do_modelo>


Banco de Dados

A primeira coisa necessária para a construção do nosso RAG é o banco de dados com os arquivos que queremos que sejam utilizados para que o modelo LLM forneça nossas respostas.

Nesse caso vamos utilizar o componente integrado nativo do Langflow, o Chroma DB.

Ele é um banco de dados vetorial que possui uma ferramenta de busca, é rápido e de fácil integração, perfeito para nosso primeiro chatbot.

Na barra lateral esquerda estão todos os componentes (blocos) que vamos configurar para a construção do nosso fluxo.

Para a estruturação do banco de dados, é necessário o componente File, que recebe os arquivos que vão alimentar nosso banco de dados. No meu caso, inseri um arquivo sobre o uso do Langflow.

Também precisamos do componente Ollama Embedding, o Langflow fará a conexão automática com o modelo instalado e ativo, que aparecerá como disponível na seleção do componente de embedding.

Por fim, além de logicamente o componente do Chroma DB, é preciso do componente Split Text, que basicamente fará o corte do arquivo em pedaços: por padrão 1000 caracteres, com 200 caracteres de sobreposição.

Essa sobreposição é muito importante para o embedding, pois ele mantém o contexto e a similaridade entre os trechos do texto.

No componente do Chroma DB, o collection name já vem definido como o diretório onde o Langflow está sendo executado.

O persist directory não é de uso obrigatório, seu uso é para manter salvo os dados atribuídos ao banco de dados mesmo após o fechamento da aplicação.

Resultado final:

banco_dados

Agora, com todos os componentes ajustados de acordo com o resultado final basta inserir os arquivos de sua preferência no componente de File e executar o componente do Chroma DB.

Ao executar o último componente de um fluxo, todos os anteriores são automaticamente executados.


Fluxo do Chatbot

Com o banco de dados estruturado, agora sim podemos efetivamente construir o fluxo do nosso agente.

Tudo começa com o componente Chat Input, que será parte do prompt enviado para o modelo de LLM e também será usando no nosso banco de dados para coletar os dados registrados relacionados ao nosso input.

Essa busca no banco de dados, precisa do componente Ollama Embeddings e do componente do Chroma DB.

Além disso também é necessário um componente chamado Parser, no modo Stringify que faz a formatação da saída para um arquivo mais adequado de ser lido pelo modelo.

Os dados fornecidos serão ligados ao componente de Prompt, talvez para fazer essa ligação seja preciso entrar nas configurações do componente e ativar a função tool placeholder.

O prompt que utilizei foi bem simples: “Utilizando os dados recebidos do banco de dados, responda corretamente o input.”

Com tudo isso definido, agora é preciso adicionar o penúltimo e mais importante componente, o Language model. No meu caso, escolhi o Gemini por liberarem uma cota gratuita de uso. É necessário obter a chave da API e adicioná-la como variável no sistema do Langflow.

E o último componente é o Chat Output, responsável apenas por exibir a resposta gerada pelo modelo.

RAG

Recomendo abrir as imagens em uma nova guia, para melhor visualização.

Com tudo configurado de acordo com o resultado final, basta agora clicar em Playground e testar nosso RAG.


Diferença: Langflow x n8n

A diferença essencial entre essas plataformas pode ser resumida em: objetivo.

Enquanto o Langflow tem como foco a construção de aplicações de IA, o n8n é direcionado para automações em geral, também incluindo o elemento de IA, mas não como recurso principal.

Dessa forma, temos no n8n muito mais conexões diretas com as mais diversas aplicações de vários segmentos, principalmente de negócios.

Já no Langflow, as conexões são em sua grande maioria ligadas à criação de aplicações com IA, com foco em agentes, chatbots e cadeias complexas de LLMs…