Saltar al contenido principal

Los seis modos de búsqueda

GRAIL tiene seis formas distintas de responder una pregunta. Cinco de ellas usan un LLM, una no. Aprender cuál usar para qué tipo de pregunta es la habilidad central para usar GRAIL bien.

Tabla rápida

ModoMejor paraCosto de LLMComando
localConceptos nombrados ("¿quién es X?", "¿qué hace Y?")1 llamadagrail query <proj> "..." --mode local
cascadeHechos específicos ("¿qué dosis dice el protocolo?")1 llamada--mode cascade
globalPreguntas temáticas amplias ("¿de qué trata todo esto?")varias (map-reduce)--mode global
documentUna sola fuente ("resume law-21250.pdf")1 llamada--mode document -d archivo.pdf
agentPreguntas compuestas ("compara X y Y")1–N llamadas--mode agent
recallMemoria por filtros estructurales0 llamadas--mode recall --since 7d --tag X

Cuándo usar cuál

local — entidades como ancla

Embed la pregunta, busca las entidades más parecidas en el grafo, trae los textos, relaciones y reportes asociados, responde.

grail query mi-proyecto "¿Quién es la Ley Ricarte Soto?" --mode local

Funciona bien cuando tu pregunta nombra cosas que probablemente sean entidades en el grafo. Si la pregunta es vaga o no tiene sustantivos claros, considera cascade.

cascade — entidades + rescate de texto

El gran problema de GraphRAG vanilla: a veces el hecho que buscas vive en un chunk de texto cuya entidad principal no se extrajo. cascade resuelve esto sumando un rescate por BM25/coseno sobre los chunks de texto, y combinando ambos rankings.

grail query mi-proyecto "¿Cuántos meses dura la cobertura de quimioterapia?" --mode cascade

Esta suele ser la mejor opción para preguntas factuales específicas. Si vienes de RAG tradicional, cascade es el modo que te va a sorprender por arriba.

global — visión de pájaro

Map-reduce sobre los reportes de comunidades. Cada reporte aporta una perspectiva temática; el reduce las sintetiza.

grail query mi-proyecto "¿Cuáles son los temas centrales del corpus?" --mode global

Costoso para corpus grandes (una llamada por reporte arriba de N tokens), pero único para preguntas de síntesis.

document — un solo archivo

Acota toda la búsqueda a un documento. Útil para "resume X" o "qué dice Y sobre Z" cuando ya sabes a qué archivo apuntar.

grail query mi-proyecto "Resume esto" --mode document -d law-21250.pdf

agent — déjale decidir al LLM

El agente recibe la pregunta y tiene local, cascade, global, document como herramientas. Decide cuál(es) llamar, repite si hace falta hasta 5 iteraciones, y sintetiza una respuesta final.

grail query mi-proyecto "Compara la cobertura entre AUGE y Ley Ricarte Soto" --mode agent

Mejor opción para preguntas compuestas o ambiguas. Más caro pero más robusto.

recall — sin LLM

Filtro puro sobre las columnas estructurales: observed_at, category, tag, entity, confidence. No hay embedding, no hay LLM, no hay costo. Solo memoria.

# Últimas decisiones de la semana
grail query mi-memoria --mode recall --since 7d --tag decision

# Todo lo de un cliente, sin importar la fecha
grail query mi-memoria --mode recall --category "work/clients/acme/**"

Los mismos flags de filtro también se pueden combinar con otros modos como modificador del candidato:

# Cascade pero solo dentro de las observaciones del último mes con tag decision
grail query mi-memoria "¿Qué decidimos sobre la migración?" \
--mode cascade --since 30d --tag decision

La forma de la pregunta importa

Para local y cascade, una pregunta bien construida matchea ~3× mejor que una pregunta mal construida. La fórmula que funciona en nuestros benchmarks:

[QUIÉN lo hace] + [QUÉ es el proceso] + [TÉRMINOS ESPECÍFICOS del dominio]

Compara:

  • ❌ "Cuánto cuesta el tratamiento" — vaga, sin entidades nombradas.
  • ✅ "Cuánto cubre FONASA del tratamiento de quimioterapia oncológica" — nombra la entidad (FONASA), el proceso (cubrir tratamiento), y términos específicos (quimioterapia oncológica).

Próximo paso