Este é um artigo traduzido originalmente publicado no blog do Kai Waehner: "Real-Time GenAI with RAG using Apache Kafka and Flink to Prevent Hallucinations". Assine a newsletter do Kai para se manter atualizado com novas publicações.
Como você evita alucinações de grandes modelos de linguagem (LLMs) em aplicativos GenAI? Os LLMs precisam de dados em tempo real, contextualizados e confiáveis para gerar os resultados mais confiáveis . Esta postagem explica como o RAG e uma plataforma de streaming de dados com Apache Kafka e Flink tornam isso possível. Um vídeo lightboard mostra como construir uma arquitetura RAG em tempo real específica do contexto. Além disso, saiba como a agência de viagens Expedia aproveita o streaming de dados com IA generativa usando chatbots conversacionais para melhorar a experiência do cliente e reduzir o custo dos agentes de atendimento.
O que é Retrieval Augmented Generation (RAG) no GenAI?
IA generativa (GenAI) refere-se a sistemas de inteligência artificial (IA) que podem criar novos conteúdos, como texto, imagens, música ou código, muitas vezes imitando a criatividade humana . Esses sistemas usam técnicas avançadas de aprendizado de máquina, especialmente modelos de deep learning, como redes neurais, para gerar dados semelhantes aos dados de treinamento com os quais foram alimentados. Exemplos populares incluem modelos de linguagem como GPT-3 para geração de texto e DALL-E para criação de imagens.
Large Language Models como ChatGPT usam muitos dados públicos, são muito caros para treinar e não fornecem contexto específico de domínio . Treinar modelos próprios não é uma opção para a maioria das empresas devido às limitações de custo e experiência.
A Retrieval Augmented Generation (RAG) é uma técnica em IA generativa para resolver esse problema . O RAG melhora o desempenho dos language models integrando mecanismos de recuperação de informação no processo de geração. Esta abordagem visa combinar os pontos fortes dos sistemas de recuperação de informação e dos modelos generativos para produzir resultados mais precisos e contextualmente relevantes.
A Pinecone criou um excelente diagrama que explica o RAG e mostra a relação com um modelo incorporado e um banco de dados vetorial:
Benefícios da Retrieval Augmented Generation
RAG traz vários benefícios para a arquitetura corporativa GenAI:
Acesso a informações externas: ao recuperar documentos relevantes de um vasto banco de dados de vetores, o RAG permite que o modelo generativo aproveite informações atualizadas e específicas de domínio nas quais ele pode não ter sido treinado.
Alucinações reduzidas: Os modelos generativos às vezes podem produzir respostas confiantes, mas incorretas (alucinações). Ao fundamentar as respostas nos documentos recuperados, o RAG reduz a probabilidade de tais erros.
Aplicações específicas de domínio: o RAG pode ser adaptado a domínios específicos, selecionando o banco de dados de recuperação com documentos específicos de domínio, melhorando o desempenho do modelo em áreas especializadas, como medicina, direito, finanças ou viagens.
No entanto, um dos problemas mais significativos ainda existe: a falta de contexto correto e de informações atualizadas …
Como o streaming de dados com Apache Kafka e Flink ajuda na arquitetura RAG?
O RAG é obviamente crucial em empresas onde a privacidade dos dados, o contexto atualizado e a integração dos dados com sistemas transacionais e analíticos, como um sistema de gestão de pedidos, uma plataforma de reservas ou um mecanismo de fraude de pagamentos, devem ser consistentes, escaláveis e em tempo real .
Uma arquitetura orientada a eventos é a base do streaming de dados com Kafka e Flink:
Apache Kafka e Apache Flink desempenham um papel crucial na arquitetura Retrieval Augmented Generation (RAG), garantindo fluxo e processamento de dados em tempo real, o que aprimora a capacidade do sistema de recuperar e gerar informações atualizadas e contextualmente relevantes .
Veja como Kafka e Flink contribuem para a arquitetura RAG:
1. Ingestão e processamento de dados em tempo real
Ingestão de dados : Kafka atua como um sistema de mensagens de alto throughput e baixa latência que ingere dados em tempo real de várias fontes de dados, como bancos de dados, APIs, sensores ou interações do usuário.
Streaming de eventos : Kafka transmite os dados ingeridos, garantindo que os dados estejam disponíveis em tempo real para sistemas downstream. Isto é fundamental para aplicações que requerem acesso imediato às informações mais recentes.
Processamento de fluxo : o Flink processa os fluxos de dados recebidos em tempo real. Ele pode realizar transformações, agregações e enriquecimentos complexos nos dados à medida que fluem pelo sistema.
Baixa latência : a capacidade do Flink de lidar com cálculos stateful com baixa latência garante que os dados processados estejam rapidamente disponíveis para operações de recuperação.
2. Recuperação de dados aprimorada
Atualizações em tempo real : usando Kafka e Flink, o componente de recuperação do RAG pode acessar os dados mais atuais. Isto é crucial para gerar respostas que não sejam apenas precisas, mas também oportunas.
Indexação Dinâmica : À medida que novos dados chegam, o Flink pode atualizar o índice de recuperação em tempo real, garantindo que as informações mais recentes possam sempre ser recuperadas em um banco de dados vetorial.
3. Escalabilidade e Confiabilidade
Arquitetura Escalável : A arquitetura distribuída do Kafka permite lidar com grandes volumes de dados, tornando-o adequado para aplicações com requisitos de alto throughput. Os recursos escaláveis de processamento de fluxo do Flink garantem que ele possa processar e analisar grandes fluxos de dados com eficiência. Implementações ou serviços nativos da nuvem assumem o controle das operações e da escala elástica.
Tolerância a falhas : Kafka fornece tolerância a falhas integrada, replicando dados em vários nós, garantindo durabilidade e disponibilidade dos dados, mesmo no caso de falhas de nós. Flink oferece recuperação de estado e semântica de processamento exatamente uma vez, garantindo processamento de dados confiável e consistente.
4. Enriquecimento Contextual
Processamento de dados contextuais : Flink pode enriquecer os dados brutos com contexto adicional antes que o modelo generativo os utilize. Por exemplo, o Flink pode unir fluxos de dados recebidos com dados históricos ou conjuntos de dados externos para fornecer um contexto mais rico para operações de recuperação.
Extração de recursos : o Flink pode extrair recursos dos fluxos de dados que ajudam a melhorar a relevância dos documentos ou passagens recuperadas.
5. Integração e Flexibilidade
Integração perfeita : Kafka e Flink integram-se bem com servidores de modelos (por exemplo, para incorporação de modelos) e sistemas de armazenamento (por exemplo, bancos de dados vetoriais para pesquisa semática). Isso facilita a incorporação das informações e do contexto corretos na arquitetura RAG.
Design Modular : O uso de Kafka e Flink permite um design modular onde diferentes componentes (ingestão, processamento, recuperação, geração de dados) podem ser desenvolvidos, dimensionados e mantidos de forma independente.
Vídeo Lightboard: RAG com streaming de dados
O vídeo lightboard de dez minutos a seguir é uma excelente explicação interativa para a construção de uma arquitetura RAG com modelo incorporado, banco de dados vetorial, Kafka e Flink para garantir prompts atualizados e específicos do contexto no LLM:
Expedia: IA generativa na indústria de viagens
Expedia é uma agência de viagens online que oferece serviços de reserva de voos, hotéis, aluguel de carros, pacotes de férias e outros serviços relacionados a viagens. A arquitetura de TI já é construída em torno do streaming de dados há muitos anos, incluindo a integração de sistemas transacionais e analíticos .
Quando a Covid chegou , a Expedia teve que inovar rapidamente para lidar com todos os picos de tráfego de suporte relacionados a remarcações, cancelamentos e reembolsos de voos. A equipe do projeto treinou um chatbot conversacional de domínio específico (muito antes da existência do ChatGPT e do termo GenAI) e integrou-o ao processo de negócios.
Aqui estão alguns dos resultados de negócios impressionantes:
Time to market mais rápido com novas tecnologias inovadoras para resolver problemas de negócios
Mais de 60% dos viajantes usam o chat por conta própria após o lançamento
Mais de 40% de economia em custos variáveis de agentes ao permitir o autoatendimento
Kafka e Flink fornecem contexto em tempo real para RAG em uma arquitetura GenAI
Ao aproveitar o Apache Kafka e o Apache Flink , a arquitetura RAG pode lidar com ingestão, processamento e recuperação de dados em tempo real com eficiência. Isto garante que o modelo generativo tenha acesso às informações mais atuais e contextualmente ricas , resultando em respostas mais precisas e relevantes. A escalabilidade, tolerância a falhas e flexibilidade oferecidas por Kafka e Flink os tornam componentes ideais para aprimorar os recursos dos sistemas RAG.
Se você quiser saber mais sobre streaming de dados com GenAI, leia estes artigos:
Como você constrói uma arquitetura RAG? Você já está aproveitando Kafka e Flink para isso? Ou quais tecnologias e arquiteturas você usa? Conecte comigo e com o Kai no LinkedIn e vamos discutir isso! Mantenha-se informado sobre as novas postagens do blog assinando a newsletter.
Comments