← 返回列表

Perguntas de Entrevista da Série AI 11: Como Otimizar o RAG?

A otimização do RAG não é um ajuste de etapa única, mas um processo de otimização de cadeia completa. A partir das quatro dimensões lado de indexação de dados, lado de recuperação, lado de geração e lado de avaliação, apresento estratégias sistemáticas de otimização, juntamente com experiências práticas que podem ser mencionadas em entrevistas.


1. Otimização do lado de indexação de dados (melhorando a qualidade da "base de conhecimento")

Esta é a parte mais facilmente negligenciada, mas com efeito mais rápido.

Ponto de Otimização Fenômeno do Problema Abordagem Específica Indicador de Efeito
Análise de Documentos Tabelas e fluxogramas em PDF são ignorados, ou texto ilegível, ordem confusa. Use bibliotecas de análise melhores (como unstructured, modo de preservação de layout do pypdf); para tabelas, extraia com pandas e converta para Markdown. Recall +5~15%
Tamanho do Chunk Chunk muito pequeno perde contexto (ex.: "ele" em "a receita deste ano cresceu" perde referência); chunk muito grande causa ruído na recuperação. Experimente diferentes tamanhos de chunk (256/512/768 tokens), overlap de 10~20%; para documentos longos, use divisão por fronteira semântica (parágrafo/título) em vez de comprimento fixo. Taxa de Acerto / Fidelidade
Adição de Metadados Segmento relevante é recuperado, mas não é possível rastrear origem ou tempo, ou necessidade de filtrar por domínio. Adicione metadados a cada chunk: source (nome do arquivo/URL), timestamp, page_num, doc_type. Use filtros na recuperação (ex.: doc_type == 'legal'). Precisão de Filtro
Seleção do Modelo de Embedding Embedding genérico tem desempenho ruim em domínios verticais (medicina, código, direito). Use modelos ajustados para o domínio (BGE‑large‑zh, GTE‑Qwen2‑7B‑instruct); ou ajuste seu próprio modelo de embedding (com triplet loss). MRR@10 +10~20%

2. Otimização do lado de recuperação (tornar a "consulta" mais precisa)

A recuperação determina a qualidade do "material de referência" alimentado ao LLM.

Ponto de Otimização Fenômeno do Problema Abordagem Específica Efeito
Pesquisa Híbrida Pesquisa vetorial não consegue corresponder termos exatos (ex.: modelo de produto ABC-123), pesquisa por palavras-chave não entende sinônimos. Use simultaneamente pesquisa vetorial (semântica) e BM25 (palavras-chave), fusionando por ponderação (ex.: 0.7vetor + 0.3BM25) ou rerank. Recall +10~25%
Reclassificação (Rerank) O primeiro resultado da pesquisa vetorial pode não ser o mais relevante; o 10º pode ser melhor. Use modelo cross‑encoder (ex.: BGE‑reranker-v2, Cohere Rerank) para re-pontuar o conjunto candidato (ex.: top 20) e pegar top‑K. Aumento significativo na taxa de acerto (especialmente top‑1)
Reescrita de Consultas Pergunta do usuário vaga ou com referência ambígua em diálogo multi-turno ("Qual é o preço dele?"). Use LLM para reescrever a pergunta original em formato mais adequado para recuperação (ex.: "Qual é o preço do iPhone 15?"); ou complete usando histórico de diálogo. Recall +5~15%
HyDE Pergunta do usuário muito curta ou abstrata (ex.: "Explique a fotossíntese"), recuperação direta é ruim. Primeiro, faça o LLM gerar uma resposta hipotética e depois use essa resposta para recuperar documentos. Adequado para domínio aberto, mas não para QA factual preciso
Ajuste do Top‑K de Recuperação K muito pequeno pode perder informações importantes; K muito grande aumenta consumo de tokens e ruído. Experimente K=3/5/10 e observe o equilíbrio entre recall e fidelidade da resposta. Compensação entre eficiência e efeito

