Búsqueda híbrida con BM25: combina vectores y mide el resultado

Combina BM25 y búsqueda vectorial con RRF o puntuaciones ponderadas. Aprende a implementarlo en tu base actual y a medir recall con consultas etiquetadas.

Publicado el

Búsqueda híbrida con BM25: combina vectores y mide el resultado

Si el buscador entiende la pregunta, pero no encuentra el código del producto, añade una rama de recuperación léxica con BM25 antes de cambiar el modelo de embeddings. La búsqueda híbrida combina 2 listas de candidatos —coincidencias por palabras clave y coincidencias vectoriales— y las fusiona en una única clasificación. Empieza con la fusión por rango recíproco, conserva de forma explícita las coincidencias exactas de identificadores y mantén el cambio solo si un conjunto de consultas etiquetadas demuestra una mejora de recall sin perjudicar las consultas que ya funcionan.

Documentación verificada el 24 de octubre de 2026. Las indicaciones de implementación que siguen se basan en la documentación vigente de Elasticsearch, Weaviate y Pinecone. Los parámetros de evaluación son una propuesta de protocolo inicial, no mejoras medidas ni resultados de pruebas de los proveedores.

¿Qué es la búsqueda híbrida con BM25?

La búsqueda híbrida permite que tanto las palabras concretas como su significado influyan en la recuperación de resultados. En la arquitectura que describe esta guía, la búsqueda por palabras clave genera una lista ordenada, la búsqueda vectorial genera otra y un método de fusión las combina. La explicación de Weaviate detalla ambas ramas y cómo se unen.

Imagina a dos personas investigando la misma consulta de soporte. Una busca los nombres y mensajes de error exactos en un índice. La otra busca ideas relacionadas, incluidas respuestas redactadas de otra manera. Combinas sus selecciones en lugar de pedirle a una sola persona que haga ambos trabajos.

BM25 es una función de clasificación léxica que puntúa los documentos según los términos de la consulta que contienen. La frecuencia de los términos y la longitud del documento influyen en esa puntuación; por eso aporta más que un simple recuento de palabras coincidentes. Elasticsearch utiliza BM25 como función de similitud de texto predeterminada. La referencia de similitud de Elastic documenta esos factores.

La búsqueda vectorial compara embeddings, representaciones numéricas del contenido, para encontrar significados similares. Puede relacionar «la sesión se me cierra constantemente» con un documento sobre la caducidad de las sesiones, aunque las palabras sean distintas. Nuestra guía de búsqueda semántica explica esta forma de recuperar información.

Ante una consulta ilustrativa como ERR_SESSION_EXPIRED after login, la rama léxica permite que el mensaje de error literal llegue a los resultados. La rama semántica puede aportar indicaciones sobre sesiones de autenticación y su renovación. La fusión decide el orden final. El ejemplo describe el comportamiento buscado; no afirma que una base sin configurar vaya a producir una clasificación concreta.

Una consulta se divide en una rama BM25 y otra de recuperación vectorial, que se unen mediante fusión antes de llegar a los resultados
Recupera candidatos por ambas ramas y fusiónalos en una única clasificación.

La búsqueda vectorial híbrida también necesita reglas para las coincidencias exactas

Una rama de palabras clave no garantiza la coincidencia exacta de identificadores. El análisis de texto, que convierte cadenas de caracteres en tokens que se pueden buscar, puede modificar lo que se indexa. Por ejemplo, el analizador estándar de Elastic divide una expresión con guiones en el ejemplo de su documentación. Comprueba cómo trata el analizador configurado tus propios SKU y códigos de error. Documentación del analizador estándar.

Guarda los identificadores en un campo específico de coincidencia exacta cuando su escritura determine el elemento solicitado. Elastic documenta el campo keyword para este tipo de valor estructurado. Una consulta por el SKU ficticio AX-BLUE no debería convertirse sin aviso en una recomendación de AX-GREEN porque sus descripciones se parecen. Referencia del campo keyword.

Criterio de decisión: si reconoces un identificador único y el comportamiento previsto del producto exige una coincidencia exacta, dirige la consulta a esa búsqueda. Usa la clasificación híbrida para preguntas que combinen un identificador con una necesidad más amplia, como encontrar instrucciones para resolver un problema con ese artículo.

