---
title: "Búsqueda híbrida"
description: "La búsqueda léxica siempre funciona; la semántica y el refuerzo por grafo son opcionales y se fusionan con RRF — sin ellos sigue siendo texto completo."
---

# Búsqueda híbrida

La búsqueda en Notarium se compone de canales independientes que se complementan entre sí. La búsqueda de texto completo (léxica) está siempre disponible y no requiere configuración. La búsqueda semántica (por significado) y el conocimiento de los enlaces del grafo son capas opcionales que se apoyan sobre ella. Los resultados de los canales se fusionan en una única clasificación y, si las capas opcionales no están disponibles, la búsqueda sigue funcionando sobre el texto completo, sin errores.

## Tres canales

| Canal | Qué hace | Cuándo funciona |
|---|---|---|
| Léxico (FTS/BM25) | Encuentra coincidencias exactas de palabras y frases, ordena por BM25 | Siempre, sin configuración |
| Semántico (vectores) | Encuentra lo cercano en significado, incluso sin palabras en común | Opcional (`VECTOR_SEARCH`) |
| Refuerzo por grafo | Incorpora los vecinos de un resultado a través de `[[wiki-links]]` | Opcional (`GRAPH_BOOST`), desactivado por defecto |

El canal léxico es la base: funciona nada más arrancar, sin nada que instalar. El canal semántico añade la comprensión del significado (sinónimos, paráfrasis), y el refuerzo por grafo añade el conocimiento de los enlaces entre notas.

## Cómo se fusionan los resultados

Los canales se combinan mediante el algoritmo **RRF** (Reciprocal Rank Fusion, k=60): cada canal produce su propia lista clasificada, y RRF las combina en una clasificación común por posición, en lugar de por puntuaciones «en bruto» que no son comparables. Así, una coincidencia léxica y la cercanía semántica se ponderan juntas. La fusión ocurre a nivel de nota, por su identificador estable.

```mermaid
flowchart LR
  q([Consulta]) --> fts[Léxico · FTS/BM25]
  q --> vec[Semántico · vectores]
  q --> gr[Grafo · 1 salto]
  fts --> rrf{Fusión RRF}
  vec --> rrf
  gr --> rrf
  rrf --> res([Resultados])
```

## Si la semántica no está disponible

La capa semántica puede estar desactivada o no disponible: `VECTOR_SEARCH` no está habilitado, el stack vectorial no está instalado, el modelo no se cargó o el cálculo del vector de la consulta superó el tiempo de espera. En cualquiera de estos casos, la consulta la atiende el canal léxico: la búsqueda siempre responde y no lanza un error solo porque falte la semántica.

> [!note] La semántica es opcional
> La búsqueda vectorial arrastra un stack nativo pesado (~660 MB en disco) y carga el modelo de embeddings en memoria (cientos de MB de RAM), por lo que está desactivada por defecto en la imagen pública. Cómo activarla y qué modelo elegir se explica en [Configuración de la búsqueda](/docs/self-hosting/search-setup/).

## Dónde buscas

- **Spotlight / OmniSearch**: un salto rápido y clasificado a una nota. Aquí funciona el híbrido completo: importa la relevancia, no solo la coincidencia exacta de una palabra. Consulta [Búsqueda y Spotlight](/docs/guides/search-spotlight/).
- **Filtro del Feed** (`?q=` en [el Feed](/docs/guides/feed/)): un filtro léxico sobre el corpus; conserva las notas donde los términos realmente aparecen y se combina con los filtros por carpeta, etiqueta y fecha.

## El índice y su reconstrucción

El índice de búsqueda es conocimiento derivado: se construye a partir de los archivos y es totalmente recuperable con un reescaneo. Un índice por espacio. Cambiar el modelo de embeddings no es una migración, sino una reconstrucción de la parte vectorial desde cero. La construcción inicial del índice vectorial en un corpus grande lleva minutos, e incluso horas; durante ese tiempo la interfaz muestra un indicador «Building search index…», mientras que la búsqueda en sí sigue disponible en modo léxico.

Temas relacionados: [Grafo de conocimiento](/docs/concepts/knowledge-graph/), de dónde sale el tercer canal; [Configuración de la búsqueda](/docs/self-hosting/search-setup/), activar la semántica y elegir un nivel; [File-first](/docs/concepts/file-first/), por qué el índice es recuperable.
