Cómo recupera MemoryFirst: denso + BM25 + grafo + reranking
Ingeniería7 min

Cómo recupera MemoryFirst: denso + BM25 + grafo + reranking

Una buena respuesta empieza por una buena recuperación. Así combinamos búsqueda semántica, léxica y de grafo, las fusionamos con RRF y reordenamos con un cross-encoder — y por qué cada pieza importa.

La parte glamurosa de un sistema de IA es la generación. La parte que decide si la respuesta es buena o basura es la recuperación. Si le das al modelo los pasajes equivocados, ninguna cantidad de prompt engineering lo salva. Así está montada la nuestra.

Una pregunta abre tres búsquedas en paralelo; se fusionan, se reordenan, y la respuesta llega con su cita.
Una pregunta abre tres búsquedas en paralelo; se fusionan, se reordenan, y la respuesta llega con su cita.

Tres recuperadores, no uno

Ningún método de búsqueda gana siempre. Por eso usamos tres en paralelo:

  • Densa (embeddings): captura el significado. "¿Cuándo vence el contrato?" encuentra "la vigencia expira el 31 de diciembre" aunque no compartan palabras.
  • BM25 (léxica): captura lo exacto. Códigos, nombres propios, números de expediente — donde el significado no basta y la cadena literal manda.
  • Grafo: captura las relaciones. Hechos conectados por entidad, no solo por similitud de texto.

Fusión: Reciprocal Rank Fusion

Tres listas de candidatos hay que combinarlas sin que una domine artificialmente. Usamos RRF, que puntúa cada documento por su posición en cada lista en vez de por scores incomparables entre sistemas. Es simple, robusto y no necesita calibrar pesos a mano.

Reranking con cross-encoder

La fusión te da un buen conjunto; el orden fino lo decide un cross-encoder que mira la pregunta y cada pasaje juntos (no por separado, como los embeddings). Es más caro, así que solo reordena el top del pool — suficiente para subir la precisión donde de verdad cuenta, sin pagar el coste sobre cientos de candidatos.

Y la pieza que lo hace fiable: degradación

Si la capa de síntesis no está disponible, la consulta devuelve los pasajes recuperados en crudo en vez de fallar. Tu agente recibe contexto útil aunque el generador tenga un mal día.

Una buena respuesta empieza por recuperar lo correcto. La generación solo pule lo que la recuperación encontró.

Toda esta tubería está detrás de una sola llamada a la API o del servidor MCP. Tú preguntas; nosotros nos ocupamos del resto.

Dale memoria a tus agentes.

La capa de memoria para IA: API compatible con OpenAI + MCP, con citas y datos en la UE.

Empezar gratis