RRF o puntuaciones ponderadas: cómo combinar los resultados

Empieza con la fusión por rango recíproco si necesitas una referencia inicial que no exija calibrar escalas de puntuación distintas. Considera las puntuaciones ponderadas cuando dispongas de etiquetas para ajustar el equilibrio y tengas motivos para conservar las diferencias entre puntuaciones.

La fusión por rango recíproco utiliza las posiciones

La fusión por rango recíproco, o RRF, suma una contribución por cada lista en la que aparece un documento:

RRF(documento) = suma de 1 / (c + posición) en las listas recuperadas.

Las posiciones se cuentan desde la primera. Si un documento no aparece en una lista, esa lista no aporta nada a su puntuación. Gordon V. Cormack, Charles L. A. Clarke y Stefan Büttcher presentaron RRF en su artículo de SIGIR 2009. En sus experimentos fijaron la constante en 60. El artículo la denomina k; aquí la llamamos c para no confundirla con el número de resultados de recall@k.

RRF resulta práctico porque una puntuación BM25 alta y una puntuación vectorial alta no necesitan significar lo mismo. Solo importan sus posiciones. La implementación de RRF de Pinecone especifica que las posiciones empiezan en uno y qué ocurre cuando falta un documento.

Conviene comprobar una consecuencia. En un ejemplo construido para ilustrarlo, el documento A ocupa la primera posición de la lista por palabras clave y no aparece en la vectorial. El documento B ocupa la segunda posición en ambas. Con c = 60, A obtiene 1/61 y B obtiene 2/62. Gana B. Es un cálculo propio a partir de la fórmula, no el resultado de una prueba de búsqueda.

Las puntuaciones ponderadas conservan las diferencias entre resultados

La fusión de puntuaciones ponderadas combina las puntuaciones de relevancia después de hacer comparables sus escalas. Una fórmula habitual es:

puntuación = alpha × puntuación vectorial normalizada + (1 − alpha) × puntuación por palabras clave normalizada.

El peso alpha controla el equilibrio. Un valor inicial de 0.5 asigna coeficientes iguales; eso no demuestra que ambas señales sean igual de útiles ni que el ajuste sea óptimo. Documenta la normalización y la ponderación juntas, porque cambiar cualquiera de ellas puede alterar la clasificación.

El recuperador lineal de Elasticsearch admite una suma ponderada con normalizadores como minmax. La fusión por puntuación relativa de Weaviate conserva las diferencias relativas dentro de cada conjunto de resultados, mientras que la fusión basada en posiciones las descarta.

Usa RRF como primera referencia de comparación; conserva la fusión ponderada solo si las consultas reservadas para evaluación la respaldan. No sumes las puntuaciones BM25 sin normalizar a las de similitud vectorial suponiendo que el resultado tendrá sentido. Registra también cuántos candidatos recuperas: cambiar los resultados que entran en una lista normalizada puede modificar su rango de puntuaciones.

¿Cuándo mejora la búsqueda híbrida a la búsqueda solo vectorial?

La búsqueda híbrida ayuda cuando la rama de palabras clave recupera contenido relevante que la vectorial no encuentra y la fusión lo mantiene en una posición suficientemente alta para que resulte útil. Es una condición que puedes comprobar, no una afirmación universal de precisión.

Los casos más propicios para probarla son:

  • Búsqueda de soporte: mensajes de error literales, nombres de funciones y terminología de cuentas combinados con descripciones de síntomas.
  • Búsqueda en catálogos: nombres exactos de productos o SKU combinados con necesidades como compatibilidad o repuestos.
  • Búsqueda en conocimiento interno: nombres de proyectos y abreviaturas combinados con preguntas en lenguaje natural.

La introducción a la búsqueda híbrida de Pinecone señala específicamente los códigos de producto, los mensajes de error y los nombres como señales de palabras clave, junto con la recuperación densa para captar el significado.

Si solo necesitas buscar identificadores, empieza por una búsqueda exacta fiable. Si la búsqueda vectorial ya resuelve bien las consultas sobre tu corpus, espera a tener pruebas de un problema de recuperación antes de añadir otra rama.

