Context Mode
Leer el buscador de Context Mode: fusión RRF, reordenación y retorno vacío
Traza dos buscadores léxicos, su clave de fusión, el reordenamiento acotado y el reintento difuso condicional sin confundirlos con búsqueda vectorial.
Qué aprenderás
- RRF suma contribuciones de posición de Porter y trigram.
- La proximidad se aplica después de un recorte acotado.
- El reintento difuso exige una fusión inicial filtrada vacía.
Antes de empezar
- JSON y conceptos MCP básicos
- Cliente aislado y datos inventados
Explica el límite real de la implementación y verifícalo con una muestra de evidencia explícita.
Conclusiones clave
- RRF suma contribuciones de posición de Porter y trigram.
- La proximidad se aplica después de un recorte acotado.
- El reintento difuso exige una fusión inicial filtrada vacía.
Dos listas aportan una puntuación por posición
El método privado rrfSearch de ContentStore solicita resultados Porter y trigram con modo OR. Pide al menos diez candidatos o el doble del límite recibido. Cada lista aporta el inverso de la posición con una constante de sesenta: el primer resultado suma 1/61 y el segundo 1/62. Los presentes en ambas acumulan aportes. Es una medida de posición, no una probabilidad calibrada de acierto.
El mapa de fusión identifica elementos concatenando source y title, no mediante un ID único de fila. Esto plantea una revisión concreta para documentos con encabezados repetidos: comprueba si varios bloques comparten identidad y cómo aparecen tras la fusión. Señalamos la semántica de la clave, sin afirmar un fallo de pérdida de datos demostrado ni haber ejecutado toda la ruta de base de datos.
Importa el orden entre filtrar y reordenar
searchWithFallback actualiza fuentes de archivo obsoletas antes de consultar. Con un conjunto de sesiones permitido, pide un grupo acotado mayor, filtra sesiones, recorta los resultados fusionados al límite y después aplica proximidad. Por tanto, esta reordenación no puede promover un candidato que ya quedó fuera del recorte. Aumentar candidatos y cambiar el límite final son experimentos diferentes.
El reordenador combina coincidencias del título, el intervalo más estrecho que contiene los términos y una señal de frecuencia de frases con tope. Ordena primero por ese refuerzo y después por el rango existente. Los bloques de código reciben mayor peso de título que los de prosa. No llames puntuación BM25 a todos esos valores: registra la capa y observa con una muestra qué etapa alteró el orden.
La corrección difusa es condicional
Si la fusión filtrada produce cualquier resultado, la función lo devuelve inmediatamente con la capa rrf. Solo una lista vacía alcanza la corrección de palabras y una segunda fusión. El éxito se etiqueta rrf-fuzzy; en caso contrario devuelve un array vacío. Una coincidencia inicial débil puede impedir que se intente corregir una errata. Pruébala por separado de una errata sin coincidencias iniciales.
El ejemplo calcula únicamente una contribución de posición. Es una muestra aritmética editorial, no un sustituto de ContentStore ni prueba de SQLite, raíces léxicas, limpieza de consultas y permisos. Para ampliar el análisis, lee las pruebas store-bytecap junto con las de recuperación: tamaño y fronteras de los bloques cambian los candidatos antes de aplicar cualquier fórmula de ranking.
Pasos de implementación
- 1
Sigue rrfSearch y su clave source/title.
- 2
Traza filtro, recorte y reordenación en ese orden.
- 3
Compara encabezados repetidos con únicos.
- 4
Prueba erratas sin resultados y coincidencias débiles por separado.
Ejemplo para copiar
// Muestra aritmética editorial, no el buscador completo.
const contribution = position => 1 / (60 + position);
console.log(contribution(1));
console.log(contribution(2) + contribution(2));Preguntas frecuentes
¿Un RRF alto significa que la respuesta es correcta?
No. Mide el apoyo de listas ordenadas, no exactitud factual ni confianza calibrada.
¿La corrección mejora cualquier resultado débil?
La ruta revisada solo reintenta con corrección cuando la fusión inicial filtrada no devuelve resultados.
Fuentes
- README.mdFuente verificada 2026-09-07
- package.jsonFuente verificada 2026-09-07
- LICENSEFuente verificada 2026-09-07
- src/store.tsFuente verificada 2026-09-07
- src/search/unified.tsFuente verificada 2026-09-07
- src/server.tsFuente verificada 2026-09-07
- src/executor.tsFuente verificada 2026-09-07
- src/security.tsFuente verificada 2026-09-07
- src/session/purge.tsFuente verificada 2026-09-07
- tests/store-bytecap.test.tsFuente verificada 2026-09-07