29 de enero de 2026
Equipo QueryGen
8 min de lectura

Por que tu busqueda con IA puede estar perdiendo respuestas obvias (y como RRF lo soluciona)

Cuando tu IA dice "no se encontro informacion relevante" mientras la respuesta esta literalmente en tus mensajes, el problema no es la IA — es como la busqueda hibrida combina diferentes metodos de ranking.

Recientemente encontramos un bug desconcertante que ilustra perfectamente por que los sistemas de busqueda hibrida pueden fallar de maneras sorprendentemente obvias. Un usuario le hizo una pregunta simple a su asistente de IA, y a pesar de tener la respuesta exacta en su historial de chat, la IA afirmo con confianza que dicha informacion no existia.

El Problema

IA Perdiendo Respuestas Obvias

Pregunta del Usuario a la IA

"¿Que fecha debia poner en el acuerdo?"

Historial Real del Chat
Avisame que fecha debo poner en el acuerdo
11:57 AM
LA RESPUESTA1 de febrero estaria genial. Asi puedo empezar a trabajar en eso
12:04 PM
Genial. Mencionare esa fecha
12:06 PM
RESPUESTA DE LA IA

Revise tus mensajes, y no hay mencion en ningun lugar de que fecha debias poner en el acuerdo — ninguno de los mensajes recuperados hace referencia a una fecha de firma.

La causa raiz: Desajuste en la escala de puntuaciones

Nuestro sistema usa busqueda hibrida — combinando dos metodos de busqueda diferentes para obtener lo mejor de ambos mundos:

  • Busqueda Vectorial (Semantica): Entiende significado y contexto. Ideal para "encontrar mensajes sobre terminos del contrato" incluso si la palabra "contrato" no se usa.
  • BM25 (Palabras Clave): Coincidencia clasica de texto. Perfecto para encontrar frases exactas como "1 de febrero" o nombres especificos.

¿El problema? Estos metodos usan escalas de puntuacion completamente diferentes:

Los Datos

Desajuste en la Escala de Puntuaciones

Tipo de BusquedaMensaje EncontradoPuntuacionRanking Final
VECTOR"Segun el acuerdo... Exclusividad en Nigeria"0.65
#1Respuesta incorrecta
VECTOR"Ok. Voy a contrafirmar y enviar de vuelta"0.58
#2Respuesta incorrecta
BM25"1 de febrero estaria genial"0.016
#47Correcta pero enterrada!

El problema: Las puntuaciones de BM25 (0.016) son 40x mas pequenas que las de Vector (0.65). Al ordenar por puntuacion cruda, las coincidencias por palabras clave siempre pierden — incluso cuando son la respuesta correcta!

Cuando el usuario pregunto "¿Que fecha debo poner en el acuerdo?", BM25 encontro correctamente el mensaje "1 de febrero" en el puesto #1 (coincidio con las palabras clave exactas). Pero la busqueda vectorial lo clasifico en el puesto #47 porque semanticamente, hablar sobre una fecha no se relaciona fuertemente con discusiones generales sobre "acuerdos".

Como estabamos ordenando por puntuacion cruda, el 0.65 del Vector le ganaba al 0.016 de BM25 cada vez. La respuesta correcta quedo enterrada en la posicion #47, y solo los 10 primeros resultados se enviaron a la IA.

La solucion: Reciprocal Rank Fusion (RRF)

La solucion es elegante: en lugar de comparar puntuaciones crudas, comparar rankings. Esto se llama Reciprocal Rank Fusion (RRF), y la formula es maravillosamente simple:

Formula RRF
score = 1/(60 + rankvector) + 1/(60 + rankbm25)

Por que funciona: Estar en el puesto #1 en cualquier metodo de busqueda contribuye de igual manera a la puntuacion final. La constante 60 (llamada "k") amortigua el efecto de los rankings mas bajos para que el #1 sea significativamente mejor que el #2, pero el #47 no sea muy diferente del #48.

La Solucion

Antes vs Despues de RRF

Antes: Ordenado por PuntuacionROTO
#1Exclusividad en Nigeria0.65
#2Contrafirmar y enviar0.58
...45 resultados mas
#471 de febrero estaria genial0.016
Despues: Ordenado por RRFARREGLADO
#11 de febrero estaria genial0.025
#2Exclusividad en Nigeria0.016
#3Contrafirmar y enviar0.016
...Mas resultados

