Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

Revisa las opciones de implementación

Puedes estructurar tu clúster con diferentes tipos de implementaciones, proveedores de nube y niveles de clúster para satisfacer las necesidades de un entorno de preproducción o producción. Utilice estas recomendaciones para seleccionar el tipo de implementación, el proveedor de nube y la región, así como los niveles de clúster y búsqueda para realizar una búsqueda vectorial.

Entorno
Tipo de implementación
Nivel de clúster
Región del Proveedor de la Nube
Arquitectura de nodos

Consultas de prueba

Flex cluster, dedicated cluster

Local deployment
Free cluster or higher tier

N/A
All


N/A

Los procesos de MongoDB y búsqueda se ejecutan en el mismo nodo

Prototipado de aplicaciones

clúster dedicado

Grupo flexible, M10, M20, o nivel superior

Todo

Los procesos de MongoDB y búsqueda se ejecutan en el mismo nodo

Producción

Clúster dedicado con nodos de búsqueda independientes

M10 o nivel de clúster igual o superior y S30 o nivel de búsqueda igual o superior

AWS y Azure en algunos regiones o Google Cloud en todas las regiones

Los procesos de MongoDB y Search se ejecutan en diferentes nodos

Para obtener más información sobre estos modelos de implementación, revisa las siguientes secciones:

  • Entornos de prueba y creación de prototipos

  • Ambiente de producción

MongoDB Vector Search mantiene todo el índice en la memoria, por lo que debes asegurarte de que haya suficiente memoria para el índice de MongoDB Vector Search y JVM si tu conjunto de datos incluye vectores de precisión total. Cada índice es una combinación de los vectores que se están indexando y metadatos adicionales. El tamaño del índice está determinado principalmente por el tamaño de los vectores que estás indexando, siendo el espacio de los metadatos normalmente relativamente nominal.

Cuando no se utiliza cuantización, MongoDB Vector Search almacena los vectores de fidelidad completa en memoria. Si activas la cuantificación automática, MongoDB Vector Search almacena los vectores cuantizados, que requieren muchos menos recursos, en la memoria y los vectores de fidelidad total en el disco. Puede ver la diferencia entre los requisitos de disco y memoria para los índices vectoriales consultando el Size y Required Memory columnas en la página de búsqueda de MongoDB de Atlas UI.

Considera los siguientes requisitos para un único vector:

Modelo de incrustación
Dimensión vectorial
Requisitos de espacio

Voyage AI voyage_3_large

2048

8kb (for float)
2.14kb (for int8)
0.334kb (for int1)

OpenAI text-embedding-ada-002

1536

6kb

Google text-embedding-gecko

768

3kb

Cohere embed-english-v3.0

1024

4kb (for float)
1.07kb (for int8)
0.167kb (for int1)

Vectores cuantificados de BinData. Para más información, consulte Ingesta de vectores cuantificados.

El espacio requerido se escala linealmente con el número de vectores que se están indexando y con la dimensionalidad del vector. También puedes usar la métrica Search Index Size para determinar la cantidad de espacio y memoria que necesitas en tus Nodos de búsqueda.

Si utilizas BinData o vectores cuantizados, reduces significativamente los requisitos de recursos en comparación con no utilizar binData o vectores cuantizados. Vas a notar:

  • El almacenamiento en disco de los vectores en mongod se reduce un 66% cuando se utilizan binData vectores.

  • El uso de RAM de los vectores en mongot se reduce en 3.75x (escalar) o 24x (binario) debido a la compresión de vectores al utilizar quantización automática de vectores o ingestión de vectores cuantizados.

Cuando se utiliza la cuantificación automática, Atlas almacena los vectores de precisión completa para la repuntuación o la búsqueda exacta en el disco, con un uso mínimo de RAM y caché para la repuntuación.

Si habilitas la cuantización automática en tu definición de índice de Vector Search de MongoDB, también debes considerar el espacio en disco al dimensionar tu clúster. Esto se debe a que MongoDB Vector Search también almacena vectores de precisión completa en el disco para la búsqueda ENN y para la reevaluación si has configurado la cuantización automática. Por lo tanto, asegúrate de que haya una relación adecuada disco/RAM en el hardware que utilices. Considera configurar nodos de búsqueda que puedan acomodar aproximadamente una proporción de almacenamiento a RAM de 4:1 para la cuantización escalar o una proporción de almacenamiento a RAM de 24:1 para la cuantización binaria.

Ejemplo

