Pular para o conteúdo principal

Capítulo 3: Depuração de Pipelines RAG

Modos Comuns de Falha​

1. Documentos Errados Recuperados​

Sintomas: O LLM fornece respostas erradas ou irrelevantes

Causas:

  • Tamanho de chunk inadequado
  • Modelo de embedding incorreto
  • Falta de filtros de metadados

Soluções:

# Verifique o que está sendo recuperado
docs = retriever.get_relevant_documents(query)
for doc in docs:
print(f"Score: {doc.metadata.get('score')}")
print(f"Content: {doc.page_content[:200]}...")
print("---")

2. LLM Ignora o Contexto​

Sintomas: A resposta não reflete os documentos recuperados

Causas:

  • Problemas no template do prompt
  • Contexto muito longo
  • Contexto não formatado claramente

Soluções:

# Estrutura melhor de prompt
prompt = """
CONTEXT (use esta informação para responder):
{context}

QUESTION: {question}

INSTRUCTIONS: Responda SOMENTE usando o contexto acima.
Se o contexto não contiver a resposta, diga "Não sei."

ANSWER:"""

3. Alucinações​

Sintomas: Respostas confiantes, mas incorretas

Causas:

  • Documentos errados recuperados
  • LLM extrapolando além do contexto

Soluções:

  • Melhore a qualidade da recuperação
  • Use prompts de grounding explícitos
  • Reduza o temperature

Rastreamento com LangSmith​

from langsmith import Client
import os

os.environ["LANGCHAIN_TRACING_V2"] = "true"
os.environ["LANGCHAIN_API_KEY"] = "your-key"

# Agora todas as chamadas LangChain são rastreadas
# Veja em smith.langchain.com

Checklist de Depuração​

PassoVerificaçãoFerramenta
1Embeddings funcionando?Testar embedding da query
2Documentos corretos recuperados?Imprimir documentos recuperados
3Contexto cabe no prompt?Verificar contagem de tokens
4LLM vê o contexto?Imprimir prompt completo
5Resposta fundamentada?Comparar com o contexto

Otimização de Performance​

Reduzir Latência​

# Recuperação assíncrona
async def fast_rag(query):
# Embedding e recuperação em paralelo
embedding_task = embed_async(query)

embedding = await embedding_task
docs = await retrieve_async(embedding)

return await generate_async(query, docs)

Reduzir Custos​

  • Use modelos menores sempre que possível
  • Faça cache de queries frequentes
  • Faça batch de embeddings
  • Limite o tamanho do contexto