Armazenamento em cache de consultas a LLM para melhorias de desempenho e custo

Apr 11, 20235 min read

O que é GPTCache? Você está procurando melhorar o desempenho da sua aplicação de modelo de linguagem grande (LLM) enquanto reduz despesas? Não procure mais do que um cache semântico para armazenar respostas de LLM. O cache de respostas de LLM pode reduzir significativamente o tempo necessário para recuperar dados, reduzir despesas com chamadas de API e melhorar a escalabilidade. Além disso, ao personalizar o cache e monitorar seu desempenho, você pode otimizá-lo para torná-lo mais eficiente. Neste blog, apresentaremos o GPTCache, um cache semântico de código aberto para armazenar respostas de LLM, e forneceremos dicas sobre como implementá-lo para obter os melhores resultados. Continue lendo para saber mais sobre como o cache de consultas LLM pode ajudar você a alcançar melhor desempenho e economia de custos.

Por que usar um cache semântico para armazenar LLMs?

Construir um cache semântico para armazenar respostas de LLM (Large Language Model) pode trazer vários benefícios, como:

  • Desempenho aprimorado: Armazenar respostas de LLM em um cache pode reduzir significativamente o tempo necessário para recuperar a resposta, especialmente quando ela foi solicitada anteriormente e já está presente no cache. Armazenar respostas em um cache pode melhorar o desempenho geral da sua aplicação.
  • Despesas reduzidas: A maioria dos serviços de LLM cobra taxas com base em uma combinação do número de solicitações e da contagem de tokens. O cache de respostas de LLM pode reduzir o número de chamadas de API feitas ao serviço, traduzindo-se em economia de custos. O cache é particularmente relevante ao lidar com altos níveis de tráfego, onde as despesas com chamadas de API podem ser substanciais.
  • Melhor escalabilidade: O cache de respostas de LLM pode melhorar a escalabilidade da sua aplicação ao reduzir a carga sobre o serviço de LLM. O cache ajuda a evitar gargalos e garante que a aplicação possa lidar com um número crescente de solicitações.
  • Personalização: Um cache semântico pode ser personalizado para armazenar respostas com base em requisitos específicos, como o tipo de entrada, o formato de saída ou o comprimento da resposta. Isso pode ajudar a otimizar o cache e torná-lo mais eficiente.
  • Redução da latência de rede: Um cache semântico localizado mais perto do usuário, reduzindo o tempo necessário para recuperar dados do serviço de LLM. Ao reduzir a latência de rede, você pode melhorar a experiência geral do usuário.

Construir um cache semântico para armazenar respostas de LLM pode trazer vários benefícios, incluindo desempenho aprimorado, despesas reduzidas, melhor escalabilidade, personalização e latência de rede reduzida.

O que é GPTCache?

Ao criar a aplicação de demonstração do ChatGPT, OSS Chat, vimos que ela começou a degradar em desempenho e aumentar as taxas de serviço quanto mais a testávamos. Isso nos fez perceber que precisávamos de um mecanismo de cache para ajudar a combater a degradação do desempenho e o aumento dos custos. Quando começamos a criar essa camada de cache, percebemos que isso poderia ser útil para a comunidade, então decidimos torná-la de código aberto como GPTCache.

GPTCache é uma ferramenta de código aberto projetada para melhorar a eficiência e a velocidade de aplicações baseadas em GPT, implementando um cache para armazenar as respostas geradas por modelos de linguagem. GPTCache permite que os usuários personalizem o cache de acordo com suas necessidades, incluindo opções para funções de incorporação, funções de avaliação de similaridade, local de armazenamento e remoção. Além disso, GPTCache atualmente oferece suporte à interface OpenAI ChatGPT e à interface LangChain.

Embeddings suportados

GPTCache também oferece uma variedade de opções para extrair embeddings de solicitações para busca por similaridade. Além disso, a ferramenta oferece uma interface genérica que oferece suporte a várias APIs de embeddings, permitindo que os usuários escolham aquela que melhor se adapta às suas necessidades. A lista de APIs de embeddings suportadas inclui:

  • API de embeddings da OpenAI
  • ONNX com o modelo GPTCache/paraphrase-albert-onnx
  • API de embeddings da Hugging Face
  • API de embeddings da Cohere
  • API de embeddings fastText
  • API de embeddings SentenceTransformers

Essas opções oferecem aos usuários uma variedade de escolhas para funções de embeddings, que podem afetar a precisão e a eficiência da funcionalidade de busca por similaridade no GPTCache. O GPTCache visa oferecer flexibilidade e atender a uma gama mais ampla de casos de uso ao oferecer suporte a múltiplas APIs.

Armazenamento de Cache

O GPTCache oferece suporte ao armazenamento de respostas em cache em uma variedade de sistemas de gerenciamento de banco de dados. A ferramenta oferece suporte a vários bancos de dados populares, incluindo:

  • SQLite
  • PostgreSQL
  • MySQL
  • MariaDB
  • SQL Server
  • Oracle

Oferecer suporte a bancos de dados populares significa que os usuários podem escolher o banco de dados que melhor atende às suas necessidades, dependendo de desempenho, escalabilidade e custo. Além disso, o GPTCache oferece uma interface universalmente acessível para estender o módulo, permitindo que os usuários adicionem suporte a diferentes sistemas de banco de dados, se necessário.

Opções de Vector Store

O GPTCache oferece suporte a um módulo Vector Store, que ajuda a encontrar as K solicitações mais semelhantes com base nos embeddings extraídos da solicitação de entrada. Essa funcionalidade pode ajudar a avaliar a similaridade entre solicitações. O GPTCache fornece uma interface amigável que oferece suporte a vários vector stores, incluindo Milvus, Zilliz Cloud e FAISS.

Essas opções oferecem aos usuários uma variedade de escolhas para vector stores, que podem afetar a eficiência e a precisão da funcionalidade de busca por similaridade no GPTCache. O GPTCache visa oferecer flexibilidade e atender a uma gama mais ampla de casos de uso ao oferecer suporte a múltiplos vector stores. Também planejamos oferecer suporte a outros bancos de dados vetoriais no curto prazo.

Gerenciamento da Política de Remoção

O Cache Manager no GPTCache controla as operações dos módulos Cache Storage e Vector Store. Quando o cache fica cheio, uma política de substituição determina quais dados remover para abrir espaço para novos dados. Atualmente, o GPTCache oferece suporte a duas opções básicas:

  • Política de remoção LRU (Least Recently Used)
  • Política de remoção FIFO (First In, First Out)

Ambas são políticas de remoção padrão usadas em sistemas de cache.

Avaliador de Similaridade

O módulo Similarity Evaluator no GPTCache coleta dados do Cache Storage e do Vector Store. Ele usa várias estratégias para determinar a similaridade entre a solicitação de entrada e as solicitações do Vector Store. A similaridade determina se uma solicitação corresponde ao cache. O GPTCache fornece uma interface padronizada para integrar várias estratégias de similaridade e uma coleção de implementações. Essas diferentes estratégias de similaridade permitem que o GPTCache ofereça flexibilidade na determinação de correspondências de cache com base em outros casos de uso e necessidades.

Em Resumo

O GPTCache é um projeto destinado a otimizar o uso de modelos de linguagem em aplicações baseadas em GPT, reduzindo a necessidade de gerar respostas repetidamente do zero e, em vez disso, utilizando uma resposta em cache quando aplicável. O GPTCache é um projeto de código aberto, então confira você mesmo. Adoraríamos ouvir seu feedback, ou você pode até ajudar a contribuir para o projeto!

Saiba Mais

- O que é o GPTCache?

Atualizado em Jul 09, 2026