Este ejemplo demuestra cómo configurar la cuantificación binaria para 10 millones de incrustaciones de 1024dimensión de Voyage AI almacenadas en el campo denominado my-embeddings:

{
"fields":[
{
"type": "vector",
"path": "my-embeddings",
"numDimensions": 1024,
"similarity": "euclidean",
"quantization": "binary"
}
]
}

Utilice la siguiente fórmula para calcular aproximadamente el espacio en disco para su índice habilitado con cuantificación binaria con rescore:

Original index size * (25/24)

Aquí, el 24 en el denominador representa el tamaño del índice original dividido en 24 partes para facilitar la representación de fracciones. El 25 en el numerador representa una asignación de espacio adicional, que es aproximadamente 1/24 del tamaño del índice original, para los datos adicionales necesarios para almacenar vectores binarios. Tanto el índice original como los Mundos Pequeños Navegables Jerárquicos Los gráficos aún se almacenan en el disco. El factor de sobredimensionamiento es 1/24 en lugar de 1/32 porque el gráfico HNSW no está comprimido.

Ejemplo

Supongamos que el tamaño original de su índice es 1 GB. Puede calcular el tamaño del índice cuantificado en binario con la repuntuación como se muestra a continuación:

1 GB * (25/24) = 1.042 GB

Importante

En la interfaz de usuario de Atlas, Atlas muestra el tamaño total del índice, que puede ser grande, ya que Atlas no muestra un desglose de las estructuras de datos dentro de un índice que se almacenan en la RAM y en el disco. Las métricas de MongoDB Search muestran un índice mucho más pequeño que se mantiene en memoria cuando habilitas la cuantización automática.

Para los vectores para los cuales configuraste la cuantización automática, se recomienda reservar un espacio libre en disco igual al 125% del tamaño estimado del índice.

Para probar tus consultas de búsqueda vectorial y crear prototipos de tu aplicación, te recomendamos la siguiente configuración.

Para probar las queries de MongoDB Vector Search, puedes implementar un clúster Flex, un clúster dedicado o usar una implementación local de Atlas.

Los clústeres gratuitos (antes conocidos como M0) son un nivel gratuito de clúster. Los clústeres flex son tipos de clústeres de bajo costo adecuados para equipos que están aprendiendo MongoDB o desarrollando pequeñas aplicaciones de prueba de concepto. Puedes comenzar tu proyecto con un clúster Atlas Flex y actualizar a un nivel de clúster Dedicado listo para producción en el futuro.

Estos tipos de clúster de bajo costo están disponibles para evaluar tus MongoDB Vector Search queries. Sin embargo, en clústeres Flex puedes experimentar contención de recursos y latencia de queries. Si inicias tu proyecto con un clúster Flex, se recomienda actualizar a un nivel superior cuando tu aplicación esté lista para producción.

Los clústeres dedicados incluyen M10 y niveles superiores. Los niveles M10 y M20 son adecuados para la creación de prototipos de tu aplicación. Puedes escalar a niveles superiores para gestionar grandes conjuntos de datos o implementar nodos de búsqueda dedicados para el aislamiento de la carga de trabajo cuando tu aplicación esté lista para producción.

El proveedor de nube y la región que elijas afectan las opciones de configuración disponibles para los niveles de clúster y el costo de ejecutar el clúster.

Todos los niveles de clúster están disponibles en todas las regiones de proveedores de nubeadmitidas.

Si prefiere probar las consultas de MongoDB Vector Search localmente, puede usar la CLI de Atlas para implementar un conjunto de réplicas de un solo nodo alojado en su equipo local. Para comenzar, complete la Guía de inicio rápido de MongoDB Vector Search y seleccione la pestaña de implementaciones locales.

Cuando su aplicación esté lista para producción, migre su implementación local de Atlas a un entorno de producción utilizando Migración en vivo. Las implementaciones locales están limitadas por la CPU, la memoria y los recursos de almacenamiento de la máquina local.

Para entornos de prueba y creación de prototipos, recomendamos una arquitectura de nodo en la que los procesos de MongoDB y los procesos de MongoDB Search se ejecuten en el mismo nodo. En el siguiente diagrama de este modelo de implementación, el proceso de MongoDB Search mongot se ejecuta junto con mongod en cada nodo del clúster de Atlas y comparten los mismos recursos.

Arquitectura de MongoDB Search

Por defecto, Atlas habilita el proceso mongot de MongoDB Search en el mismo nodo que ejecuta el proceso mongod cuando creas tu primer índice de MongoDB Vector Search.