El límite práctico es la cobertura de candidatos. La fusión solo puede ordenar la unión de los documentos recuperados por sus ramas. Si ninguna encuentra el pasaje relevante, cambiar la fusión no lo recuperará. Si el pasaje aparece antes de la fusión, pero desaparece de los resultados finales, investiga la clasificación y el recorte de la lista.

Añade búsqueda híbrida a la base que ya utilizas

Mantén la base actual si ofrece las funciones de recuperación que necesitas. Cambiar a la vez de base de datos y de estrategia de recuperación dificulta saber qué produjo la mejora.

La siguiente tabla distingue dónde se combinan los resultados; no es una clasificación de proveedores.

BaseCombinación documentadaQué debes configurar
ElasticsearchRRF nativo o fusión lineal normalizadaRecuperadores secundarios, ventana de candidatos, filtros y método de fusión
WeaviateFusión nativa de BM25F y vectoresPropiedades de búsqueda, método de fusión y alpha explícito
PineconeCombinación nativa de vectores densos y dispersos; RRF de BM25 y recuperación densa en el clienteElegir el patrón de API, mantener los ID y ajustar la capa adecuada

Búsqueda híbrida con Elasticsearch

Elasticsearch, un motor de búsqueda con recuperación de texto y vectores, permite colocar un recuperador de texto standard y uno vectorial knn dentro de un recuperador rrf. La referencia oficial del recuperador RRF documenta esta configuración y su ventana de candidatos.

Página de producto de búsqueda híbrida de Elastic
Búsqueda híbrida con Elasticsearch

En un índice existente, conserva el texto que se puede buscar y su embedding bajo el mismo ID de documento. Ejecuta ambas ramas sobre el mismo contenido admisible y después aplica la fusión. Mantén las mismas restricciones de tenant, permisos y versión del producto en ambas ramas.

Puedes ejecutar la siguiente petición después de configurar ES_URL y ES_API_KEY. Presupone un índice existente llamado docs, un campo de texto llamado text, un campo de vectores densos llamado embedding y un archivo query-vector.json que contenga el array real del embedding de la consulta. Genera ese array con el mismo modelo utilizado para los documentos indexados. El comando requiere jq y curl.

Bash
jq -n --slurpfile v query-vector.json \
  --arg q 'ERR_SESSION_EXPIRED after login' \
  '{
    size: 10,
    retriever: {
      rrf: {
        retrievers: [
          {standard: {query: {match: {text: $q}}}},
          {knn: {
            field: "embedding",
            query_vector: $v[0],
            k: 50,
            num_candidates: 100
          }}
        ],
        rank_window_size: 50,
        rank_constant: 60
      }
    }
  }' > hybrid-request.json

curl --fail-with-body "$ES_URL/docs/_search" \
  -H "Authorization: ApiKey $ES_API_KEY" \
  -H 'Content-Type: application/json' \
  --data-binary @hybrid-request.json

Estos parámetros de evaluación son ilustrativos. size es el número final de resultados; rank_window_size controla cuántos resultados de cada recuperador secundario pueden participar en la fusión. No copies este ejemplo sin filtros en una aplicación con control de permisos sin añadir sus restricciones de acceso. Elastic documenta un filter en el recuperador principal que se aplica a los secundarios según sus especificaciones.

El límite: una ventana demasiado estrecha en un recuperador secundario puede descartar precisamente el resultado que esperabas rescatar con la búsqueda híbrida. Compara los candidatos de cada rama con los resultados finales antes de ajustar la fusión. Si cambias al recuperador lineal, configura la normalización junto con los pesos.

Búsqueda híbrida con Weaviate

Weaviate, una base de datos con recuperación de texto y vectores, ofrece búsqueda híbrida mediante collection.query.hybrid. Su componente léxico es BM25F, la variante que admite varios campos. La documentación de consultas híbridas explica las propiedades en las que se puede buscar, la selección del método de fusión y las explicaciones de las puntuaciones.

Página de la función de búsqueda híbrida de Weaviate
Búsqueda híbrida con Weaviate

Configura query_properties para que apunte a los campos que aportan señales léxicas útiles, como títulos, textos de error y nombres de productos. Proporciona el vector de la consulta si tu aplicación genera embeddings, o utiliza la vectorización configurada en la colección. Define fusion_type de forma explícita al comparar métodos de fusión y solicita explain_score para diagnosticar por qué cambió de posición un resultado.

