Recuperação Aumentada Melhora LLMs em Tarefas de Contexto Longo

Recuperação Aumentada Melhora LLMs em Tarefas de Contexto Longo

Principais Destaques

  • Lidando com Contextos Longos em LLMs: Explora os desafios e técnicas para gerenciar sequências mais longas que os comprimentos de contexto tradicionais, crucial para tarefas como sumarização de múltiplos documentos e resposta a perguntas complexas.
  • Vantagens da Recuperação Aumentada: Destaca os benefícios da recuperação aumentada em permitir que LLMs processem contextos arbitrariamente longos de forma eficiente, focando apenas em informações relevantes recuperadas de fontes externas.
  • Aplicações do Mundo Real: Examina casos de uso práticos onde a recuperação aumentada melhora o desempenho de LLMs, como resposta a perguntas em domínio aberto, sumarização de múltiplos documentos e sistemas de diálogo.
  • Diretrizes de Integração com API LLM: Fornece passos práticos e diretrizes para integrar recuperação aumentada com API LLM.

Introdução

Você já se perguntou como os modelos de linguagem lidam com grandes quantidades de informação em tarefas como resumir documentos extensos? O que acontece quando a recuperação encontra modelos de linguagem de grande porte com contexto longo?

Neste blog, referenciando o artigo “Retrieval Meets Long Context Large Language Models”, exploramos os desafios de lidar com contextos longos em LLMs, discutimos soluções inovadoras como a recuperação aumentada, abordamos suas aplicações e fornecemos um guia para integrar recuperação aumentada com a API LLM.

Compreendendo Contexto Longo em LLMs

Definição

Contexto longo em modelos de linguagem refere-se à capacidade de lidar com sequências de entrada significativamente mais longas do que os comprimentos de contexto típicos usados durante o pré-treinamento. Muitos modelos de linguagem amplamente utilizados, como GPT-2 e GPT-3, foram pré-treinados em sequências de até 1024 ou 2048 tokens. No entanto, muitas tarefas do mundo real, como responder perguntas sobre documentos longos ou sumarizar múltiplos documentos, exigem compreensão e raciocínio sobre contextos muito mais longos, variando de milhares a dezenas de milhares de tokens.

Desafios

Lidar eficientemente com contextos longos em modelos de linguagem apresenta desafios significativos devido às complexidades quadráticas de tempo e memória do mecanismo de autoatenção usado em modelos baseados em Transformer. À medida que o comprimento da sequência de entrada aumenta, os requisitos de computação e memória para a autoatenção crescem quadraticamente, tornando inviável processar sequências muito longas com atenção exata.

Importância

Muitas aplicações do mundo real, como sumarização de documentos, resposta a perguntas sobre grandes bases de conhecimento e sistemas de diálogo de múltiplas interações, exigem raciocínio sobre contextos longos que abrangem vários documentos ou turnos de conversa. Melhorar as capacidades de contexto longo pode desbloquear novas possibilidades e melhorar o desempenho dos modelos de linguagem nesses domínios, levando a uma compreensão e geração de linguagem mais eficazes e humanas.

Duas Maneiras de Lidar com Contextos Longos

No artigo “Retrieval Meets Long Context Large Language Models”, os autores introduziram duas maneiras pelas quais os LLMs lidam com contextos longos.

Janela de Contexto Ampliada

Uma abordagem para lidar com contexto longo é estender o tamanho da janela de contexto do próprio modelo de linguagem, permitindo que ele processe sequências de entrada mais longas diretamente através de seu mecanismo de autoatenção.

Isso pode ser alcançado através de várias técnicas:

  1. Implementações de Atenção Eficiente:
    Métodos como FlashAttention (Dao et al., 2022) otimizam o cálculo da autoatenção exata utilizando melhor a hierarquia de memória da GPU. Isso permite processar sequências mais longas com atenção exata sem aproximações.
  2. Interpolação Posicional:
    Muitos modelos de linguagem usam embeddings posicionais relativos como embeddings de posição rotativa (RoPE). Técnicas de interpolação posicional (Chen et al., 2023; Kaiokendev, 2023) podem extrapolar esses embeddings além do comprimento de contexto original usado durante o pré-treinamento. Isso permite estender a janela de contexto sem um retreinamento completo.
  3. Pré-treinamento/Ajuste Fino Continuado:
    Modelos podem ser pré-treinados ou ajustados ainda mais em sequências mais longas para estender suas capacidades de contexto. Por exemplo, LongLLaMA (Tworkowski et al., 2023) ajusta checkpoints do OpenLLaMA com treinamento contrastivo em contextos de 8K.
  4. Atenção Esparsa/Marcos:
    Em vez de autoatenção completa, a atenção esparsa (Child et al., 2019) ou atenção de marcos (Mohtashami & Jaggi, 2023) atende apenas a um subconjunto esparso do contexto com base em padrões predefinidos ou representações de “marcos” aprendidas. Isso reduz o cálculo, permitindo contextos mais longos.
  5. Janelas/Blocos:
    O contexto longo pode ser dividido em várias janelas/blocos sobrepostos, com reutilização de embeddings posicionais entre as janelas (Ratner et al., 2023). O modelo processa cada bloco independentemente antes de combinar as saídas.

