Os grandes modelos de linguagem (LLMs) costumam ter um conhecimento surpreendente sobre uma grande variedade de tópicos, mas estão limitados apenas aos dados nos quais foram treinados. Isso significa que os clientes que desejam usar LLMs com informações de negócios privadas ou proprietárias não podem usar LLMs "prontos para uso" para responder a perguntas, gerar correspondência ou coisas do gênero.
A geração aumentada de recuperação (RAG) é um padrão arquitetônico que permite que modelos de base produzam saídas efetivamente corretas para tópicos especializados ou proprietários que não faziam parte dos dados de treinamento do modelo. Ao aumentar as perguntas e prompts dos usuários com dados relevantes recuperados de fontes de dados externas, a RAG fornece ao modelo fatos e detalhes "novos" (para o modelo) nos quais basear sua resposta.
O padrão RAG, mostrado no diagrama abaixo, é composto de duas partes: incorporação de dados durante o tempo de construção e prompts para o usuário (ou retorno de resultados de pesquisa) durante o tempo de execução.
Um engenheiro de IA prepara os dados do cliente (por exemplo, manuais de procedimentos, documentação de produtos, tickets de help desk etc.) durante o pré-processamento de dados. Os dados do cliente são transformados e/ou enriquecidos para torná-los adequados para aumento do modelo. As transformações podem incluir conversões de formato simples, como converter documentos PDF em texto, ou transformações mais complexas, como traduzir estruturas de tabelas complexas em instruções do tipo if-then. O enriquecimento pode incluir a expansão de abreviações comuns, adição de metadados, como informações de moedas, e outras adições para melhorar a relevância dos resultados da pesquisa.
Um modelo de incorporação é usado para converter os dados de origem em uma série de vetores que representam as palavras nos dados do cliente. As incorporações facilitam o aprendizado de máquina em grandes entradas, como vetores dispersos que representam palavras. As incorporações são armazenadas como passagens (chamadas pedaços) de dados do cliente (pense em subseções ou parágrafos), para facilitar a localização de informações.
As incorporações geradas são armazenadas em um banco de dados de vetores. Qualquer fonte de dados compatível com consultas "difusas" que retornem resultados com base na relevância provável, como por exemplo, o watsonx Discovery, pode ser usada na arquitetura RAG, mas a implementação mais comum usa um banco de dados de vetores, como o Milvus, FAISS ou Chroma.
O sistema agora está pronto para uso pelos usuários finais.
Os usuários finais interagem com uma aplicação habilitada para a IA generativa e inserem uma consulta.
A aplicação de IA generativa recebe a consulta e executa uma pesquisa no banco de dados de vetores para obter as principais (chamamos de k principais) informações que mais se aproximam da consulta do usuário. Por exemplo, se a consulta do usuário for "Qual é o limite diário de saque na conta da MaxSavers", a pesquisa pode retornar passagens como "A conta da MaxSavers é…", "Limites diários de saque são…". e "…limites de contas…".
As principais passagens, juntamente com um prompt selecionado para a aplicação específica, são enviadas ao LLM.
O LLM retorna uma resposta semelhante à humana com base na consulta do usuário, no prompt e nas informações de contexto apresentadas ao usuário final.
O mapeamento do portfólio de produtos watsonx para o padrão RAG é mostrado no diagrama acima.
O watsonx Discovery implementa as funções de pré-processamento, geração de incorporação e armazenamento e recuperação de relevância do padrão. Para certos tipos de soluções, o watsonx Discovery também pode ser usado como o aplicação de IA generativa de front-end para os usuários. Além de simplesmente substituir um banco de dados de vetores, o watsonx Discovery oferece enriquecimentos de NLP prontos para uso, incluindo extração de entidades, análise de sentimentos, emotion analysis, extração de palavras-chave, classificação de categorias, marcação de conceitos e outros.
Para soluções de chat, o watsonx Assistant fornece a interface do usuário e também recursos de conversação, como lembrar o assunto de consultas anteriores. Por exemplo, se um usuário perguntar "Fale-me sobre a Toast-o-matic" e depois "Quanto ela custa?" O watsonx Assistant sabe que "ela" na última consulta se refere à torradeira na primeira.
Por fim, o watsonx.ai oferece uma seleção de grandes modelos de linguagem que os clientes podem escolher em um ambiente de hospedagem na nuvem. Com o watsonx.ai, os clientes podem treinar, validar, ajustar e implementar IA generativa, modelos de base e recursos de aprendizado de máquina com facilidade e criar aplicações de IA em uma fração do tempo com uma fração dos dados.
Alguns clientes não têm o watsonx.ai disponível em sua região local ou podem ter problemas de segurança ou requisitos regulatórios que os impedem de usar o watsonx.ai Solução SaaS. Para esses clientes, oferecemos o watsonx.ai como um conjunto de serviços conteinerizados que podem ser implementados no Red Hat Openshift em execução nos data centers dos clientes ou em uma nuvem privada dentro virtual (VPC) dentro da infraestrutura do serviço de nuvem de um provedor.
A maioria dos LLMs é treinada com texto dominante no idioma inglês, contendo um pequeno percentual de texto em outros idiomas, muitas vezes da Europa Ocidental. Para aplicações que exigem compatibilidade com idiomas localizados ou multilíngues, é possível implementar uma etapa de tradução de pré e pós-consulta para traduzir as entradas para o idioma “base” dos documentos pré-processados, como o inglês, por exemplo, e traduzir as saídas do modelo para o idioma de destino, como por exemplo, espanhol. Essa abordagem é mostrada no diagrama abaixo.
Essa abordagem altera o padrão RAG base da seguinte maneira (deixando de lado as etapas de geração de incorporações):
Um usuário insere uma consulta em um idioma diferente do idioma dominante da documentação pré-processada. Por exemplo, uma consulta em espanhol e uma base de documentação dominante em inglês.
A aplicação de IA generativa solicita que um grande modelo de linguagem traduza a consulta do usuário para o idioma da base de documentação. Em nosso exemplo, do espanhol para o inglês.
A consulta traduzida é usada para recuperar as principais k passagens de informações mais relevantes para a consulta do usuário.
A consulta traduzida e o contexto recuperado são enviados ao LLM para gerar uma resposta.
A aplicação de IA generativa usa novamente um grande modelo de linguagem para traduzir a resposta gerada para o idioma de destino do usuário. No nosso exemplo, do inglês para o espanhol.
A resposta traduzida, em espanhol, é apresentada ao usuário final.
A experiência sugere que, usando essa abordagem, é possível alcançar 80% ou mais de precisão, dependendo do contexto e dos tipos de consultas enviadas, em resultados que não sejam do idioma base. Espera-se que modelos emergentes multilíngues, treinados em percentuais maiores de idiomas diferentes, alcancem uma precisão ainda maior.
A RAG é uma solução candidata para qualquer cenário de negócios em que haja um grande corpo de documentação e business rules que um usuário deve consultar para fornecer respostas confiáveis. É também uma solução sólida para integrar chatbots baseados em LLMs com conhecimento proprietário ou específico do domínio e prevenir alucinações.
Os usos candidatos incluem:
Subscrição de seguros e adjudicação de sinistros. A RAG tem muitas aplicações potenciais no setor de seguros. Subscritores e corretores exigem profundo conhecimento de milhares de páginas de documentação que cobrem os termos e condições de centenas de produtos de seguro. Da mesma forma, os adjudicadores de sinistros podem ser obrigados a ter profundo conhecimento da mesma documentação, bem como contratos com substituições e termos adicionais específicos para clientes individuais. O padrão de arquitetura RAG pode servir como a "espinha dorsal" da arquitetura de soluções para ajudar subscritores, corretores e peritos a consultar a documentação de produtos e contratos para responder melhor às consultas dos clientes e melhorar a produtividade do processo.
Suporte aos agentes da central de atendimento. Os agentes da central de atendimento exigem um profundo conhecimento de centenas de produtos e serviços, bem como de problemas comuns de produtos e sua resolução. O padrão RAG é uma sólida base de arquitetura para criar soluções para auxiliar os agentes a encontrar rapidamente respostas para as solicitações dos clientes.
Chatbots para clientes. A RAG é um forte facilitador para a criação de chatbots voltados para o cliente para responder a perguntas. A combinação dos recursos de linguagem natural dos grandes modelos de linguagem e das respostas específicas para a empresa da RAG pode proporcionar uma experiência de conversação atraente para o cliente. Observe que a RAG, por si só, só oferece recursos de Question and Answer; ela não tem a capacidade de "transacionar", ou seja, interagir com sistemas empresariais para obter informações ou atualizar registros. Outros componentes devem ser adicionados para detectar a intenção do usuário e interagir com os sistemas empresariais.
Suporte/help desk. Assim como os agentes da central de atendimento, as equipes de operações de TI e de suporte exigem conhecimento profundo da configuração de implementações de sistemas complexos, juntamente com o conhecimento de problemas comuns e vistos anteriormente e sua resolução. O padrão RAG é uma base sólida de arquitetura para criar soluções para auxiliar a equipe de suporte a encontrar rapidamente respostas relevantes para problemas relatados e questões observadas.
Decisões e considerações sobre arquitetura
Muitos fatores influem na escolha de um modelo adequado para seu projeto.
A licença do modelo pode restringir a forma como ele pode ser usado. Por exemplo, a licença de um modelo pode impedir que ele seja usado como parte de uma aplicação comercial.
O conjunto de dados usado para treinar o treinamento do modelo tem um impacto direto em seu funcionamento para uma aplicação específica e afeta de forma significativa o risco de que o modelo possa gerar respostas sem sentido, ofensivas ou simplesmente indesejadas. Da mesma forma, modelos treinados em dados protegidos por direitos autorais ou privados podem expor seus usuários a responsabilidade legal. A IBM fornece plena transparência de dados de treinamento e indenização por reivindicações legais decorrentes de seus modelos.
O tamanho do modelo, com quantos parâmetros ele é treinado e o tamanho de sua janela de contexto (o tamanho de uma passagem de texto que o modelo pode aceitar) afetam o desempenho do modelo, os requisitos de recursos e a taxa de transferência. Embora seja tentador seguir a filosofia de "maior é melhor" e escolher um modelo de 20 bilhões de parâmetros, os requisitos de recursos e a melhoria (se houver) na precisão podem não justificar isso. Estudos recentes mostraram que modelos menores podem superar significativamente o desempenho dos maiores para algumas soluções.
Qualquer ajuste fino aplicado a um modelo pode afetar sua adequação a uma tarefa. Por exemplo, a IBM oferece duas versões do modelo Granite: uma ajustada para aplicações gerais de chat e outra ajustada para seguir instruções.
Veja outras considerações ao escolher um modelo incluem:
Seleção de parâmetros do modelo, como por exemplo, a temperatura do modelo, para equilibrar a criação de texto semelhante ao humano e respostas factuais. Definir a temperatura do modelo em um valor alto gerará respostas consistentes, mas pode resultar em respostas pouco interessantes ou excessivamente breves. Por outro lado, definir a temperatura em um valor baixo introduzirá mais variedade nas respostas, mas aumentará a imprevisibilidade no tamanho e no conteúdo das respostas.
Seleção e implementação de proteções do modelo para proteção contra resultados ineficazes ou ofensivos.
A escolha do modelo depende da aplicação, do tipo de dados e dos requisitos de compatibilidade com o idioma. Os modelos de incorporação podem ter que ser estendidos para codificar e pesquisar com precisão termos ou acrônimos específicos do setor ou do cliente.
Os banco de dados de vetores são apenas uma opção para implementar o armazenamento de dados de incorporação. O Watson Discovery fornece ferramentas e funcionalidades adicionais que podem melhorar o desempenho e a precisão de uma solução RAG; e alguns bancos de dados "tradicionais" fornecem armazenamento e pesquisa de vetores e/ou pesquisa de similaridade compatíveis com uma solução RAG.
Há também inúmeras opções para bancos de dados de vetores. Bancos de dados in-memory simples incorporados diretamente a aplicações de IA generativa fornecem excelente desempenho de tempo de execução, mas podem não escalar bem para grandes conjuntos de dados e podem apresentar desafios operacionais significativos para se manterem atualizados, ou para escalar para configurações multiservidores. Outros bancos de dados que usam uma arquitetura de servidor central são mais fáceis de operar e escalar, mas podem não atender às necessidades de desempenho da solução específica.
Há vários métodos disponíveis para integrar o modelo de recuperação e geração. Recuperar as k passagens principais e usá-las para aumentar a consulta do usuário é simples e conveniente, mas pode não ter as nuances necessárias para responder a perguntas complexas. A simples pesquisa por palavra-chave também pode produzir resultados satisfatórios.
Soluções mais complexas podem usar um LLM para gerar múltiplas consultas a partir da consulta original do usuário e usá-las para recuperar um conjunto maior de passagens. Lógica adicional pode ser adicionada para classificar e selecionar melhor as passagens recuperadas com maior relevância.
Pré-processar os dados antes de alimentá-los no sistema RAG é uma etapa importante para garantir que os dados de entrada estejam em um formato adequado para o modelo. Métodos simples envolvem a divisão da entrada em fragmentos de tamanho fixo com sobreposições. Por exemplo, os últimos 10 caracteres de um fragmento são os mesmos 10 primeiros caracteres do próximo, mas isso pode perder nuances nos dados de entrada.
Um pré-processamento mais avançado pode manipular o texto de entrada para remover finais comuns de palavras, por exemplo, stopper, stopping e stopped, tudo se torna stop; remover palavras de "parada" não informativas, como the, as, is e semelhantes; e outras técnicas. Isso pode melhorar substancialmente a relevância das informações recuperadas, mas adiciona complexidade às fases de incorporação de dados e de prompts do usuário.
Técnicas ainda mais avançadas podem operar em sentenças completas, para manter o máximo possível do significado no texto.
Avaliar o desempenho de um sistema RAG pode ser desafiador devido à natureza complexa da tarefa. As métricas de avaliação comuns incluem perplexidade, fluência, relevância e coerência, bem como as métricas BLU e ROUGE. É importante escolher métricas que estejam alinhadas com os objetivos específicos da tarefa e os resultados desejados.
O RAG requer texto simples, e a escolha dos métodos de conversão tem um grande impacto na qualidade de dados. Por exemplo, ao converter arquivos PDF, como são manipuladas tabelas, imagens e outros elementos de metadados?
A geração de uma resposta semelhante à humana a partir de um LLM exige recursos computacionais substanciais e pode levar vários segundos, dependendo do tamanho do modelo, da complexidade da consulta do usuário e da quantidade de informações aumentadas passadas para o modelo. Soluções que precisam atender a grandes grupos de usuários ou exigem tempos de resposta rápidos podem precisar implementar um mecanismo para armazenar em cache as respostas do modelo para consultas frequentes.
Incorporar informações proprietárias, potencialmente confidenciais e potencialmente de identificação pessoal nos prompts do LLM é fundamental e necessário para o padrão RAG. As organizações que usam plataformas de modelos hospedados devem estar cientes das políticas do provedor, como a retenção de dados do prompt e as políticas de uso (por exemplo, o provedor captura os dados do prompt e os usa para o retreinamento do modelo?), controles para evitar que os dados do prompt "vazem" para outros usuários etc; e equilibrar tudo isso com suas próprias políticas e controles de segurança da informação.
Embora a transmissão de algumas informações proprietárias seja inevitável, as organizações podem limitar sua exposição ao incluir apenas referências de documentos ou URLs às informações mais confidenciais dos dados processados. Por exemplo, em vez de incorporar uma tabela de descontos de preços nos dados RAG, inclua apenas uma descrição da tabela e uma referência ou link para um documento interno ou site no conteúdo.
A segurança de nível de transporte (TLS) simples em comunicações entre zonas pode ser suficiente para satisfazer os requisitos de segurança de dados, mas os arquitetos podem precisar considerar oferecer proteção extra ao adicionar componentes para criptografar e descriptografar prompts e respostas antes de passá-las para o limite da zona.
O tipo de conexão entre as zonas de implementação tem impactos em vários requisitos não funcionais. O uso de uma conexão de rede privada virtual (VPN) pela internet pública é uma opção de baixo custo, mas pode não aliviar totalmente as preocupações com a segurança e pode não ser capaz de atender aos requisitos de tempo de resposta ou taxa de transferência da solução. Uma conexão de rede privada com o ambiente de hospedagem de modelos tem um custo muito mais alto, mas oferece uma segurança significativamente melhor e proporciona aos arquitetos a capacidade de controlar a latência e a largura de banda da rede.