Como RRF calcula la puntuacion final

Sigamos la matematica para nuestro mensaje "1 de febrero":

Metodo de BusquedaRankingContribucion RRF
BM25 (palabras clave)#11/(60+1) = 0.0164
Vector (semantica)#471/(60+47) = 0.0093
Puntuacion RRF Total0.0257

Comparemos eso con el mensaje "Exclusividad en Nigeria" que antes era el #1:

Metodo de BusquedaRankingContribucion RRF
Vector (semantica)#11/(60+1) = 0.0164
BM25 (palabras clave)No encontrado1/(60+max) = ~0
Puntuacion RRF Total0.0164

El mensaje que era #1 en un metodo de busqueda (0.0257) ahora supera al mensaje que era #1 en un metodo de busqueda pero no aparecia en el otro (0.0164). Justo es justo.

La clave

"RRF no se preocupa por las puntuaciones crudas. Solo le importa el orden. Estar en el puesto #1 en busqueda por palabras clave tiene el mismo peso que estar en el puesto #1 en busqueda semantica. Los resultados encontrados por ambos metodos se clasifican mas alto."

¿Que pasa cuando un resultado solo aparece en una busqueda?

Para el metodo de busqueda donde un resultado no aparece, le asignamos un "ranking maximo" (el numero total de resultados + 1). Esto significa:

  • Resultados en ambas busquedas: Obtienen contribuciones de ambas, se clasifican mas alto
  • Resultados en una busqueda: Obtienen contribucion de una, mas contribucion minima de la otra
  • Empates del mismo metodo: Decididos por su ranking en el otro metodo

Esto maneja elegantemente el caso donde la busqueda semantica encuentra mensajes conceptualmente relacionados que la busqueda por palabras clave pierde (y viceversa).

Detalles de implementacion

El cambio de codigo fue directo. En lugar de:

// VIEJO: Ordenar por puntuacion cruda (roto)
results.sort((a, b) => b.score - a.score);

Ahora hacemos:

// NUEVO: Calcular puntuacion RRF desde rankings
const RRF_K = 60;
const vectorRank = vectorRanks.get(id) ?? maxRank;
const bm25Rank = bm25Ranks.get(id) ?? maxRank;
const rrfScore = 1/(RRF_K + vectorRank) + 1/(RRF_K + bm25Rank);

// Ordenar por puntuacion RRF
results.sort((a, b) => b.rrfScore - a.rrfScore);

Por que esto importa para la busqueda con IA

Los sistemas de busqueda modernos a menudo combinan multiples metodos de recuperacion:

  • Embeddings vectoriales para comprension semantica
  • BM25/TF-IDF para coincidencias exactas de palabras clave
  • Recuperacion basada en grafos para busqueda consciente de relaciones
  • Senales temporales para recencia

Cada metodo tiene diferentes distribuciones de puntuacion. RRF proporciona una forma fundamentada de combinarlos sin necesidad de normalizar puntuaciones o ajustar esquemas de ponderacion complejos.

"La belleza de RRF es su simplicidad. Sin ajuste de hiperparametros mas alla del valor k (60 funciona bien en la practica). Sin normalizacion de puntuaciones. Solo rankings y una formula."

El resultado

Despues de implementar RRF, la misma consulta "¿Que fecha debo poner en el acuerdo?" ahora recupera correctamente el mensaje "1 de febrero" en la parte superior de los resultados. La IA encuentra la respuesta inmediatamente.

Arreglado: Los mensajes con coincidencias exactas de palabras clave ahora se clasifican apropiadamente junto con resultados semanticamente similares. La respuesta correcta sube a la cima.

Conclusiones clave

  • No compares puntuaciones crudas entre diferentes metodos de busqueda — viven en escalas diferentes
  • RRF convierte puntuaciones a rankings, haciendo posible la comparacion equitativa
  • La constante k=60 esta bien establecida en la investigacion y funciona en la mayoria de los casos
  • Los resultados en multiples metodos de busqueda naturalmente se clasifican mas alto — lo cual es generalmente correcto

A veces la solucion para un comportamiento confuso de la IA no esta en la IA misma — esta en como le alimentas la informacion.

¿Quieres una busqueda con IA mas inteligente para tus conversaciones?

Querygen usa busqueda hibrida avanzada con RRF para asegurar que nunca pierdas informacion importante en tus mensajes de WhatsApp.

Prueba Querygen Gratis