Cuando se ejecuta una query, MongoDB Search utiliza la preferencia de lectura configurada para identificar el nodo en el cual ejecutar el query. El query primero va al proceso de MongoDB, que es mongod para un set de réplicas o mongos para un clúster.

Para un clúster de set de réplicas, el proceso mongod enruta la query al mongot en el mismo nodo. Para los clústeres fragmentados, los datos de tu clúster están particionados en mongod instancias (particiones), y cada proceso de mongot sólo puede acceder a los datos en la instancia mongod en el mismo nodo. Por lo tanto, no se pueden ejecutar queries de MongoDB Search que apunten a una partición en particular. mongos enruta la consulta a todas las particiones de base de datos, convirtiéndolas en consultas scatter gather. Si usas zonas para distribuir una colección particionada en un subconjunto de las particiones en el clúster, MongoDB Search enrute la query a la zona que contiene las particiones para la colección que estás consultando y ejecuta tus $search queries sólo en las particiones donde se encuentra la colección.

Tras enrutar la consulta a un mongot proceso de MongoDB Search, el mongot proceso realiza la búsqueda y la puntuación, y devuelve los ID de los documentos y otros metadatos de los resultados coincidentes a su mongod proceso correspondiente. A continuación, el mongod proceso realiza una búsqueda completa del documento implícitamente para los resultados coincidentes y los devuelve al cliente. Si utiliza la $search opción concurrente en su consulta, MongoDB Search habilita el paralelismo entre consultas. Para obtener más información, consulte Paralelizar la ejecución de consultas entre segmentos.

Para obtener más información sobre el mongot proceso,consulte Procesamiento de consultas.

Cuando Atlas ejecuta tus cargas de trabajo de base de datos y búsqueda en el mismo nodo, el almacenamiento de MongoDB ocupa un cierto porcentaje de la memoria disponible del nodo (RAM), dejando el resto para el índice de MongoDB Vector Search y el proceso mongot.

Nivel
Memoria total (GB)
Memoria disponible para el índice de MongoDB Vector Search (GB)

M10

2

1

M20

4

2

M30

8

4

Para los niveles de clúster M10, M20 y M30, se reserva el 25% para MongoDB y el 75% restante es para otras operaciones, incluido tu índice MongoDB Vector Search. Para los niveles de clúster M40+, se reserva el 50% para MongoDB y el resto para otras operaciones, incluido tu índice de MongoDB Vector Search.

Es posible que experimente disputas de recursos entre la base de datos mongod y los procesos de búsqueda mongot. Esto podría afectar negativamente el rendimiento de tu índice y la latencia de tus consultas. Recomendamos este modelo de implementación solo para entornos de prueba y creación de prototipos. Para aplicaciones listas para producción y cargas de trabajo de búsqueda asociadas, recomendamos migrar a nodos de búsqueda dedicados.

Para tu aplicación lista para producción, recomendamos la siguiente configuración de clúster.

Para aplicaciones listas para producción, necesitás un clúster dedicado con Nodos de búsqueda para aislamiento de cargas de trabajo.separados

Los clústeres dedicados incluyen M10 y niveles superiores. Los niveles M10 y M20 son adecuados para entornos de desarrollo y producción. Sin embargo, los niveles más altos pueden gestionar grandes conjuntos de datos y cargas de trabajo de producción. Recomendamos que también implementes nodos de búsqueda dedicados para tu carga de trabajo de búsqueda. Esto te permite escalar tu implementación de búsqueda de manera independiente y adecuada.

Los nodos de búsqueda están disponibles en todas las regiones de Google Cloud, pero sólo están disponibles en un subconjunto de AWS y Azure regiones. Debes seleccionar un proveedor de nube y una región donde los nodos de búsqueda estén disponibles para tu implementación.

Todos los niveles de clúster están disponibles en las regiones admitidas del proveedor de nube. El proveedor de nube y la región que elijas afectan las opciones de configuración y los niveles de búsqueda disponibles para el clúster, así como el costo de ejecutarlo.

Para entornos de producción, recomendamos una arquitectura de nodos en la que los procesos de MongoDB y los procesos de MongoDB Search se ejecutan en nodos separados. Para implementar nodos de búsqueda separados, consulte Migrar a nodos de búsqueda dedicados.

En el siguiente diagrama de este modelo de despliegue, el proceso MongoDB Search mongot se ejecuta en nodos de búsqueda dedicados, que están separados de los nodos del clúster en los que se ejecuta el proceso mongod.