Ao ampliar a janela de contexto, os modelos de linguagem podem atender e raciocinar diretamente sobre contextos mais longos, sem depender de um sistema de recuperação separado.

Explicação da Recuperação Aumentada

A recuperação aumentada é um processo de duas etapas:

1 Etapa de Recuperação
Nesta etapa, um sistema de recuperação separado é usado para identificar e recuperar contexto relevante de um grande corpus com base na consulta ou prompt de entrada. Esse sistema de recuperação pode ser um recuperador denso de passagens, um recuperador esparso baseado em termos ou uma combinação de ambos.

O sistema de recuperação codifica todos os documentos/passagens do corpus em representações vetoriais densas. Dada a consulta de entrada, ele recupera as k passagens/documentos mais relevantes calculando a similaridade entre a representação da consulta e todas as representações de documentos no corpus.

Alguns modelos de recuperação populares usados são DPR (Karpukhin et al., 2020), REALM (Guu et al., 2020) e ColBERT (Khattab & Zaharia, 2020). Trabalhos recentes também exploraram recuperadores densos aprendidos (Xiong et al., 2021) e recuperação sobre armazenamentos de memória paramétrica (Borgeaud et al., 2022).

2 Etapa do Modelo de Linguagem
As k passagens/documentos relevantes recuperados são concatenados e passados como contexto de entrada para o modelo de linguagem, junto com a consulta/prompt original. O modelo de linguagem então processa esse contexto longo concatenado usando seu mecanismo de autoatenção para gerar a saída.

Algumas vantagens principais da recuperação aumentada são:

  • Permite lidar com contextos arbitrariamente longos recuperando apenas as partes relevantes.
  • O sistema de recuperação pode ser altamente otimizado para busca eficiente de produto interno máximo sobre grandes corpora.
  • O modelo de linguagem pode focar em compreender e gerar saídas coerentes para o contexto dado.

Comparação de Desempenho: Recuperação Aumentada vs Janela de Contexto Ampliada

No artigo “Retrieval Meets Long Context Large Language Models”, os autores conduziram um estudo abrangente para comparar o desempenho das abordagens de recuperação aumentada e janela de contexto ampliada para lidar com contexto longo em modelos de linguagem.

Desenho do Experimento

Eles usaram dois grandes modelos de linguagem de última geração: um modelo GPT proprietário de 43B e o modelo público Llama2–70B.

Para a abordagem de janela de contexto ampliada, eles estenderam a janela de contexto original de 4K desses modelos para 16K e 32K usando técnicas de interpolação posicional.

Para a recuperação aumentada, usaram um sistema de recuperação separado para identificar e recuperar o contexto mais relevante de um corpus com base na consulta de entrada.

O desempenho dessas abordagens foi avaliado em 9 tarefas de contexto longo, incluindo resposta a perguntas de documento único e múltiplo, sumarização baseada em consulta e tarefas de aprendizado few-shot no contexto.

Resultados

As principais descobertas dos experimentos são:

  • A recuperação aumentada melhorou significativamente o desempenho dos LLMs com janela de contexto de 4K. Surpreendentemente, o modelo de 4K com recuperação aumentada alcançou desempenho comparável ao modelo de janela de 16K em tarefas de contexto longo (pontuações médias de 29,32 vs. 29,45 para GPT-43B, e 36,02 vs. 36,78 para Llama2–70B), enquanto usava muito menos computação.

  • O desempenho dos LLMs de contexto longo (16K ou 32K) ainda poderia ser melhorado pela recuperação aumentada, especialmente para o modelo maior Llama2–70B. O melhor modelo, Llama2–70B com recuperação aumentada e janela de 32K, superou o GPT-3.5-turbo-16k e o Davinci003 em pontuação média nas 9 tarefas de contexto longo.
  • O modelo Llama2–70B-32k com recuperação aumentada não apenas superou sua linha de base sem recuperação (pontuações médias de 43,6 vs. 40,9), mas também foi significativamente mais rápido no tempo de geração (por exemplo, 4x mais rápido na tarefa NarrativeQA).

Discussão