Define también alpha de forma explícita: 0 selecciona la búsqueda por palabras clave y 1, la vectorial. La documentación actual advierte que, si se omite, la ponderación efectiva depende del cliente. relativeScoreFusion es el método de fusión predeterminado; también está disponible rankedFusion. Referencia de fusión de Weaviate.

El límite: un peso no puede compensar un campo ausente de la búsqueda ni un token de identificador alterado. Inspecciona la contribución léxica antes de concluir que necesitas reemplazar el modelo de embeddings. Usa los extremos del rango de ponderación —solo vectores y solo palabras clave— como referencias de diagnóstico y después evalúa la combinación.

Búsqueda híbrida con Pinecone

Pinecone, una base de datos de recuperación, documenta distintos patrones de búsqueda híbrida. Elige el patrón antes de copiar un ejemplo: la combinación de vectores densos y dispersos en el servidor y RRF en el cliente son implementaciones diferentes. Introducción a la búsqueda híbrida de Pinecone.

Documentación de Pinecone que distingue el filtrado, la fusión en el cliente y la combinación en el servidor
Documentación de búsqueda híbrida de Pinecone

Para combinar BM25 y recuperación densa, el patrón con Documents API ejecuta una búsqueda de texto completo y otra de vectores densos, y después fusiona sus ID de documento ordenados con RRF en la aplicación. La guía de RRF de Pinecone incluye esa implementación en el cliente.

Para la combinación nativa de vectores densos y dispersos, Vectors API puede almacenar ambas representaciones en cada registro y combinarlas en una sola consulta. Su guía de índice único exige vector_type="dense" y metric="dotproduct"; el cliente escala los vectores de consulta para establecer su influencia relativa.

Un vector disperso es una representación, no una prueba de que se haya generado con BM25. Especifica el modelo léxico o la función de puntuación de texto completo en tus notas de arquitectura.

El límite: aplicar un filtro por palabras clave y después ordenar por vectores densos no equivale a dejar que ambas señales influyan en la clasificación. Un filtro elimina candidatos; no puede recuperar una coincidencia por sinónimos que ya excluyó. Usa un filtro para una condición obligatoria y la fusión cuando cualquiera de las ramas de recuperación deba poder aportar un resultado.

¿Qué aporta la búsqueda híbrida a RAG?

La búsqueda híbrida modifica la etapa de recuperación de la generación aumentada por recuperación, o RAG, en la que una aplicación proporciona fuentes recuperadas a un modelo de lenguaje antes de que responda. No sustituye la etapa de generación ni demuestra que la respuesta sea correcta.

Mantén una unidad de recuperación coherente. Si la rama de palabras clave devuelve documentos completos y la vectorial devuelve pasajes, decide cómo se relacionan sus ID antes de fusionarlos. De lo contrario, varios pasajes de una misma fuente pueden ocupar la selección y desplazar otras fuentes relevantes. Nuestra guía sobre bases de datos vectoriales explica los fundamentos del almacenamiento y la recuperación.

El RAG con agentes añade decisiones sobre qué acción de recuperación ejecutar o si es necesario volver a buscar. Un recuperador híbrido puede ser una de esas acciones. Si un bot de soporte no encuentra un código de error literal, corrige y evalúa ese recuperador antes de añadir más orquestación.

Mantén fijos el generador y el prompt durante la comparación de métodos de recuperación. Si mejora el grupo de consultas con términos exactos, pero la recuperación de paráfrasis sigue siendo débil, utiliza las mismas consultas etiquetadas para comparar modelos de embeddings. Cambiar a la vez los embeddings, la segmentación y la fusión impide atribuir el resultado a un cambio concreto.

Mide recall@k antes y después

Usa un conjunto pequeño de consultas etiquetadas y compara la recuperación solo por palabras clave, solo vectorial e híbrida con las mismas respuestas de referencia. La fluidez de una respuesta generada no es una métrica de recuperación.

