Criando aplicativos de LLM com respostas 100x mais rápidas e redução drástica de custos usando GPTCache
Este artigo foi originalmente publicado no ODBMS e é republicado aqui com permissão.
O mágico ChatGPT e outros grandes modelos de linguagem (LLMs) surpreenderam quase todos com sua capacidade de entender linguagem natural e responder a perguntas complicadas. Como resultado, cada vez mais desenvolvedores estão aproveitando os LLMs para criar aplicações inteligentes. No entanto, à medida que sua aplicação de LLM ganha popularidade e experimenta um aumento no tráfego, o custo das chamadas à API de LLM aumentará significativamente. A alta latência de resposta também será frustrante, especialmente durante os horários de pico dos LLMs, afetando diretamente a experiência do usuário.
Neste post, apresentarei uma solução prática para os desafios que prejudicam a eficiência e a velocidade das aplicações de LLM: GPTCache. Este cache semântico de código aberto pode ajudá-lo a alcançar velocidades de recuperação pelo menos 100 vezes mais rápidas e reduzir seus custos de uso de serviços de LLM a zero quando o cache é atingido.
Principais desafios na criação de aplicações baseadas em LLM
Antes de nos aprofundarmos no GPTCache, vamos primeiro discutir dois desafios principais ao criar uma aplicação inteligente baseada em LLMs.
Custos crescentes com chamadas de API desnecessárias
As aplicações podem aproveitar os poderosos recursos de inferência dos LLMs chamando a API dos LLMs. No entanto, chamar a API não é gratuito. Se sua aplicação for para produção e tiver uma grande base de usuários, chamadas frequentes à API podem custar uma fortuna. Além disso, você pode acabar pagando por chamadas de API desnecessárias para perguntas semanticamente idênticas que o LLM já respondeu, desperdiçando seu dinheiro e recursos.
Baixo desempenho e escalabilidade com alta latência de resposta
Grandes modelos de linguagem geralmente lidam com cargas de trabalho impressionantes. Tome o ChatGPT como exemplo. Em julho de 2023, ele tinha mais de 100 milhões de usuários ativos e recebeu aproximadamente um bilhão de visitas somente em junho. Devido a cargas de trabalho tão altas, os LLMs tornam suas respostas mais lentas, especialmente durante os horários de pico, fazendo com que as aplicações que dependem deles também desacelerem.
Além disso, os serviços de LLM impõem limites de taxa, restringindo o número de chamadas de API que suas aplicações podem fazer ao servidor dentro de um determinado período. Atingir um limite de taxa significa que solicitações adicionais serão bloqueadas até que um certo período tenha decorrido, levando a uma interrupção do serviço. Esse gargalo pode afetar diretamente a experiência do usuário e limitar o número de solicitações que sua aplicação pode processar.
O que é GPTCache?
GPTCache é um cache semântico de código aberto projetado para melhorar a eficiência e a velocidade de aplicações baseadas em GPT, armazenando e recuperando as respostas geradas por modelos de linguagem. O GPTCache permite que os usuários personalizem o cache de acordo com seus requisitos específicos, oferecendo uma variedade de opções para embeddings, avaliação de similaridade, local de armazenamento e políticas de expulsão. Além disso, o GPTCache oferece suporte tanto à interface OpenAI ChatGPT quanto à interface Langchain, com planos de oferecer suporte a mais interfaces nos próximos meses.
Como o GPTCache funciona?
Simplificando, o GPTCache armazena as respostas dos LLMs no cache. Portanto, quando os usuários fazem consultas semelhantes às quais os LLMs responderam anteriormente, o GPTCache pesquisa e retorna os resultados aos usuários sem a necessidade de chamar o LLM novamente. Diferentemente dos sistemas de cache tradicionais, como o Redis, o GPTCache emprega cache semântico, que armazena e recupera dados por meio de embeddings. Ele utiliza algoritmos de embedding para transformar as consultas dos usuários e as respostas dos LLMs em embeddings e realiza buscas por similaridade nesses embeddings usando um armazenamento vetorial como o Milvus.
O GPTCache compreende seis módulos principais: Adaptador de LLM, Pré-processador (Gerenciador de Contexto), Gerador de Embeddings, Gerenciador de Cache, Avaliador de Similaridade e Pós-processador.
Adaptador LLM
O adaptador LLM serve como a interface do GPTCache para interação externa. Ele converte consultas em protocolos de cache, controla o fluxo de trabalho de cache e transforma resultados de cache em respostas de LLM. Com o adaptador LLM, experimentar e testar vários modelos de linguagem torna-se mais simples, pois você pode alternar entre eles sem reescrever seu código ou aprender uma nova API.
O GPTCache já oferece suporte à API OpenAI ChatGPT, API LangChain, API MiniGPT4 e API Llamacpp. Nosso roteiro inclui a adição de mais APIs, como Hugging Face Hub, Bard e Anthropic.
Pré-processador
O Pré-processador gerencia, analisa e formata as consultas enviadas aos LLMs, incluindo a remoção de informações redundantes das entradas, a compressão de informações de entrada, o corte de textos longos e a execução de outras tarefas relacionadas.
Gerador de Embeddings
O Gerador de Embeddings converte consultas de usuários em vetores de embedding usando seus modelos de embedding preferidos. O GPTCache oferece suporte a modelos locais do HuggingFace e GitHub e a serviços de embedding em nuvem para gerar embeddings. Isso inclui a API de embedding da OpenAI, ONNX com o modelo GPTCache/paraphrase-albert-onnx, API de embedding da Hugging Face, API de embedding da Cohere, API de embedding da fastText e a API de embedding da SentenceTransformers, além de modelos Timm para embeddings de imagem.
Gerenciador de Cache
O Gerenciador de Cache é o módulo central do GPTCache. Ele armazena as solicitações dos usuários e as respostas dos LLMs e consiste em três componentes:
Um armazenamento vetorial para armazenamento de vetores de embedding e buscas por similaridade
Um armazenamento de cache para armazenar solicitações de usuários e respostas correspondentes dos LLMs
Uma política de expulsão para controlar a capacidade do cache de acordo com a política de expulsão Menos Recentemente Usado (LRU) ou Primeiro a Entrar, Primeiro a Sair (FIFO).
Atualmente, o GPTCache oferece suporte a SQLite, PostgreSQL, MySQL, MariaDB, SQL Server e Oracle para armazenamento de cache, e Milvus, Zilliz Cloud e Weaviate para armazenamento e recuperação vetorial. Os usuários podem escolher seu armazenamento vetorial, armazenamento de cache e política de expulsão preferidos para atender às suas necessidades, equilibrando desempenho, escalabilidade e custos.
Avaliador de Similaridade
O Avaliador de Similaridade determina se a resposta em cache corresponde à consulta de entrada. O GPTCache oferece uma interface padronizada que combina várias estratégias de similaridade, permitindo que os usuários personalizem correspondências de cache de acordo com suas necessidades e casos de uso específicos.
Pós-processador
O Pós-processador prepara a resposta final a ser retornada ao usuário quando há acerto no cache. Se a resposta não estiver no cache, o Adaptador LLM solicita respostas do LLM e as grava de volta no Gerenciador de Cache.
Benefícios do GPTCache
Redução drástica de custos em chamadas de API de LLM
Os LLMs cobram por cada chamada de API. O GPTCache ajuda desenvolvedores a armazenar em cache semanticamente respostas de LLM para perguntas semelhantes e feitas repetidamente, reduzindo os custos de API a zero se houver acerto no cache. O GPTCache reduz o número geral de chamadas de API, reduzindo drasticamente os custos. É particularmente benéfico para aplicações com tráfego extremamente alto.
Respostas 100x mais rápidas
O GPTCache pode reduzir significativamente o tempo de resposta para aplicações de LLM. Durante os horários de pico do ChatGPT, as respostas podem levar até vários segundos. No entanto, com o GPTCache, as aplicações podem recuperar respostas solicitadas anteriormente em menos de 100 milissegundos, o que é pelo menos 100 vezes mais rápido.
Escalabilidade aprimorada
Armazenar em cache respostas de LLM reduz a carga no serviço de LLM, melhorando a escalabilidade do seu aplicativo e evitando gargalos ao lidar com solicitações crescentes.
Melhor disponibilidade
Os serviços de LLM frequentemente definem limites de taxa, restringindo as vezes em que seu app pode acessar o servidor dentro de um período específico. O GPTCache reduz o número geral de chamadas de API e permite que seu app escale rapidamente para lidar com um volume crescente de consultas. Essa abordagem garante desempenho consistente à medida que a base de usuários da sua aplicação cresce.
Para mais detalhes sobre como você pode se beneficiar do GPTCache, consulte a página O que é GPTCache.
OSS Chat, um chatbot de IA que utiliza GPTCache e a stack CVP
O GPTCache é benéfico para Retrieval-Augmented Generation (RAG), em que as aplicações implementam uma stack CVP (ChatGPT/LLMs+banco de dados vetorial+prompt as code) para resultados mais precisos. OSS Chat, um chatbot de IA que pode responder a perguntas sobre projetos do GitHub, é o melhor exemplo que ilustra como o GPTCache e a stack CVP funcionam no cenário de RAG.
Arquitetura do OSS Chat
O OSS Chat utiliza Towhee, um pipeline de machine learning, para transformar informações e páginas de documentação relacionadas de projetos do GitHub em embeddings. Em seguida, ele armazena os embeddings no Zilliz Cloud, um serviço de banco de dados vetorial totalmente gerenciado. Quando um usuário faz uma pergunta por meio do OSS Chat, o Zilliz Cloud busca os k principais resultados mais relevantes para essa consulta. Esses resultados são então combinados com a pergunta original para criar um prompt com um contexto mais amplo.
Antes de enviar o prompt ao ChatGPT, o Zilliz Cloud primeiro verifica se há respostas no GPTCache; se houver acerto no cache, o GPTCache retorna a resposta diretamente ao usuário. Se não houver acerto no cache, o GPTCache envia o prompt original ao ChatGPT para obter respostas e o armazena novamente no cache para uso futuro. O GPTCache permite que o OSS Chat ofereça uma excelente experiência ao usuário com custos menores, menor latência de resposta e menos esforços de desenvolvimento.
Resumo
Construir aplicações baseadas em LLMs é uma tendência crescente que beneficia todos no ecossistema. No entanto, os desenvolvedores de apps enfrentam dois desafios principais: o alto custo das chamadas de API e a alta latência de resposta. O GPTCache é uma solução open-source perfeita que aborda esses desafios e oferece muitos outros benefícios, incluindo latência de rede reduzida, disponibilidade aprimorada e melhor escalabilidade.
Para um tutorial prático sobre como começar com o GPTCache, consulte a documentação do GPTCache. Você pode fazer perguntas ou compartilhar suas ideias durante nosso Community Office Hours. Você também é bem-vindo para contribuir com o GPTCache.
Continue lendo

Zilliz Cloud Launches in AWS Australia, Expanding Global Reach to Australia and Neighboring Markets
We're thrilled to announce that Zilliz Cloud is now available in the AWS Sydney, Australia region (ap-southeast-2).

Zilliz Cloud Introduces Advanced BYOC-I Solution for Ultimate Enterprise Data Sovereignty
Explore Zilliz Cloud BYOC-I, the solution that balances AI innovation with data control, enabling secure deployments in finance, healthcare, and education sectors.

Vector Databases vs. Graph Databases
Use a vector database for AI-powered similarity search; use a graph database for complex relationship-based queries and network analysis.