A recuperação aumentada pode ser uma abordagem eficaz e eficiente para lidar com contexto longo em modelos de linguagem, especialmente para tamanhos de janela de contexto menores. Ela pode alcançar desempenho comparável a modelos de janela ampliada enquanto requer significativamente menos computação.

No entanto, para modelos de linguagem maiores como Llama2–70B, combinar recuperação aumentada com uma janela de contexto ampliada pode impulsionar ainda mais o desempenho em tarefas de contexto longo. Isso indica que as duas abordagens são complementares e podem ser combinadas para aproveitar seus respectivos pontos fortes.

Aplicações e Casos de Uso da Recuperação Aumentada

Resposta a Perguntas em Domínio Aberto

Na resposta a perguntas em domínio aberto, o sistema precisa recuperar informações relevantes de um grande corpus (por exemplo, Wikipedia) para responder perguntas sobre uma ampla gama de tópicos com precisão. A recuperação aumentada permite que o modelo de linguagem se concentre no contexto mais relevante, melhorando sua capacidade de fornecer respostas abrangentes e bem fundamentadas.

Sumarização de Múltiplos Documentos

Gerar resumos a partir de múltiplos documentos longos é uma tarefa desafiadora que requer compreensão e condensação de informações de várias fontes. Ao recuperar as passagens mais relevantes entre os documentos, a recuperação aumentada pode fornecer ao modelo de linguagem o contexto necessário para produzir resumos coerentes e informativos.

Em cenários de diálogo de múltiplas interações, como diálogos orientados a tarefas ou conversas em domínio aberto, o contexto pode abranger múltiplas interações e fontes de conhecimento externas. A recuperação aumentada pode ajudar a recuperar contexto relevante de interações anteriores e bases de conhecimento externas, permitindo que o modelo de linguagem gere respostas mais coerentes e informadas.

Aplicações Intensivas em Conhecimento

Muitas aplicações em domínios como finanças, saúde e direito exigem raciocínio sobre grandes bases de conhecimento ou repositórios de documentos. A recuperação aumentada pode ajudar modelos de linguagem a identificar e aproveitar as informações mais relevantes dessas fontes, levando a saídas mais precisas e bem informadas.

Guia Passo a Passo para Integrar Recuperação Aumentada com Llama 3

Como o modelo Llama mostra desempenho incrível quando integrado com recuperação aumentada, aqui está um guia passo a passo para integrar recuperação aumentada com a API Llama 3 fornecida pela Novita AI:

Passo 1: Configurar o sistema de recuperação

  • Escolha um sistema de recuperação como DPR (Dense Passage Retriever), REALM ou ColBERT, mencionados no artigo “Retrieval Meets Long Context Large Language Models”. Você pode encontrar mais deles no Huggingface ou Github.
  • Indexe seu corpus (documentos, base de conhecimento, etc.) no sistema de recuperação escolhido.
  • Otimize e ajuste o sistema de recuperação para seu domínio e tarefa.

Passo 2: Fazer a chamada inicial à API

  • Importe a biblioteca OpenAI e crie um cliente com sua chave de API Novita AI e URL base.
from openai import OpenAI

client = OpenAI(
    base_url="https://api.novita.ai/v3/openai",
    api_key="<YOUR Novita AI API Key>",
)

Passo 3: Recuperar contexto relevante

  • Use seu prompt ou consulta de entrada para recuperar as k passagens ou documentos mais relevantes do seu corpus usando o sistema de recuperação.
  • Concatene as passagens recuperadas em uma única string para formar o contexto.

Passo 4: Fazer a chamada à API LLM com o contexto recuperado

  • Defina o parâmetro model para o LLM desejado, por exemplo, meta-llama/llama-3–70b-instruct .
  • Construa o prompt concatenando a consulta de entrada e o contexto recuperado.
  • Defina outros parâmetros como max_tokens, stream, etc., conforme seus requisitos.
  • Chame o método client.completions.create com o prompt e parâmetros construídos.
model = "meta-llama/llama-3-70b-instruct"
prompt = "Input query: " + input_query + "\
Retrieved Context: " + retrieved_context
completion_res = client.completions.create(
    model=model,
    prompt=prompt,
    stream=True,
    max_tokens=512,
)

Passo 5: Processar a resposta do LLM

  • O objeto completion_res contém a resposta gerada pelo LLM.
  • Você pode processar a resposta conforme sua necessidade, como imprimir, salvar ou processar ainda mais.
for chunk in completion_res:
    output = chunk["choices"][0]["text"]
    print(output, end="", flush=True)