Arquitectura de nodos de búsqueda separados

Atlas implementa nodos de búsqueda con cada clúster o con cada partición en el clúster. Por ejemplo, si implementas dos nodos de búsqueda para un clúster con tres particiones, Atlas implementa seis nodos de búsqueda (dos por partición). También puedes configurar el número de nodos de búsqueda y la cantidad de recursos aprovisionados para cada nodo de búsqueda.

Cuando se implementan nodos de búsqueda por separado, Atlas asigna automáticamente un mongod para cada mongot para la indexación. El mongot se comunica con el mongod para escuchar y sincronizar los cambios de índice de los índices que almacena. MongoDB Vector Search indexa y procesa tus consultas de forma similar a una implementación en la que tanto los procesos mongod como mongot se ejecutan en el mismo nodo. Para obtener más información, consulta Cómo indexar campos para búsqueda vectorial y Ejecutar consultas de búsqueda vectorial. Para obtener más información sobre cómo implementar los nodos de búsqueda por separado, consulta Nodos de búsqueda para el aislamiento de cargas de trabajo.

Cuando se migra a Search Nodes, Atlas implementa los Search Nodes, pero no sirve queries en los nodos hasta que se compila exitosamente todos los índices en el clúster en los Search Nodes. Mientras Atlas construye los índices en los nuevos nodos, continúa sirviendo queries usando los índices en los nodos del clúster. Atlas comienza a atender queries desde los nodos de búsqueda sólo después de compilar correctamente los índices en los nodos de búsqueda y remover los índices en los nodos del clúster.

Nota

Escalar su clúster añadiendo nodos de búsqueda o modificando el nivel de búsqueda desencadena la reconstrucción completa del índice de búsqueda de MongoDB. Sin embargo, si su clúster en AWS o Azure tiene nodos de búsqueda dedicados para los que no ha habilitado el cifrado en reposo mediante la administración de claves del cliente, Atlas ofrece las siguientes optimizaciones:

  • Cuando escala sus nodos de búsqueda, Atlas usa una copia reciente de su índice en S3 o Azure Blob Storage en lugar de reconstruir todo el índice de búsqueda de MongoDB en el nuevo nodo.

  • Para los nodos existentes, Atlas toma y carga periódicamente una nueva lista incremental de archivos de índice. Atlas conserva los archivos de índice durante un máximo de catorce (14) días.

Esto aún no está disponible para clústeres con nodos de búsqueda dedicados en Google Cloud.

Cuando ejecutes una query, esta se enruta al mongod según la preferencia de lectura configurada. El proceso mongod enruta la consulta de búsqueda a través de un balanceador de carga en el mismo nodo, lo que distribuye las solicitudes entre todos los procesos mongot.

El proceso de MongoDB Search mongot realiza la búsqueda y la puntuación, y devuelve los ID de los documentos y los metadatos de los resultados de las coincidencias a mongod. A continuación, mongod realiza una búsqueda en el documento completo para obtener resultados coincidentes y devuelve los resultados al cliente. Si se utiliza la opción $search concurrente en el query, MongoDB Search permite el paralelismo intra-query. Para aprender más, se puede consultar Paralelización de la ejecución de queries entre segmentos.

Si borras todos los nodos de búsqueda en tu clúster, se interrumpirá el procesamiento de los resultados de tus consultas de búsqueda. Para aprender más, consulta Modificar un clúster. Si eliminas tu clúster de Atlas, Atlas pausa y luego elimina todas las implementaciones de MongoDB Vector Search asociadas (mongot procesos).

Este modelo de implementación aporta las siguientes ventajas:

  • Utiliza eficazmente tus recursos asegurando al mismo tiempo la alta disponibilidad de tus recursos para cargas de trabajo de búsqueda.

  • Dimensione y escale su implementación de búsqueda independientemente de su implementación de base de datos.

  • Procese automáticamente las consultas de MongoDB Vector Search de manera concurrente, mejorando el tiempo de respuesta, especialmente en grandes conjuntos de datos. Para obtener más información, consulte Ejecución de query en paralelo entre segmentos.

MongoDB Vector Search mantiene todo el índice en memoria, por lo que necesitas asegurarte de que haya suficiente memoria para el índice de MongoDB Vector Search y para la JVM. Los nodos de búsqueda permiten el aislamiento de cargas de trabajo sin el aislamiento de datos, y casi el 90% de su asignación de RAM se puede usar para almacenar los datos de vectores e índices en la memoria, y lo que queda se puede usar para la JVM.