Recall@k = ID relevantes recuperados entre los primeros k resultados ÷ todos los ID etiquetados como relevantes para esa consulta. Calcula la media de los valores por consulta para obtener el recall@k macro. Si las etiquetas están incompletas, presenta el resultado como recall respecto a los juicios de relevancia conocidos; no demuestra el recall sobre todos los elementos relevantes del corpus.

  1. Prepara un conjunto pequeño de consultas

    Empieza con 60 consultas que tengan respuesta: 20 con términos exactos, 20 paráfrasis y 20 consultas mixtas. Son grupos de carga de trabajo sugeridos, no una garantía de tamaño muestral suficiente. Recurre a búsquedas reales siempre que sea posible e incluye nombres, SKU y mensajes de error que fallen actualmente.

    Reserva la mitad de cada grupo para desarrollo y la otra mitad para una evaluación independiente. Añade por separado 6 consultas deliberadamente sin respuesta; revisa su comportamiento, pero exclúyelas del cálculo de recall porque su conjunto de elementos relevantes está vacío y, por tanto, el denominador es nulo.

  2. Etiqueta las unidades de recuperación relevantes

    Para cada consulta, registra su ID, su grupo y todos los ID de documentos o pasajes que puedas identificar como relevantes. Reúne candidatos de los tres métodos de recuperación, añade respuestas conocidas que ninguno haya recuperado y evalúalos sin saber qué método los aportó. Utiliza ID estables y la misma unidad —documento o pasaje— en todo el proceso.

  3. Fija las condiciones de la comparación

    Utiliza la misma instantánea del corpus, los mismos permisos, el mismo modelo de embeddings y la misma segmentación. Empieza con un k final de 10 y 50 candidatos por cada rama híbrida. Son parámetros iniciales que debes investigar, no valores óptimos. Desactiva el reranking para la primera comparación.

    Exporta los ID finales ordenados de cada método. Guarda también las listas de candidatos léxicos y vectoriales antes de la fusión para distinguir un problema de ausencia de candidatos de uno de clasificación.

  4. Ajusta la configuración y después evalúa el conjunto reservado

    Ajusta la fusión y el número de candidatos con la mitad destinada a desarrollo. Selecciona la configuración y evalúa una sola vez la mitad reservada. Informa de los resultados de cada grupo y del promedio global, e inspecciona las consultas concretas que empeoraron. Una pequeña mejora media justifica seguir investigando, pero no constituye una prueba estadística.

Se comparan ejecuciones de recuperación vectorial e híbrida con las mismas consultas, etiquetas de relevancia y métrica de recall
Usa las mismas consultas y etiquetas de relevancia en ambas ejecuciones; la ilustración no presenta resultados medidos.

Ejecuta el evaluador local de recall

Guarda el siguiente código como evaluate_recall.py. Solo utiliza la biblioteca estándar de Python 3. qrels.jsonl contiene un objeto JSON por consulta, con los campos qid, slice y relevant. Cada archivo de resultados relaciona un ID de consulta con la lista ordenada de ID devueltos.

Por ejemplo, un registro de etiquetas podría ser {"qid":"q-exact","slice":"exact","relevant":["guide-login"]}. Un archivo de resultados podría contener {"q-exact":["guide-reset","guide-login"]}. Son ejemplos de formato, no resultados de búsqueda de un sistema probado. Incluye todas las consultas etiquetadas en cada archivo de resultados y utiliza una lista vacía cuando la recuperación no haya devuelto nada.

Python
import json
import sys
from collections import defaultdict
from statistics import mean

qrels_path, bm25_path, vector_path, hybrid_path, cutoff = sys.argv[1:]
k = int(cutoff)
if k < 1:
    raise ValueError("k must be positive")

with open(qrels_path, encoding="utf-8") as f:
    labels = [json.loads(line) for line in f if line.strip()]
if not labels or len({r["qid"] for r in labels}) != len(labels):
    raise ValueError("Labels must be nonempty with unique query IDs")

runs = {}
for name, path in (("bm25", bm25_path), ("vector", vector_path),
                   ("hybrid", hybrid_path)):
    with open(path, encoding="utf-8") as f:
        runs[name] = json.load(f)
    missing = {r["qid"] for r in labels} - runs[name].keys()
    if missing:
        raise ValueError(f"{name} is missing query IDs: {sorted(missing)}")

groups = defaultdict(list)
skipped = 0
for row in labels:
    relevant = set(row["relevant"])
    if not relevant:
        skipped += 1
        continue
    scores = {}
    for name, run in runs.items():
        unique_ids = list(dict.fromkeys(run[row["qid"]]))
        scores[name] = len(relevant & set(unique_ids[:k])) / len(relevant)
    groups["overall"].append(scores)
    groups["slice:" + row["slice"]].append(scores)

