NotariumDocumentación
Versión de la documentación: latest
ES

Activar la búsqueda semántica

La búsqueda de texto completo (FTS) en Notarium funciona siempre y sin configuración. La búsqueda semántica (vectorial) es una capacidad opcional: aporta un ranking híbrido por significado, pero arrastra un stack nativo pesado (onnxruntime + sqlite-vec, ~660 MB en disco) y un modelo de embeddings local que se descarga la primera vez que se activa (~600 MB en disco y cientos de MB de RAM). Por eso viene desactivada por defecto y se activa de forma deliberada. Para ver cómo funciona la búsqueda por dentro, consulta Conceptos: búsqueda.

Dos interruptores independientes

Conviene distinguir dos niveles: la instalación y el runtime:

  1. Instalación — si el stack vectorial nativo está presente en node_modules. La imagen de Docker lo incluye siempre, así que activarlo dentro del contenedor no requiere reconstruir nada. Al ejecutar desde el código fuente, el make deps estándar no lo instala (un node_modules local queda ~660 MB más ligero) — para trabajar con vectores en local necesitas make deps-vector.
  2. Runtime — la variable VECTOR_SEARCH. En la imagen publicada su valor por defecto es off.

Para la búsqueda semántica en Docker basta con activar el interruptor de runtime: el stack ya está en su sitio.

Cómo activarla

docker run -d --name notarium \
  -p 3000:3000 \
  -v notarium-data:/data \
  -e VECTOR_SEARCH=on \
  docouno/notarium:latest

(Un único volumen /data guarda todo el estado — la base de datos de metadatos, los índices, tus notas, los artefactos de exportación; lo mismo que en una ejecución normal, consulta Instalación. Aquí solo se le añade VECTOR_SEARCH=on.)

Al activarla por primera vez, el modelo por defecto (bge-m3) se descarga (~600 MB en disco) y ocupa cientos de MB de RAM. La indexación corre en segundo plano: la búsqueda de texto completo está disponible de inmediato, mientras los vectores se ponen al día.

Niveles de modelo

El modelo se elige con la pareja EMBED_MODEL + EMBED_DIMENSIONS (la dimensionalidad tiene que coincidir con el modelo) — es un ajuste de runtime sobre una única imagen, no una compilación aparte:

NivelVariablesRAMCuándo
offVECTOR_SEARCH=off0Una máquina de pocos recursos, o la búsqueda por palabras clave basta. El valor por defecto de la imagen.
compactVECTOR_SEARCH=on, EMBED_MODEL=Xenova/multilingual-e5-small, EMBED_DIMENSIONS=384~120 MBHomelab, un VPS pequeño.
fullVECTOR_SEARCH=on (por defecto: bge-m3, 1024)~600 MBUna máquina potente; más de 100 idiomas, contexto largo.
Modelos e5 asimétricos

El nivel compact (e5) exige los prefijos EMBED_QUERY_PREFIX="query: " y EMBED_PASSAGE_PREFIX="passage: " — olvidarlos degrada la calidad de la búsqueda en silencio. Para el bge-m3 simétrico ocurre lo contrario: no debes definir los prefijos en absoluto.

Recursos en una máquina ajustada

En un host sin swap y con ~6 GB de RAM, la indexación inicial de bge-m3 puede chocar con el techo de memoria. Dos palancas: usar el nivel compact (e5-small), o definir EMBED_CPU_MEM_ARENA=off — esto mantiene el consumo en torno a ~1,9 GB a cambio de una pequeña ralentización. Para la lista completa de parámetros de embeddings, consulta la Referencia.

Repliegue a la búsqueda de texto completo

Si VECTOR_SEARCH=off, o si el stack nativo no se carga por cualquier motivo, la búsqueda sigue funcionando sobre el texto completo — sin error, y los resultados se ven igual. La búsqueda semántica es un canal de ranking adicional por encima de la FTS, siempre activa, no una dependencia obligatoria. Una instancia sin vectores es una instancia plenamente funcional.