rag_template / data /evaluation /test_dataset.json
Guilherme Favaron
Sync: Complete project update (Phase 6) - API, Metadata, Eval, Docs
a686b1b
[
{
"query": "O que e RAG?",
"ground_truth": "RAG (Retrieval-Augmented Generation) e uma tecnica que combina busca de informacoes relevantes (retrieval) com geracao de texto por um LLM. O sistema primeiro busca documentos relevantes e depois usa esses documentos como contexto para gerar uma resposta mais precisa e fundamentada.",
"contexts": [
"RAG combina retrieval com generation usando LLMs",
"O sistema busca documentos relevantes e usa como contexto"
],
"difficulty": "easy",
"topic": "basics"
},
{
"query": "Como funciona hybrid search?",
"ground_truth": "Hybrid search combina busca vetorial semantica com busca por palavras-chave (BM25). A busca vetorial encontra documentos semanticamente similares, enquanto BM25 encontra correspondencias exatas de termos. Os resultados sao combinados usando um parametro alpha que controla o peso de cada metodo.",
"contexts": [
"Hybrid search usa BM25 e busca vetorial",
"Alpha controla o peso entre os dois metodos",
"BM25 encontra termos exatos, vetorial encontra semantica"
],
"difficulty": "medium",
"topic": "search"
},
{
"query": "Qual a diferenca entre chunking fixo e semantico?",
"ground_truth": "Chunking fixo divide o texto em pedacos de tamanho fixo (ex: 500 caracteres), podendo quebrar no meio de sentencas. Chunking semantico respeita limites naturais do texto como paragrafos, preservando coerencia semantica, mas pode gerar chunks de tamanhos variaveis.",
"contexts": [
"Chunking fixo usa tamanho fixo de caracteres",
"Chunking semantico respeita paragrafos e sentencas",
"Semantico preserva coerencia mas tem tamanhos variaveis"
],
"difficulty": "medium",
"topic": "chunking"
},
{
"query": "Para que serve reranking?",
"ground_truth": "Reranking melhora a ordem dos resultados apos a busca inicial. Usa um cross-encoder que avalia a relevancia de cada par (query, documento) de forma mais precisa que a busca vetorial inicial. Tipicamente recupera-se mais documentos (ex: 20) e reordena-se para selecionar os melhores (ex: top 5).",
"contexts": [
"Reranking melhora a ordem dos resultados de busca",
"Cross-encoder avalia pares query-documento",
"Recupera mais docs inicialmente e seleciona os melhores"
],
"difficulty": "medium",
"topic": "reranking"
},
{
"query": "Quais sao os LLM providers suportados?",
"ground_truth": "O sistema suporta 4 providers de LLM: HuggingFace Inference API (modelos como Mistral), OpenAI (GPT-3.5, GPT-4), Anthropic (Claude 3 Haiku/Sonnet/Opus) e Ollama (modelos locais). A selecao e feita via variavel LLM_PROVIDER no arquivo .env.",
"contexts": [
"Suporta HuggingFace, OpenAI, Anthropic e Ollama",
"Configuracao via LLM_PROVIDER no .env",
"Cada provider tem suas proprias API keys"
],
"difficulty": "easy",
"topic": "llm"
},
{
"query": "Como configurar o Supabase?",
"ground_truth": "Para configurar Supabase: 1) Crie conta e projeto, 2) Habilite extensao pgvector em Database > Extensions, 3) Copie connection string em Settings > Database, 4) Configure DATABASE_URL no .env com formato postgresql://postgres:PASSWORD@db.PROJECT_REF.supabase.co:5432/postgres",
"contexts": [
"Crie projeto no Supabase e habilite pgvector",
"Connection string em Settings > Database",
"Configure DATABASE_URL no .env"
],
"difficulty": "medium",
"topic": "database"
},
{
"query": "Qual a diferenca entre temperature 0.1 e 0.9?",
"ground_truth": "Temperature controla a criatividade do LLM. Temperature baixa (0.1-0.3) gera respostas mais deterministicas e focadas, ideal para RAG onde queremos respostas precisas baseadas no contexto. Temperature alta (0.7-1.0) gera respostas mais criativas e variadas, mas pode desviar do contexto.",
"contexts": [
"Temperature controla criatividade do LLM",
"Baixa (0.1-0.3) = mais focado e deterministico",
"Alta (0.7-1.0) = mais criativo mas pode desviar"
],
"difficulty": "medium",
"topic": "llm"
},
{
"query": "O que e query expansion?",
"ground_truth": "Query expansion gera multiplas variantes da pergunta original para aumentar recall. Existem 3 metodos: LLM (gera variantes contextuais), Template (templates predefinidos) e Paraphrase (sinonimos). Busca com todas variantes e combina resultados.",
"contexts": [
"Query expansion gera variantes da pergunta",
"3 metodos: LLM, Template, Paraphrase",
"Aumenta recall combinando resultados"
],
"difficulty": "hard",
"topic": "search"
},
{
"query": "Como funciona o cache de embeddings?",
"ground_truth": "O cache armazena embeddings ja calculados para evitar reprocessamento. Usa SHA-256 do texto + model_id como chave. Tem cache em memoria (LRU) e em disco (persistente). Acelera significativamente quando processa documentos repetidos ou queries similares.",
"contexts": [
"Cache armazena embeddings ja calculados",
"Chave: hash SHA-256 de texto + model_id",
"Cache em memoria (LRU) e disco (persistente)"
],
"difficulty": "hard",
"topic": "performance"
},
{
"query": "Quantos documentos o sistema suporta?",
"ground_truth": "O sistema foi testado e suporta mais de 100.000 documentos. Performance de busca vetorial fica abaixo de 100ms mesmo com essa quantidade. Para escalabilidade maior, pode-se usar indices HNSW ou particionar por session_id.",
"contexts": [
"Testado com 100k+ documentos",
"Busca em <100ms mesmo com muitos docs",
"Indices HNSW para ainda mais escala"
],
"difficulty": "easy",
"topic": "performance"
}
]