if not groups:
    raise ValueError("No answerable queries to score")
for group, rows in sorted(groups.items()):
    values = {name: mean(r[name] for r in rows) for name in runs}
    delta = values["hybrid"] - values["vector"]
    report = " ".join(f"{name}={v:.3f}" for name, v in values.items())
    print(f"{group} n={len(rows)} recall@{k} {report} delta={delta:+.3f}")
print(f"Excluded no-answer queries: {skipped}")

Ejecútalo con las etiquetas y las exportaciones del conjunto reservado para evaluación:

Bash
python3 evaluate_recall.py qrels.jsonl bm25.json vector.json hybrid.json 10

El script elimina los ID duplicados antes de aplicar el límite de resultados. Utiliza esa misma política de eliminación de duplicados en la aplicación. Informa del cambio de la búsqueda híbrida respecto a la vectorial y muestra también la referencia por palabras clave, para que un sistema léxico eficaz no quede fuera de la comparación.

Lleva el cambio a producción cuando mejoren los grupos de consultas relevantes y los retrocesos sean aceptables según los requisitos del producto. Si mejoran los candidatos, pero no el recall final, ajusta la fusión o el límite de resultados. Si mejora el recall final, revisa por separado el orden de los resultados, la corrección de las respuestas generadas y la latencia de extremo a extremo. Recall no mide ninguno de esos aspectos.

Qué se exagera y cuál es el siguiente paso

Decir que «la búsqueda híbrida ofrece lo mejor de ambos mundos» oculta la decisión de ingeniería. Puede ampliar la cobertura útil, pero también da a otra rama de recuperación influencia sobre la lista final. RRF puede hacer bajar una coincidencia exacta; la fusión ponderada puede favorecer a la señal cuya escala de puntuación o normalización se comporte de manera distinta. Ninguna de las dos soluciona la falta de contenido en las fuentes.

Los equipos de desarrollo deberían actuar ya si la inspección revela que faltan documentos relevantes con términos exactos entre los candidatos vectoriales. Añade la rama léxica, mantén coherentes la identidad de los documentos y los permisos, y ejecuta la comparación con consultas etiquetadas.

Los responsables de operación deberían posponer el despliegue si el problema actual es contenido desactualizado, falta de permisos o ausencia de etiquetas de relevancia. Resuelve esos requisitos previos y después compara las estrategias de recuperación.

Los equipos con una búsqueda de identificadores fiable no necesitan cambios hasta que requieran búsquedas más amplias. Conserva la ruta de búsqueda exacta que funciona y evalúa por separado la búsqueda híbrida para preguntas en lenguaje natural.

Para empezar el lunes: reúne las búsquedas que fallan, etiqueta las fuentes esperadas y ejecuta el recuperador vectorial existente junto a una referencia por palabras clave. Añade la fusión cuando ya puedas ver qué aporta cada rama. Conserva la configuración que demuestre su valor con las consultas reservadas para evaluación.

Preguntas frecuentes

¿BM25 es búsqueda híbrida?

No. BM25 es una función de clasificación léxica. Combinar sus resultados con una rama de recuperación vectorial es una forma de búsqueda híbrida.

¿ChatGPT utiliza búsqueda semántica?

No puedes determinar el algoritmo de recuperación solo a partir de una respuesta generada. Si construyes un sistema alrededor de un modelo de lenguaje, inspecciona la ruta de recuperación configurada en lugar de dar por hecho que utiliza BM25, vectores o RRF.

¿Qué es la búsqueda semántica? ¿Puedes dar un ejemplo?

Una consulta como «la sesión se me cierra constantemente» puede encontrar instrucciones sobre la caducidad de las sesiones aunque estén redactadas de otra manera. Eso es recuperación basada en el significado; un mensaje de error exacto puede seguir necesitando coincidencia léxica.

¿Cuál sería un ejemplo de búsqueda híbrida?

Para ERR_SESSION_EXPIRED after login, recupera coincidencias literales del mensaje de error con la rama de palabras clave e indicaciones relacionadas con las sesiones mediante la rama vectorial. Fusiona los candidatos y después comprueba las fuentes esperadas con tus etiquetas de relevancia.