Cada índice es una combinación de los vectores indexados y metadatos adicionales. El tamaño del índice se determina principalmente por el tamaño de los vectores que se indexan, siendo el espacio de metadatos generalmente nominal. Para obtener más información, consulte Requisitos de memoria para la indexación de vectores.

Cuando implementes nodos de búsqueda dedicados, puedes elegir entre diferentes niveles de búsqueda. Cada nivel de búsqueda tiene una RAM, capacidad de almacenamiento y CPU por defecto. Esto permite dimensionar y escalar el clúster independientemente de la implementación de la base de datos. Para escalar tu implementación de búsqueda por separado, puedes hacer los siguientes cambios en la configuración del clúster en cualquier momento:

  • Ajuste la cantidad de nodos de búsqueda en su clúster.

  • Ajusta la CPU, la RAM y el almacenamiento del nodo cambiando los niveles de búsqueda.

Nota

Para aprender más sobre el costo de los nodos de búsqueda y los niveles de búsqueda, expanda View all plan features y haga clic en Atlas Vector Search en la página de Precios de MongoDB.

Recomendamos que tu nodo tenga una memoria RAM al menos 10% mayor que el tamaño total de tus índices de MongoDB Vector Search. También recomendamos que se asegure de tener suficientes CPUs disponibles. La latencia de la query depende del número de CPU disponibles, lo que puede afectar significativamente el nivel de concurrencia interna que acelera el rendimiento de la query.

Ejemplo

Supongamos que tienes 1M de vectores de 768 dimensiones de aproximadamente 3GB de tamaño. Tanto los niveles de búsqueda S30 (baja CPU) como S20 (alta CPU) tienen suficiente RAM para soportar el índice. En lugar de implementarse en el nivel de búsqueda S30 (Bajo procesador), recomendamos implementarse en el nivel de búsqueda S20 (Alto procesador) porque el nivel de búsqueda S20 (Alto procesador) tiene más procesadores disponibles para ejecutar consultas simultáneamente.

Por defecto, MongoDB y los procesos de búsqueda se ejecutan en los mismos nodos. Con esta arquitectura, el cifrado gestionado por el cliente se aplica a los datos de su base de datos, pero no se aplica a los índices de búsqueda.

Cuando activas nodos de búsqueda dedicados, los procesos de búsqueda se ejecutan en nodos separados. Esto permite activar el cifrado de datos del nodo de búsqueda, para que puedas cifrar tanto los datos de la base de datos como los índices de búsqueda con las mismas claves administradas por el cliente para una cobertura de cifrado integral.

Nota

Los nodos de la base de datos y los nodos de búsqueda utilizan diferentes métodos de cifrado con las mismas claves gestionadas por el cliente. Los nodos de la base de datos usan el motor de almacenamiento cifrado WiredTiger, mientras que los nodos de búsqueda usan cifrado a nivel de disco.

Para obtener más información, consulta Permitir la gestión de claves de cliente para los nodos de búsqueda.

Importante

Esta característica está disponible en todos los proveedores de KMS, pero los Nodos de búsqueda deben estar en AWS.

Los nodos de búsqueda dedicados permiten dimensionar y escalar su implementación de búsqueda por separado de su clúster. También elimina cualquier conflicto de recursos que pueda experimentar en un clúster que ejecute tanto la base de datos como los procesos de búsqueda en el mismo nodo.

Para migrar a Nodos de Búsqueda dedicados, realiza los siguientes cambios en tu implementación:

  1. Si tu implementación actualmente está utilizando un clúster de nivel gratuito o un clúster flexible, actualiza tu clúster a un nivel superior. Los Nodos de Búsqueda Dedicados solo son compatibles con M10 y niveles de clúster superiores. Para obtener más información sobre cómo migrar a un nivel de clúster diferente, consulta Modificar el Cluster Tier.

  2. Los nodos de búsqueda dedicados están disponibles en un subconjunto de AWS y Azure regiones y en todas las regiones compatibles de Google Cloud. Asegúrese de implementar su clúster en regiones en las que los nodos de búsqueda también estén disponibles. Si tu clúster existente está en regiones donde los nodos de búsqueda no están disponibles, migra tu clúster a regiones donde los nodos de búsqueda estén disponibles. Para obtener más información, consulte Regiones del proveedor de nube.

  3. Search Nodes for workload isolation Habilite y configure los nodos de búsqueda. Para obtener más información,consulte Agregar nodos de búsqueda.

Volver

Búsqueda vectorial combinada