Búsqueda y RAG
encontrar la respuesta dentro de tus propios documentos.
esfuerzo varios días35 apps del cementerio la necesitan
cómo se usa · 3 pasos
- Copia el archivo.Botón copiar archivo. Es un
SKILL.md: texto en Markdown con instrucciones para tu agente, ya con el encabezado que los agentes esperan. No tienes que entenderlo ni editarlo. - Guárdalo en tu carpeta de skills.Una carpeta con el nombre de la skill y dentro el archivo
SKILL.md, tal cual. En tu carpeta personal sirve para todos tus proyectos, no hace falta copiarla en cada uno. Claude Code:~/.claude/skills/busqueda-y-rag/SKILL.md· Codex:~/.agents/skills/busqueda-y-rag/SKILL.md· Cursor lee esas dos carpetas, no necesita otra. ¿Solo para un proyecto? La misma ruta sin~/, dentro de la carpeta del proyecto. - Pídele la app.Abre tu agente y escríbele en español qué quieres construir («una agenda para mi consultorio con recordatorios por WhatsApp»). Él carga la skill solo cuando hace falta; también puedes llamarla tú:
/busqueda-y-ragen Claude Code y Cursor,$busqueda-y-ragen Codex. Cuando se trabe, vuelve a en qué te vas a trabar.
archivo de la skill
---
name: busqueda-y-rag
description: encontrar la respuesta dentro de tus propios documentos.
---
# Búsqueda y RAG
Instrucciones para el agente que está construyendo esta app. Sigue esta skill cuando
implementes búsqueda de texto completo, embeddings o respuestas con citas sobre
contenido propio.
## Cuándo usar esta skill
Actívala en cuanto se cumpla cualquiera de estas condiciones:
- Hay más contenido del que alguien puede recorrer a mano.
- El usuario quiere preguntar en lenguaje natural sobre documentos propios.
- Necesitas encontrar cosas por significado y no solo por palabra exacta.
- Estás replicando un asistente, un buscador o una base de conocimiento.
No empieces por la base vectorial. Para casi todo lo que vas a construir, la búsqueda
léxica de Postgres es mejor punto de partida que un stack de RAG completo.
## Cómo construirla
Usa este stack salvo que el proyecto ya tenga otro decidido: **Postgres** con
`tsvector` para texto completo, **pgvector** para semántica, reordenamiento híbrido
antes de pasarle nada al modelo.
1. Primero búsqueda léxica: `tsvector` con índice GIN y ranking. Resuelve más casos de
los que crees y cuesta cero por consulta.
2. Trocea los documentos por estructura (encabezados, párrafos), no por número fijo de
caracteres.
3. Guarda embeddings en pgvector junto a los metadatos. Una base vectorial aparte es un
servicio más que mantener.
4. Combina ambos rankings (híbrido) y reordena los diez mejores antes de armar el
prompt.
5. Responde siempre con citas al fragmento de origen y enlace. Sin cita, es una
alucinación con buena redacción.
6. Reindexa cuando cambie el documento y guarda el hash para no recalcular embeddings de
lo que no cambió.
## En qué te vas a trabar
- **Los embeddings cuestan por documento y por reindexación.** Un corpus grande deja de
ser gratis rápido; mide el costo antes de indexar todo de golpe.
- **RAG sin evaluación es fe.** Junta veinte preguntas reales con su respuesta esperada y
mídelas en cada cambio de prompt o de chunking.
- **Si el usuario ya sabe la palabra exacta que busca, el modelo estorba.** Deja también
la búsqueda simple como opción, no solo el chat.
## Criterio de terminado
No declares esto listo hasta que la búsqueda léxica funcione sola sin el modelo, las
respuestas con RAG citen la fuente correcta en tus veinte preguntas de prueba, y
reindexar un documento no reprocese los que no cambiaron.
cópialo en tu agente de código: Claude Code, Codex, Cursor · pégalo como su archivo de skill y sigue las instrucciones tal cual.