Alejandría

Busca en Alejandría

Técnicas

Retrieval-augmented generation (RAG)

Recupera evidencia relevante para fundamentar las respuestas de un modelo.

01

En pocas palabras

Patrón que recupera información de fuentes externas y la incorpora al contexto de un LLM antes de generar una respuesta, sin reentrenar necesariamente el modelo.

Qué problema resuelve

Respuestas sin acceso al conocimiento específico o actualizado de una organización, y dificultad para respaldarlas con evidencia consultable.

Cuándo utilizarlo

Asistentes documentales, búsqueda empresarial y comprensión de código. Ejemplo: recuperar procedimientos vigentes y responder una consulta citando los fragmentos utilizados.

02

De la idea a la práctica

Funcionamiento, ejemplos y decisiones para pasar al siguiente nivel.

En el Radar compartido: Adopt (valoración de la edición aportada).

Cómo funciona

Un proceso prepara documentos y metadatos. Al llegar una consulta, un recuperador selecciona candidatos, puede reordenarlos por relevancia y entrega evidencia al generador. La indexación puede utilizar embeddings, pero una base vectorial no es obligatoria.

Ejemplo: responder sobre un procedimiento

  1. Identificar la pregunta y el ámbito de acceso del usuario.
  2. Recuperar fragmentos vigentes con búsqueda híbrida.
  3. Reordenar los candidatos y seleccionar el contexto útil.
  4. Pedir una respuesta respaldada por ese contexto, con fuentes.
  5. Indicar cuándo la evidencia disponible no permite responder.

Arquitectura de referencia

INGESTA:   fuentes → conversión (Docling, MarkItDown) → limpieza → fragmentación
           → enriquecimiento (título, sección, fecha, permisos) → embeddings → índice

CONSULTA:  pregunta → reescritura / expansión → filtro por permisos y metadatos
           → búsqueda híbrida (vectorial + palabras clave) → fusión → reranking
           → selección de contexto → generación con citas → verificación

Decisiones de fragmentación

Estrategia Cuándo
Por tamaño fijo con solapamiento Texto homogéneo; punto de partida
Por estructura (secciones, títulos) Manuales, políticas, documentación técnica
Por unidad semántica (artículo, cláusula, FAQ) Normativa y contratos
Contextualizada Añadir al fragmento un resumen de su documento y sección antes de indexar

Un fragmento debe poder entenderse solo: «el plazo máximo es 24 meses» sin saber de qué producto habla no sirve.

Búsqueda híbrida en PostgreSQL

-- Vectorial (pgvector) + texto completo, fusionadas con Reciprocal Rank Fusion
WITH vec AS (
  SELECT id, row_number() OVER (ORDER BY embedding <=> $1) AS r
  FROM fragmentos WHERE $3 = ANY(grupos_permitidos)
  ORDER BY embedding <=> $1 LIMIT 40
), txt AS (
  SELECT id, row_number() OVER (ORDER BY ts_rank(tsv, q) DESC) AS r
  FROM fragmentos, plainto_tsquery('spanish', $2) q
  WHERE tsv @@ q AND $3 = ANY(grupos_permitidos)
  LIMIT 40
)
SELECT id, sum(1.0 / (60 + r)) AS score
FROM (SELECT * FROM vec UNION ALL SELECT * FROM txt) t
GROUP BY id ORDER BY score DESC LIMIT 10;

Las palabras clave capturan códigos, nombres propios y siglas que los embeddings representan mal; los embeddings capturan sinónimos y paráfrasis. Un reranker (modelo cross-encoder) reordena después los candidatos con más precisión.

Evaluación por etapas

Etapa Métrica Pregunta
Recuperación Recall@k, MRR ¿Está el fragmento correcto entre los k primeros?
Contexto Precisión del contexto ¿Cuánto del contexto enviado era útil?
Generación Fidelidad (faithfulness), relevancia ¿La respuesta se basa en el contexto y responde?
Citas Exactitud de las citas ¿La fuente citada sostiene la afirmación?
Abstención Tasa de «no lo sé» correctos ¿Reconoce cuando no hay evidencia?

DeepEval y LLM as a judge automatizan buena parte; construye el conjunto con preguntas reales de usuarios.

Problemas frecuentes y soluciones

Problema Solución
Responde con una política derogada Metadatos de vigencia y filtro por fecha; retirar versiones antiguas
No encuentra por códigos o siglas Añadir búsqueda por palabras clave
Fragmentos sin contexto Fragmentación por estructura o contextualizada
Usuario ve contenido que no debería Filtrar por permisos en la consulta, nunca después
Preguntas sobre el corpus completo Considerar GraphRAG o resúmenes jerárquicos

Criterios de implementación

Evalúa recuperación y generación por separado. Mide si aparecen los documentos correctos, si la respuesta los utiliza y si las citas la sostienen. Aplica permisos durante la recuperación, conserva procedencia y fechas, y trata instrucciones presentes en documentos como contenido externo no confiable.

Continúa en las fuentes

Documentación oficial para verificar detalles y explorar más.