Geração Aumentada por Cache (CAG)
A Geração Aumentada por Cache (CAG) aumenta a eficiência de grandes modelos de linguagem ao pré-carregar conhecimento estático, reduzindo a latência e simplificando a arquitetura para tarefas estáticas e de baixa latência.
O que é a Geração Aumentada por Cache (CAG)?
A Geração Aumentada por Cache (CAG) é uma abordagem inovadora para aprimorar o desempenho e a eficiência de grandes modelos de linguagem (LLMs) aproveitando o conhecimento pré-carregado na forma de caches de chave-valor (KV) pré-computadas.
Diferente da Geração Aumentada por Recuperação (RAG), que recupera dinamicamente conhecimento externo durante a inferência, o CAG elimina etapas de recuperação ao incorporar todo o conhecimento relevante diretamente na janela de contexto estendida do modelo antes da inferência. Essa estratégia de pré-carregamento permite que os LLMs gerem respostas usando as informações pré-computadas, reduzindo significativamente a latência e simplificando a arquitetura do sistema.
Ao armazenar o conhecimento processado em um cache de chave-valor, o CAG garante que o modelo tenha acesso imediato ao contexto necessário para responder a consultas. Essa abordagem é especialmente vantajosa em cenários onde a base de conhecimento é estática, relativamente pequena ou quando a baixa latência é uma prioridade.
Como o CAG Funciona?
O CAG opera em três fases principais:
1. Pré-carregamento de Conhecimento Externo
Todos os documentos ou conjuntos de dados relevantes são pré-carregados na janela de contexto do modelo antes da inferência.
O conteúdo pré-carregado é processado em um cache de chave-valor (KV), capturando a representação interna do conhecimento pelo modelo. Por exemplo:
def preprocess_knowledge(model, tokenizer, prompt): input_ids = tokenizer.encode(prompt, return_tensors="pt").to(model.device) past_key_values = DynamicCache() outputs = model(input_ids=input_ids, past_key_values=past_key_values, use_cache=True) return outputs.past_key_values
Essa etapa garante que o modelo tenha acesso imediato ao conhecimento pré-processado, dispensando a necessidade de recuperação em tempo real.
2. Inferência com Cache Pré-computado
Quando uma consulta é feita, o cache KV pré-computado é combinado com a entrada da consulta.
O modelo gera uma resposta baseada exclusivamente no conhecimento armazenado no cache e na consulta, evitando cálculos adicionais para recuperação de conhecimento. Por exemplo:
def generate_response(model, query, kv_cache): input_ids = tokenizer.encode(query, return_tensors="pt").to(model.device) output_ids = model(input_ids=input_ids, past_key_values=kv_cache, use_cache=True) return tokenizer.decode(output_ids)
3. Gestão de Cache
À medida que novas consultas são processadas, o cache cresce. Um mecanismo de redefinição trunca o cache de volta ao seu comprimento original para manter o desempenho e garantir que as consultas subsequentes sejam avaliadas dentro do contexto pretendido. Exemplo de redefinição de cache:
def clean_up(kv_cache, original_length): for i in range(len(kv_cache.key_cache)): kv_cache.key_cache[i] = kv_cache.key_cache[i][:, :, :original_length, :] kv_cache.value_cache[i] = kv_cache.value_cache[i][:, :, :original_length, :]
Principais Vantagens do CAG
Baixa Latência
Como não há necessidade de recuperação em tempo real, o CAG oferece tempos de resposta mais rápidos em comparação ao RAG. Isso o torna ideal para aplicações sensíveis ao tempo.Maior Precisão
Ao pré-carregar todos os documentos relevantes, o CAG garante que o modelo processe um conjunto de dados abrangente, reduzindo o risco de lacunas de contexto ou erros de recuperação.Arquitetura Simplificada
Diferente do RAG, que requer um pipeline de recuperação complexo, a arquitetura do CAG é enxuta, reduzindo a complexidade e a manutenção do sistema.Eficiência em Escala
Uma vez que o conhecimento é pré-carregado e armazenado em cache, as consultas subsequentes são processadas com sobrecarga computacional mínima, tornando o CAG eficiente para consultas repetidas dentro do mesmo domínio de conhecimento.
Limitações do CAG
Tamanho da Janela de Contexto
O CAG depende da janela de contexto do modelo para pré-carregar o conhecimento. Os LLMs atuais suportam janelas de contexto de até 128.000 tokens, o que limita a quantidade de conhecimento que pode ser pré-carregada.Tamanho da Base de Conhecimento
O CAG é mais indicado para bases de conhecimento estáticas e gerenciáveis. Para conjuntos de dados grandes ou dinâmicos, o modelo pode ter dificuldades para acomodar todas as informações relevantes na janela de contexto.Conhecimento Estático
O CAG assume que a base de conhecimento permanece inalterada durante a inferência. Ele é menos eficaz para casos de uso que exigem atualizações em tempo real ou integração dinâmica de conhecimento.Implicações de Custo
Janelas de contexto grandes aumentam os custos computacionais durante o pré-carregamento, tornando o CAG menos econômico para cenários que envolvem atualizações ou mudanças frequentes na base de conhecimento.
Como o CAG é Utilizado?
Aplicações Práticas
O CAG é comumente aplicado em cenários onde a base de conhecimento é estática, gerenciável em tamanho e a baixa latência é crítica:
Chatbots de Suporte ao Cliente
Exemplo: Pré-carregar etapas comuns de solução de problemas para produtos de software, fornecendo respostas instantâneas aos usuários.
Benefício: Elimina erros de recuperação e acelera os tempos de resposta.Análise de Documentos
Exemplo: Instituições financeiras analisando relatórios trimestrais ou escritórios jurídicos consultando documentos regulatórios.
Benefício: Garante respostas consistentes e precisas ao pré-carregar todos os documentos relevantes no modelo.Assistentes de Saúde
Exemplo: Pré-carregar diretrizes médicas para auxiliar em consultas de pacientes.
Benefício: Mantém continuidade em diálogos de múltiplas interações e garante referências precisas.Educação e Treinamento
Exemplo: Responder perguntas frequentes em programas de treinamento corporativo.
Benefício: Simplifica a implantação e garante respostas consistentes.
Comparações com a Geração Aumentada por Recuperação (RAG)
Recurso | CAG | RAG |
---|---|---|
Manipulação de Conhecimento | Pré-carrega conhecimento na janela de contexto. | Recupera dinamicamente o conhecimento em tempo de execução. |
Complexidade do Sistema | Simplificado, não requer pipeline de recuperação. | Requer componentes adicionais para recuperação. |
Latência | Baixa, pois as etapas de recuperação são eliminadas. | Maior devido aos processos de recuperação em tempo real. |
Escalabilidade | Limitado pelo tamanho da janela de contexto. | Escala bem com conjuntos de dados grandes e dinâmicos. |
Riscos de Erro | Sem erros de recuperação. | Vulnerável a erros de recuperação e ranqueamento. |
Melhores Casos de Uso | Tarefas estáticas e de baixa latência. | Tarefas dinâmicas, grandes ou frequentemente atualizadas. |
Exemplos de Casos de Uso
CAG na Prática
Sistemas de RH
Uma empresa utiliza o CAG para pré-carregar as políticas de funcionários no modelo. Os colaboradores podem consultar o sistema sobre diretrizes específicas e obter respostas instantâneas.Assistência Jurídica
Um assistente jurídico pré-carrega leis relevantes no contexto do modelo para fornecer respostas rápidas a consultas legais sem usar um sistema de recuperação.Atendimento ao Cliente
O chatbot de um produto SaaS usa o CAG para pré-carregar FAQs e guias de solução de problemas, garantindo interações rápidas e fluidas com os clientes.
RAG para Cenários Dinâmicos
Agregação de Notícias
Um aplicativo de notícias usa o RAG para buscar e resumir os artigos mais recentes, recuperando dinamicamente as informações mais relevantes para as consultas dos usuários.Busca em E-commerce
O RAG é utilizado para recuperar detalhes de produtos e disponibilidade de um catálogo grande e frequentemente atualizado.Plataformas de Pesquisa
Uma plataforma de pesquisa científica emprega o RAG para buscar artigos e estudos relevantes em grandes bases de dados externas.
Exemplo de Implementação: Pré-carregando Conhecimento em Python
O trecho de código Python a seguir demonstra como pré-carregar conhecimento em um modelo para CAG:
def preprocess_knowledge(model, tokenizer, prompt):
input_ids = tokenizer.encode(prompt, return_tensors="pt").to(model.device)
past_key_values = DynamicCache()
outputs = model(input_ids=input_ids, past_key_values=past_key_values, use_cache=True)
return outputs.past_key_values
Esse mecanismo de pré-carregamento garante que o modelo processe consultas sem necessidade de recuperação externa, permitindo desempenho eficiente e de baixa latência.
Quando Usar o CAG
Bases de Conhecimento Estáticas
Ideal para casos em que a base de conhecimento dificilmente mudará com frequência.Aplicações de Baixa Latência
Adequado para sistemas de suporte ao cliente, educação ou saúde, onde respostas rápidas são necessárias.Cenários Econômicos
Benéfico quando o conhecimento pré-carregado permanece consistente em múltiplas consultas, reduzindo a sobrecarga computacional.
O CAG é uma alternativa eficiente ao RAG para tarefas que exigem velocidade, simplicidade e consistência. No entanto, é limitado pelo tamanho e natureza estática da base de conhecimento.
Pesquisas sobre Geração Aumentada por Cache (CAG)
1. Adaptive Contextual Caching for Mobile Edge Large Language Model Service
Autores: Guangyuan Liu, Yinqiu Liu, Jiacheng Wang, Hongyang Du, Dusit Niyato, Jiawen Kang, Zehui Xiong
Este artigo aborda os desafios enfrentados em implantações de grandes modelos de linguagem (LLM) na borda móvel, como recursos computacionais limitados e alta latência de recuperação. Ele propõe uma estrutura de Cache Contextual Adaptativo (ACC), que utiliza aprendizado por reforço profundo (DRL) para otimizar políticas de substituição de cache considerando o contexto do usuário, similaridade de documentos e sobrecarga de cache perdido. Os resultados experimentais mostram que o ACC atinge mais de 80% de acertos em cache após 11 episódios de treinamento, reduzindo significativamente a latência de recuperação em até 40% em comparação com métodos tradicionais. Além disso, minimiza a sobrecarga local de cache em até 55%, tornando-o adequado para serviços de LLM escaláveis e com baixa latência em ambientes com recursos restritos. O trabalho destaca o potencial do ACC para aumentar a eficiência em sistemas LLM de borda.
Leia o artigo aqui
2. Towards More Economical Context-Augmented LLM Generation by Reusing Stored KV Cache
Autores: Hanchen Li, Yuhan Liu, Yihua Cheng, Kuntai Du, Junchen Jiang
Este estudo explora o reaproveitamento de caches de Chave-Valor (KV) para reduzir atrasos de preenchimento em aplicações de LLM, especialmente para textos de entrada repetidos. Ele investiga se esse reaproveitamento de cache também pode ser economicamente viável ao utilizar serviços de nuvem pública para armazenamento e processamento. Os autores propõem um modelo analítico validado para avaliar os custos em nuvem (computação, armazenamento e rede) de armazenar e reutilizar caches KV em diferentes parâmetros de carga de trabalho. O estudo demonstra que a reutilização de cache KV economiza tempo e custos em nuvem para cargas de trabalho com contextos longos, incentivando novos esforços na construção de sistemas LLM mais econômicos com contexto aumentado.
Leia o artigo aqui
3. MPIC: Position-Independent Multimodal Context Caching System for Efficient MLLM Serving
Autores: Shiju Zhao, Junhao Hu, Rongxiao Huang, Jiaqi Zheng, Guihai Chen
Este artigo apresenta o MPIC, um sistema de cache de contexto multimodal independente de posição, visando solucionar ineficiências na inferência de grandes modelos de linguagem multimodais (MLLM). Sistemas tradicionais recomputam todo o cache KV mesmo para pequenas diferenças no contexto, levando a ineficiências. O MPIC oferece um sistema de cache independente de posição que armazena caches KV local ou remotamente e paraleliza o cálculo e o carregamento do cache durante a inferência. Mecanismos integrados de reutilização e recomputação mitigam a degradação de precisão, ao mesmo tempo em que alcançam até 54% de redução no tempo de resposta em relação a métodos existentes. Este trabalho destaca o potencial para maior eficiência em sistemas de atendimento de LLMs multimodais.
Leia o artigo aqui
Perguntas frequentes
- O que é a Geração Aumentada por Cache (CAG)?
A Geração Aumentada por Cache (CAG) é um método que aprimora o desempenho de grandes modelos de linguagem (LLM) ao pré-carregar conhecimento estático em um cache de chave-valor (KV) pré-computado. Diferente da Geração Aumentada por Recuperação (RAG), que recupera conhecimento externo em tempo de execução, o CAG incorpora todas as informações relevantes antecipadamente, reduzindo a latência e simplificando a arquitetura do sistema de IA.
- Como o CAG difere do RAG?
O CAG pré-carrega todo o conhecimento necessário na janela de contexto do modelo antes da inferência e elimina a necessidade de recuperação em tempo real, garantindo baixa latência. O RAG, por outro lado, recupera informações relevantes dinamicamente durante a execução, o que pode introduzir erros de recuperação e maior latência, mas é mais adequado para bases de conhecimento dinâmicas ou frequentemente atualizadas.
- Quais são as vantagens de usar o CAG?
As principais vantagens do CAG incluem baixa latência, maior precisão devido ao pré-carregamento abrangente, arquitetura de sistema simplificada e eficiência para consultas repetidas dentro de domínios de conhecimento estáticos.
- Quais são as limitações do CAG?
O CAG é limitado pelo tamanho máximo da janela de contexto do modelo (atualmente até 128.000 tokens), é mais indicado para bases de conhecimento estáticas e gerenciáveis, e é menos eficaz para conjuntos de dados dinâmicos ou cenários que exigem atualizações frequentes. Janelas de contexto grandes também podem aumentar os custos computacionais durante o pré-carregamento.
- Onde o CAG é mais útil?
O CAG é ideal para aplicações estáticas e de baixa latência, como chatbots de suporte ao cliente, análise de documentos, assistentes de saúde, FAQs educacionais, consultas sobre políticas de RH e assistentes jurídicos—em qualquer lugar em que a base de conhecimento muda raramente e respostas instantâneas são necessárias.
Comece a Construir Fluxos de Trabalho de IA Eficientes
Experimente o poder do CAG e outras ferramentas de IA com o FlowHunt. Agende uma demonstração para ver como soluções com cache e baixa latência podem transformar o seu negócio.