Saltar al contenido

Recuperación híbrida: vectorial + por palabras clave + metadatos

Ingeniería de recuperación híbrida resiliente: combinar señales vectoriales, léxicas, de metadatos y temporales para RAG de sitios web.

retrieval • hybrid • search • rag

La recuperación de una sola modalidad falla en los casos límite: los vectores densos pierden tokens raros e IDs; la búsqueda puramente léxica pierde la paráfrasis y la similitud semántica. La recuperación híbrida fusiona señales complementarias —semántica densa, léxica dispersa, metadatos estructurados, frescura temporal— para producir conjuntos de candidatos estables y de alta precisión. Este artículo detalla la arquitectura, la normalización, la fusión de puntuaciones, el manejo de fallos y la evaluación.

Motivación

Escenarios de fallo:

  • Nombres propios / códigos SKU omitidos por el modelo denso.
  • Consultas sobre cambios de precios que recuperan una instantánea obsoleta por falta de impulso temporal.
  • Preguntas largas en lenguaje natural sobreponderadas en palabras vacías en un sistema solo disperso.
  • Falsos positivos vectoriales en páginas semánticamente amplias (relleno de marketing) sin anclaje léxico.

El enfoque híbrido lo mitiga al capturar dimensiones de evidencia ortogonales.

Capas de componentes

Flujo recomendado:

  1. Incrustación de la consulta → búsqueda ANN (k_vec)
  2. Búsqueda léxica (BM25 / SPLADE / Elasticsearch) (k_lex)
  3. Unión → normalización de puntuaciones (escalado por fuente)
  4. Paso de filtrado por metadatos (locale, access_tier, page_type)
  5. Ajustes de diversidad y frescura
  6. Reordenador cruzado/mono opcional
  7. Truncamiento final (top K)

Conserva las puntuaciones brutas previas a la fusión para auditoría.

Normalización de la consulta

Pasos:

  • Normalización Unicode NFKC
  • Minúsculas (conserva una instantánea de las mayúsculas para el formato de la respuesta si es necesario)
  • Tokenizar y conservar las palabras vacías (las incrustaciones semánticas pueden aprovechar el contexto)
  • Expansión de sinónimos / alias: añade tokens alternativos para el mapeo de nombres en clave internos de producto (no se inserta en el prompt del modelo; se usa solo para la recuperación dispersa).
  • Extracción de números y versiones: captura patrones X.Y.Z para una puntuación léxica dirigida.

Filtros de metadatos y atributos

Los filtros aplicados después de la unión inicial de candidatos minimizan la pérdida de recuperación. Campos comunes: locale, access_tier, page_type, product_area, updated_bucket. Aplica los filtros de seguridad (tenant / tier) ANTES de la fusión de puntuaciones para evitar que las fugas influyan en el reordenamiento. Ofrece un modo de depuración que devuelva el conjunto filtered_out para su inspección.

Estrategia de reordenamiento

Usa un cross-encoder ligero (modelo destilado) sobre los N principales (10–20). Si la latencia > presupuesto, degrada: omite el reordenamiento O reduce el número de candidatos aumentando el peso léxico. Realiza un seguimiento de re_rank_delta = MRR_post - MRR_pre para justificar el coste. Almacena en caché los resultados del reordenamiento para conjuntos de unión idénticos dentro de un TTL corto.

Frescura y señales temporales

Calcula freshness_weight = exp(-lambda * age_days) donde lambda se ajusta por tipo de contenido (más alta para precios, más baja para una API estable). Combina: final_score = w_sem * sem_score + w_lex * lex_score + w_fresh * freshness_weight + w_meta * meta_priors. Normaliza primero cada componente (z-score o min-max) para evitar el dominio de uno solo.

Modos de fallo

FalloCausaMitigación
Sesgo de popularidadSobreponderación del tf-idf léxicoLimitar la contribución de la frecuencia de términos
Resultados obsoletosPeso de frescura mal ajustadoRecalibrar lambda con un conjunto de evaluación
Fuga de localeAplicación tardía del filtroMover los filtros de seguridad antes
Deriva semánticaActualización del modelo de incrustaciónIndexación dual y comparación A/B antes del despliegue
Ruido por exceso de fusiónTamaño de unión sin límiteLimitar la unión, poda por diversidad

Marco de evaluación

Experimentos:

  • Ablación: (solo vectorial, solo léxica, híbrida sin reordenamiento, completa) mide Recall@k, MRR.
  • Ajuste de pesos de fusión: búsqueda en cuadrícula de pesos usando un conjunto dorado de validación.
  • Presupuesto de latencia: seguimiento de la latencia de recuperación media + P95 por configuración.
  • Deriva: monitoriza el cambio relativo semanal en la recuperación para consultas frecuentes frente a las de cola larga.

Mantén un manifiesto de evaluación con hashes de configuración.

Bucle de optimización

Ciclo:

  1. Registra trazas de recuperación (query, candidates, scores, source_tag).
  2. Identifica los aciertos fallidos (baja fidelidad aguas abajo o bajo número de citas) → clasifica la causa raíz (candidato léxico ausente, falso positivo semántico, contenido obsoleto).
  3. Ajusta pesos / umbrales; ejecuta la suite sin conexión.
  4. Lanza nuevos pesos de fusión en versión canary detrás de un feature flag.
  5. Promociona ante una mejora estadísticamente significativa.

Conclusiones clave

  • La recuperación híbrida es un sistema de diales ajustables; instrumenta sin descanso.
  • Aplica los filtros de seguridad y acceso pronto; evita la fuga hacia la puntuación.
  • El reordenamiento debe justificar la latencia mediante una mejora medible de MRR / Recall.
  • La decadencia temporal evita que páginas obsoletas de alta autoridad dominen.
  • Trata los cambios de fusión como código: versiona, evalúa, avanza o retrocede.