¿Cuál es la principal diferencia entre búsqueda híbrida y vectorial?

La búsqueda solo vectorial recupera contenido por similitud de embeddings. El enfoque híbrido descrito aquí también utiliza una rama de palabras clave y combina las señales en una única lista de resultados.

¿La búsqueda híbrida y la semántica son lo mismo?

No. La recuperación semántica puede ser un componente de la búsqueda híbrida. El término híbrida describe la combinación de señales de recuperación; no especifica un único algoritmo de fusión.

¿Google utiliza búsqueda semántica?

Google Search incluye la comprensión semántica entre sus sistemas de clasificación. Google documenta BERT y la coincidencia neuronal en su guía de sistemas de clasificación. Eso no demuestra que su arquitectura global sea el diseño de BM25 y vectores descrito aquí.

¿En qué se diferencia RAG de la búsqueda semántica?

RAG recupera fuentes y las utiliza durante la generación de la respuesta. La búsqueda semántica es un método de recuperación que puede aportar esas fuentes. Una aplicación RAG también puede utilizar recuperación por palabras clave o híbrida.

¿Qué es la búsqueda híbrida y cómo funciona?

En la arquitectura de esta guía, ejecuta la recuperación por palabras clave y la vectorial sobre el contenido admisible, une los candidatos mediante ID estables y ordénalos con RRF o con un método de puntuaciones ponderadas definido de forma deliberada. Evalúa los resultados finales con consultas etiquetadas antes del despliegue.

Recibe guías prácticas de desarrollo en la newsletter.

Publicado
Categoría
Build
Artículos relacionados
Mezcla de expertos: qué revelan los parámetros activos y totales

Mezcla de expertos: qué revelan los parámetros activos y totales

Cómo funciona la mezcla de expertos (MoE), qué diferencia los parámetros activos de los totales y qué implica al usar una API o alojar el modelo por tu cuenta.24 oct 2026Build
LLM evaluation: valida cada cambio antes de publicar

LLM evaluation: valida cada cambio antes de publicar

Aplica la evaluación de LLM con un ejemplo de 20 casos: define criterios, mide la versión actual y valida cada cambio antes de aprobar una nueva versión.24 oct 2026Build
Tokens por segundo: mide la velocidad real de un LLM

Tokens por segundo: mide la velocidad real de un LLM

Aprende a medir los tokens por segundo de un LLM, la espera hasta el primer token y la latencia total para comparar proveedores con las tareas de tu aplicación.24 oct 2026Build
LLMOps en producción: qué controlar y por dónde empezar

LLMOps en producción: qué controlar y por dónde empezar

Qué es LLMOps, cómo se diferencia de MLOps y qué controles de evaluación, trazas, permisos y recuperación necesita una aplicación con LLM en producción.23 oct 2026Build
Salidas estructuradas: cómo usarlas en OpenAI, Claude y Gemini

Salidas estructuradas: cómo usarlas en OpenAI, Claude y Gemini

Aprende a usar salidas estructuradas en OpenAI, Claude y Gemini: límites de los esquemas, extracción de facturas, validación, reintentos y streaming.23 oct 2026Build
Alternativas a Railway en 2026: dónde alojar tu aplicación

Alternativas a Railway en 2026: dónde alojar tu aplicación

Compara alternativas a Railway para servicios web, Postgres, workers y cron: precios, gestión de secretos y pasos para ensayar la migración de tu aplicación.22 oct 2026Build
Gumloop: análisis, precios y automatización con IA

Gumloop: análisis, precios y automatización con IA

Analizamos Gumloop para investigar clientes, procesar documentos y preparar correos: configuración, precios, créditos, aprobaciones y alternativas.22 oct 2026Build
Datos sintéticos: cómo generarlos para LLM y pruebas de software

Datos sintéticos: cómo generarlos para LLM y pruebas de software

Aprende a generar datos sintéticos para evaluar y ajustar LLM y probar software, con ejemplos, filtros, revisión humana y condiciones de uso de proveedores.22 oct 2026Build
Newsletter

Una carta, cada domingo.Sistemas que funcionan, no opiniones calientes.

Semanal. Sin spam. Cancele cuando quiera.