3. Otimização do lado de geração (fazer o LLM usar bem os materiais de referência)

Não adianta ter boa recuperação se o prompt é ruim ou o modelo é fraco.

Ponto de Otimização Fenômeno do Problema Abordagem Específica Efeito
Engenharia de Prompt LLM ignora o conteúdo recuperado ou inventa. Instrução clara: "Responda com base APENAS nos materiais de referência fornecidos abaixo. Se as informações forem insuficientes ou irrelevantes, responda 'Não há informações suficientes'." Adicione few‑shot examples mostrando como citar fontes. Fidelidade +20~40%
Compressão de Contexto Conteúdo recuperado muito longo (excede janela de contexto do modelo), ou muito ruído. Use LLMLingua ou Contexto Seletivo para comprimir, mantendo apenas as frases mais relevantes antes de enviar ao LLM. Reduz risco de perda de informação
Atualização do Modelo LLM Modelo pequeno (7B) não consegue fazer raciocínio complexo ou não lembra contexto longo. Troque para modelo mais forte (GPT‑4o, Claude 3.5 Sonnet, Qwen2.5‑72B). Grande aumento na precisão do raciocínio
Streaming e Citações Usuário não consegue verificar credibilidade da resposta. Faça o LLM produzir [citation:1] na geração, correspondente ao número do documento recuperado. Anexe link do original no backend. Confiança do usuário + depuração
Calibragem de Recusa Modelo inventa quando não deve, ou diz não saber quando deve responder. Defina um limiar de similaridade: se a similaridade cosseno do top‑1 chunk com a pergunta for inferior a 0.7, instrua o LLM "Material irrelevante". Reduz taxa de alucinação

4. Lado de avaliação e iteração (saber onde ajustar)

Sem métricas, não é possível otimizar.

Ponto de Otimização Abordagem Indicador
Criar conjunto de avaliação Prepare 100~300 perguntas reais de usuários + respostas padrão + IDs corretos dos documentos recuperados. Cubra diferentes dificuldades e intenções.
Avaliação Automatizada Use RAGAS (Faithfulness, Answer Relevance, Context Recall) ou TruLens. Três indicadores principais: Fidelidade, Relevância da Resposta, Recall de Contexto.
Avaliação Humana Teste semanalmente 20 bad cases, analise tipos de erro (falha de recuperação / erro de geração / falta na base de conhecimento). Priorização de melhorias.
Teste A/B Em produção, teste em buckets diferentes estratégias de recuperação (ex.: BM25 vs pesquisa híbrida). Indicadores online: satisfação do usuário, taxa de não resposta.

5. "Experiência prática" que pode ser mencionada em entrevistas (pontos extras)

"No projeto RAG pelo qual fui responsável, a taxa de acerto inicial da linha de base era de apenas 67%. Fiz três coisas:
1. Mudei a divisão de chunks de fixo 1024 para dinâmica semântica (por título + parágrafo), a taxa de acerto subiu para 74%;
2. Adicionei pesquisa híbrida (vetor + BM25) e um pequeno modelo de rerank, a taxa de acerto chegou a 83%;
3. Otimizei o prompt e forcei a resposta [Informação relevante não encontrada], a taxa de alucinação caiu de 22% para abaixo de 5%.

Além disso, estabelecemos um pipeline de avaliação contínua, executando a pontuação RAGAS em 200 perguntas a cada alteração, garantindo que não houvesse degradação."


Resumo final: Um roteiro completo de otimização RAG

Camada de dados → Limpeza de documentos, otimização de chunks, melhoria de metadados, embedding de domínio
Camada de recuperação → Pesquisa híbrida, rerank, reescrita de consultas, HyDE, ajuste de Top-K
Camada de geração → Reforço de prompt, instruções, compressão, citações, limiar de recusa
Camada de avaliação → Conjunto de avaliação, RAGAS, análise humana, experimentos A/B

评论

暂无已展示的评论。

发表评论(匿名)