HyDE opcional en el retrieval de la biblioteca
Descripción
HyDE (Hypothetical Document Embeddings) es una técnica de generación para mejorar el recall del retrieval semántico. En vez de embeber la pregunta cruda del usuario (corta, fraseo variado), se genera un pasaje hipotético que la respondería (parecido a la prosa de la documentación) y se embebe ese pasaje junto con la pregunta original, anclando el vector resultante.
Beneficio: el vector cae más cerca de chunks relevantes en el espacio BGE-M3 → mayor recall.
Costo: +1 llamada a Gemma (~1-2s latencia) por query.
Estado: OFF por defecto. El harness bib_eval_retrieval permite A/B testing con variantes hyde y hyde+trim.
Implementación
Funciones principales
generateHyDE(apiKey, question): Promise<string> (archivo-core.ts)
- Detecta idioma (ES/EN) de la pregunta
- Envía prompt a Gemma (responseSchema fuerza JSON limpio, descarta scratchpad CoT de Gemma 4)
- Genera pasaje 2-4 frases, concreto, con terminología plausible
- Timeout: 15s; fallback a pregunta cruda si falla
buildQueryVec(env, question, opts): Promise<{ vec, hyde? }> (archivo-core.ts)
- Orquesta el flujo completo de embedding
- Si
hyde: true, genera hipótesis y embebepregunta\n\n${pasaje} - Si HyDE falla, fallback a embedding normal de pregunta
- Devuelve vector + pasaje generado (útil para harness)
Puntos de integración
-
MCP Handler
bib_ask(archivo.ts)- Parámetro
hyde: booleanen args - Env var
RETRIEVAL_HYDE=1(default OFF) - Usa
buildQueryVecen lugar deembedTextsdirecto
- Parámetro
-
API Endpoint
Oraculo.ask(api/oraculo/ask.ts)- Env var
RETRIEVAL_HYDE=1para activar - Mismo flujo:
buildQueryVec+searchChunks
- Env var
-
Harness
bib_eval_retrieval(archivo.ts)- Nuevas variantes:
hyde,hyde+trim - Compara overlap vs baseline (proxy de cambio de recall)
- Mide tokens para calcular latencia real
- Nuevas variantes:
Configuración
Env var: RETRIEVAL_HYDE
undefinedo"0"→ OFF (default)"1"→ ON (activa HyDE en retrieval)
Parámetro MCP (bib_ask):
hyde: true→ sobrescribe env var, activa para esa query
Parámetro harness (bib_eval_retrieval):
variants: ['hyde', 'hyde+trim']→ incluye en el A/B test
Validación pendiente
Según el commit body: “Verificado: tsc —noEmit verde. Pendiente medir recall vs latencia con el harness tras deploy.”
El próximo paso es:
- Deployr a staging
- Correr
bib_eval_retrievalconvariants=['baseline', 'trim', 'hyde', 'hyde+trim']sobre 15+ queries reales - Comparar overlap (¿Hyde trae chunks nuevos relevantes?) vs tokens (¿latencia aceptable?)
- Si recall sube >5% y latencia <2.5s, considerar activar por defecto
Relación con ArcRift
Este commit es cherry-pick #1 (PR2) de un proyecto más amplio ArcRift. Contiene solo la pieza de generación + embedding HyDE. Otros cherry-picks posteriores pueden incluir:
- Sintaxis extendida de bib_ask (p.ej. ranking reorderador)
- Integración con modelos locales (Ollama)
- Persistencia de variantes A/B en telemetría
Véase también
- [[entity—functions—service—generate-hyde]]
- [[entity—functions—service—build-query-vec]]
- [[concept—biblioteca—arquitectura-supercontexto]]