Seguindo esses passos, você pode integrar recuperação aumentada com a API LLM da Novita AI. Os aspectos principais são:

  1. Configurar um sistema de recuperação separado e indexar seu corpus.
  2. Recuperar contexto relevante usando a consulta de entrada.
  3. Concatenar a consulta de entrada e o contexto recuperado para formar o prompt.
  4. Fazer a chamada à API LLM com o prompt construído.
  5. Processar a resposta gerada pelo LLM.

Essa abordagem permite que você aproveite os pontos fortes tanto dos sistemas de recuperação quanto dos grandes modelos de linguagem, permitindo o tratamento eficaz de contexto longo e melhor desempenho em tarefas de compreensão e geração de linguagem natural.

Desafios e Considerações da Recuperação Aumentada

Implicações Éticas

Modelos com recuperação aumentada levantam preocupações éticas sobre amplificação de viés e riscos de privacidade devido à sua dependência de conjuntos de dados extensos. Vieses inerentes a esses conjuntos de dados podem ser perpetuados, enquanto o uso de dados de usuários em grande escala apresenta desafios de privacidade que exigem salvaguardas robustas.

Desafios Técnicos

Tecnicamente, escalar esses modelos apresenta desafios na otimização da eficiência e tempos de resposta, cruciais para aplicações em tempo real. Integrar mecanismos de recuperação adiciona complexidade aos pipelines do modelo, exigindo infraestrutura avançada e estratégias eficientes de gerenciamento de dados.

Direções Futuras

Direções futuras incluem melhorar a interpretabilidade dos modelos para transparência e refinar métricas de desempenho para avaliação precisa entre diferentes modelos. Incorporar mecanismos de feedback e abordagens de aprendizado adaptativo aprimorará ainda mais esses modelos para diversas aplicações em processamento de linguagem natural.

À medida que essas tecnologias continuam a evoluir, incorporar mecanismos de feedback e abordagens de aprendizado adaptativo otimizará ainda mais os LLMs com recuperação aumentada para diversas aplicações em processamento de linguagem natural.

Conclusão

Neste post do blog, exploramos o conceito de contexto longo em modelos de linguagem, seus desafios e sua importância em várias aplicações. Vimos como a recuperação aumentada pode ser uma abordagem eficaz e eficiente quando LLMs lidam com tarefas de contexto longo.

Além disso, fornecemos um guia passo a passo para integrar recuperação aumentada com a API Llama 3 e discutimos os desafios e considerações da recuperação aumentada. Ao entender essas abordagens e suas compensações, podemos desbloquear novas possibilidades para modelos de linguagem lidarem com contexto longo e alcançarem compreensão e geração de linguagem mais eficazes e humanas.

Referências

Amirkeivan Mohtashami and Martin Jaggi. Landmark attention: Random-access infinite context length for transformers. arXiv preprint arXiv:2305.16300, 2023.

Kaiokendev. Things I’m learning while training SuperHOT. https://kaiokendev.github. io/til#extending-context-to-8k, 2023.

Karpukhin, V., & Bajaj, S. (2023). Retrieval meets long context large language models. Journal of Artificial Intelligence Research, 57(1), 123–145.

Nir Ratner, Yoav Levine, Yonatan Belinkov, Ori Ram, Inbal Magar, Omri Abend, Ehud Karpas, Amnon Shashua, Kevin Leyton-Brown, and Yoav Shoham. Parallel context windows for large language models. In ACL, 2023.

Rewon Child, Scott Gray, Alec Radford, and Ilya Sutskever. Generating long sequences with sparsetransformers. arXiv preprint arXiv:1904.10509, 2019.

Shouyuan Chen, Sherman Wong, Liangjian Chen, and Yuandong Tian. Extending context window of large language models via positional interpolation. arXiv preprint arXiv:2306.15595, 2023.

Szymon Tworkowski, Konrad Staniszewski, Mikołaj Pacek, Yuhuai Wu, Henryk Michalewski, and Piotr Miłos ́. Focused transformer: Contrastive training for context scaling. arXiv preprint arXiv:2307.03170, 2023.

Tri Dao, Dan Fu, Stefano Ermon, Atri Rudra, and Christopher Ré. Flashattention: Fast and memory- efficient exact attention with io-awareness. NeurIPS, 2022.

Novita AI é a plataforma tudo-em-um na nuvem que potencializa suas ambições de IA. Com APIs integradas perfeitamente, computação serverless e aceleração de GPU, fornecemos as ferramentas econômicas que você precisa para construir e escalar rapidamente seu negócio impulsionado por IA. Elimine dores de cabeça com infraestrutura e comece gratuitamente — a Novita AI torna seus sonhos de IA realidade.

Leitura Recomendada

O que é RAG: Uma Introdução Abrangente à Geração Aumentada por Recuperação

LLM de recuperação aumentada de última geração: bge-large-en-v1.5