Design clássico · Staff
Assistente com LLM e RAG (suporte e código)
Projeto de entrevista clássico. Pontos centrais: serviço de LLM (inferência).
Resposta curta
Projeto de entrevista clássico. Pontos centrais: serviço de LLM (inferência). Um assistente de suporte precisa conhecer o negócio específico em que atua. Uma técnica para dar esse conhecimento ao modelo é a RAG: o sistema recupera informação relevante da base de conhecimento e a anexa ao prompt do usuário.
01 · CONTEXTO E REQUISITOS
Por que um assistente precisa de RAG
Um assistente de suporte precisa conhecer o negócio específico em que atua. Uma técnica para dar esse conhecimento ao modelo é a RAG: o sistema recupera informação relevante da base de conhecimento e a anexa ao prompt do usuário.
No resumo do paper que deu nome à técnica, dar proveniência às decisões do modelo e atualizar seu conhecimento aparecem como problemas em aberto. Modelos só paramétricos precisam de mais treinamento para mudar o comportamento, enquanto um modelo com memória não paramétrica tem o conhecimento atualizado com facilidade.
Antes de montar a infraestrutura, vale perguntar se ela é necessária. A Anthropic observa que, para uma base abaixo de 200.000 tokens (cerca de 500 páginas), dá para incluir a base inteira no prompt, sem RAG.
02 · VISÃO GERAL
O caminho de uma pergunta
A base é preparada antes das perguntas: o corpus é quebrado em trechos pequenos, um modelo de embeddings converte cada trecho em um vetor que codifica significado e os vetores ficam em um banco vetorial que permite busca por similaridade semântica.
No diagrama, o usuário chega ao gateway de API, que encaminha o pedido ao orquestrador do assistente.
Na consulta, o banco vetorial é usado para achar os trechos mais relevantes por similaridade semântica com a pergunta.
Os trechos mais relevantes são adicionados ao prompt enviado ao modelo generativo.
No diagrama, o filtro de segurança fica entre o orquestrador e o serviço de LLM.
No diagrama, o orquestrador também envia os registros de cada interação à coleta de métricas e avaliações.
03 · RECUPERAÇÃO
Recuperar bem é metade do trabalho
A busca vetorial captura relações semânticas, mas os modelos de embeddings podem perder correspondências exatas. O BM25 é uma função de ranqueamento que usa correspondência lexical para achar palavras ou frases exatas e é especialmente eficaz em consultas com identificadores únicos ou termos técnicos.
Uma recuperação híbrida usa as duas buscas: o BM25 acha os melhores trechos por correspondência exata, os embeddings acham os melhores por similaridade semântica, e os resultados são combinados e deduplicados com técnicas de fusão de ranking.
Outro problema é o contexto perdido: a RAG tradicional remove contexto ao codificar a informação. A proposta da Anthropic, chamada Contextual Retrieval, antepõe a cada trecho um contexto explicativo específico antes do embedding.
| Técnica | Redução da falha de recuperação | Taxa de falha |
|---|---|---|
| Embeddings contextuais | 35% | 5,7% para 3,7% |
| Embeddings contextuais e BM25 contextual | 49% | 5,7% para 2,9% |
| Os dois com reranking | 67% | 5,7% para 1,9% |
O reranking é uma técnica de filtragem para que só os trechos mais relevantes cheguem ao modelo; ele melhora as respostas e reduz custo e latência porque o modelo processa menos informação. Por outro lado, há um trade-off entre rerankear mais trechos, para melhor desempenho, e menos, para menor latência e custo.
O mesmo equilíbrio vale para a quantidade de trechos no prompt: colocar mais trechos na janela de contexto aumenta a chance de incluir a informação relevante, mas informação demais pode distrair o modelo.
04 · SERVIÇO DE LLM
O modelo é o recurso caro
Um guia de preparação para entrevistas de system design recomenda entender como funciona a inferência em lote, como clusters de GPU são gerenciados, o que a RAG envolve e como funciona o limite de taxa para APIs de LLM.
No diagrama, as requisições do orquestrador passam pelo limitador de taxa e esperam na fila de requisições.
Servir LLMs com alta vazão exige agrupar requisições suficientes em lote; no diagrama, os servidores de inferência consomem a fila.
A memória de KV cache de cada requisição é enorme e cresce e encolhe dinamicamente.
Mal gerenciada, essa memória pode ser desperdiçada por fragmentação e duplicação redundante, o que limita o tamanho do lote.
05 · ATUALIZAÇÃO E QUALIDADE
Manter o conhecimento atual e medir a qualidade
No paper de RAG, o problema de busca de produto interno máximo (MIPS) pode ser resolvido de forma aproximada em tempo sublinear, e os autores montam o índice MIPS com FAISS e uma aproximação do tipo Hierarchical Navigable Small World para recuperação rápida.
No diagrama, as mudanças nas fontes entram na fila de mudanças.
No diagrama, o worker de indexação consome a fila e grava os trechos no índice novo.
No diagrama, o recuperador consulta o índice ativo.
No paper de RAG, o conhecimento do modelo pode ser atualizado trocando a memória não paramétrica, o índice, enquanto modelos só paramétricos precisam de mais treinamento.
Quanto à qualidade, a fonte da Anthropic lista entre as considerações de implementação sempre rodar evals, e recomenda experimentar configurações no seu caso de uso específico para achar o equilíbrio.
Perguntas frequentes
O que é Assistente com LLM e RAG (suporte e código)?
Projeto de entrevista clássico. Pontos centrais: serviço de LLM (inferência).
O que o design de Assistente com LLM e RAG (suporte e código) cobre?
Ele está organizado nestas seções: Por que um assistente precisa de RAG, O caminho de uma pergunta, Recuperar bem é metade do trabalho, O modelo é o recurso caro e Manter o conhecimento atual e medir a qualidade.
Quanto tempo leva Assistente com LLM e RAG (suporte e código) e qual é o nível?
Leva cerca de 17 minutos para ler e tem nível Staff.
Agora projete você mesmo
Rode este caso como uma entrevista na escola de System Design: você toma as decisões, o tutor as questiona e você vê a nota do seu desenho.