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 nodo

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

Clúster Flex, 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:

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 la Interfaz de Usuario de Atlas.

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 obtener más información, consulte Ingerir vectores cuantificados.

El espacio requerido aumenta linealmente con la cantidad de vectores que se indexan y con la dimensionalidad de los vectores. También puede usar la Search Index Size métrica para determinar la cantidad de espacio y memoria que necesita en sus 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 utilizas la cuantización automática, Atlas almacena los vectores de precisión total para el re-puntuación o la búsqueda exacta en disco, con un uso mínimo de RAM y caché para re-puntuació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 1024dimensiones de Voyage AI almacenadas en el campo llamado my-embeddings:

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

Utiliza la siguiente fórmula para calcular aproximadamente el espacio en disco para tu índice habilitado para cuantificación binaria con reponderación:

Original index size * (25/24)

Aquí, el 24 en el denominador representa el tamaño original del índice dividido en 24 partes para una representación fraccionaria más sencilla. El 25 en el numerador representa una asignación de espacio adicional, que equivale aproximadamente a 1/24 del tamaño original del índice, para almacenar datos adicionales necesarios para guardar vectores binarios. Tanto el índice original como el Hierarchical Navigable Small Worlds los grafos aún se almacenan en el disco. El factor de sobredimensionamiento es 1/24 en lugar de 1/32 porque el grafo HNSW no está comprimido.

Ejemplo

Supongamos que el tamaño original de tu índice es de 1 GB. Puede calcular el tamaño del índice cuantificado binario con reevaluació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 los niveles y superiores. Los M10 M20 niveles y son adecuados para la creación de prototipos de su aplicación. Puede 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 su 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 nube compatibles.

Si prefieres probar las consultas de búsqueda vectorial de MongoDB localmente, puedes usar la CLI de Atlas para implementar un set de réplicas de un solo nodo alojado en tu computadora local. Para comenzar, completa el Quick Start de MongoDB Vector Search y selecciona la pestaña para implementaciones locales.

Cuando su aplicación esté lista para producción, migre su implementación local de Atlas a un entorno de producción mediante la migración en vivo. Las implementaciones locales están limitadas por los recursos de CPU, memoria y almacenamiento de su 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 ejecutas una consulta, MongoDB Search utiliza la preferencia de lectura configurada para identificar el nodo en el que ejecutarla. La consulta primero se dirige al proceso de MongoDB, que es mongod para un mongos clúster de réplicas o para un clúster fragmentado.

Para un clúster de conjunto de réplicas, el mongod proceso enruta la consulta al mongot en el mismo nodo. Para clústeres fragmentados, los datos del clúster se particionan entre mongod instancias (fragmentos) y cada mongot proceso solo puede acceder a los datos en la mongod instancia en el mismo nodo. Por lo tanto, no puede ejecutar consultas de MongoDB Search que se dirijan a un fragmento en particular. enruta lamongos consulta a todos los fragmentos, lo que hace que estas consultas sean de dispersión y recolección. Si utiliza zonas para distribuir una colección fragmentada en un subconjunto de los fragmentos del clúster, MongoDB Search enruta la consulta a la zona que contiene los fragmentos de la colección que está consultando y ejecuta sus $search consultas solo en los fragmentos donde se encuentra la colección.

Una vez que la consulta se dirige 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 búsqueda de los resultados coincidentes a su mongod proceso correspondiente. A continuación, el mongod proceso realiza una búsqueda completa de documentos de forma implícita para los resultados coincidentes y los devuelve al cliente. Si utiliza la $search opción concurrente en su consulta, MongoDB Search habilita el paralelismo dentro de la consulta. 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, se necesita un clúster dedicado con nodos de búsqueda separados para el aislamiento de la carga de trabajo.

Los clústeres dedicados incluyen M10 los niveles y superiores. Los M10 M20 niveles y son adecuados para entornos de desarrollo y producción. Sin embargo, los niveles superiores pueden gestionar grandes conjuntos de datos y cargas de trabajo de producción. Recomendamos implementar nodos de búsqueda dedicados para su carga de trabajo de búsqueda. Esto le permitirá escalar su implementación de búsqueda de forma independiente y adecuada.

Los nodos de búsqueda están disponibles en todas las regiones de Google Cloud, pero solo en un subconjunto de regiones de AWS y Azure. Debe seleccionar un proveedor de nube y una región donde los nodos de búsqueda estén disponibles para su 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 ejecuten en nodos separados. Para implementar nodos de búsqueda separados, consulta 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 implementa nodos de búsqueda independientes, Atlas asigna automáticamente un mongod a cada mongot para la indexación. El se mongot comunica con el para mongod escuchar y sincronizar los cambios de índice de los índices que almacena. MongoDB Vector Search indexa y procesa sus consultas de forma similar a una implementación donde los mongod mongot procesos y se ejecutan en el mismo nodo. Para obtener más información, consulte Cómo indexar campos para Vector Search y Ejecutar consultas de Vector Search. Para obtener más información sobre la implementación de nodos de búsqueda independientes, consulte 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 el clúster agregando nodos de búsqueda o cambiando el nivel de búsqueda activa una 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 de cliente, Atlas proporciona las siguientes optimizaciones:

  • Cuando escalas tus nodos de búsqueda, Atlas utiliza una copia reciente de tu índice en S3 o Azure Blob Storage en vez de reconstruir todo el índice de MongoDB Search 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 ejecutas una consulta, esta se enruta al mongod proceso según la preferencia de lectura configurada. El mongod proceso enruta la consulta de búsqueda a través de un balanceador de carga en el mismo nodo, que distribuye las solicitudes entre todos los mongot procesos.

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 coincidentes a.mongod A mongod continuación, realiza una búsqueda completa de los documentos coincidentes y devuelve los resultados al cliente. Si utiliza la $search opción concurrente en su consulta, MongoDB Search habilita el paralelismo dentro de la consulta. Para obtener más información, consulte Paralelizar la ejecución de consultas en segmentos.

Si elimina todos los nodos de búsqueda de su clúster, se interrumpirá el procesamiento de los resultados de su consulta de búsqueda. Para obtener más información, consulte Modificar un clúster. Si elimina su clúster de Atlas, Atlas se detendrá y luego eliminará todas las implementacionesmongot de MongoDB Vector Search asociadas ( 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.

  • Ajuste el tamaño y **escalar** su **implementación** de búsqueda de forma independiente de su **implementación de la 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 a los que se les asigna un índice y metadatos adicionales. El tamaño del índice se determina principalmente por el tamaño de los vectores para los que estás realizando la indexación, siendo el espacio de metadatos típicamente relativamente nominal. Para obtener más información, consulte Requisitos de memoria para la indexación de vectores.

Al implementar nodos de búsqueda dedicados, puede elegir entre diferentes niveles de búsqueda. Cada nivel de búsqueda tiene una capacidad de RAM, almacenamiento y CPU predeterminadas. Esto le permite dimensionar y escalar su clúster independientemente de la implementación de su base de datos. Para escalar su implementación de búsqueda por separado, puede realizar los siguientes cambios en la configuración de su clúster en cualquier momento:

  • Ajusta el número de nodos de búsqueda en tu 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 MongoDB 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 la base de datos, pero no a los índices de búsqueda.

Al habilitar los nodos de búsqueda dedicados, los procesos de búsqueda se ejecutan en nodos separados. Esto permite habilitar el cifrado de datos del nodo de búsqueda, de modo que se pueden 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 completa.

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 su implementación utiliza actualmente un clúster de nivel gratuito o un clúster Flex, actualícelo a un nivel superior. Los nodos de búsqueda dedicados solo son compatibles con los M10 niveles de clúster y superiores. Para obtener más información sobre cómo migrar a un nivel de clúster diferente, consulte Modificar el nivel del clúster.

  2. Los nodos de búsqueda dedicados están disponibles en un subconjunto de regiones de AWS y Azure, así como en todas las regiones de Google Cloud compatibles. Asegúrese de implementar su clúster en regiones donde también estén disponibles los nodos de búsqueda. Si su clúster actual se encuentra en regiones donde no están disponibles, migre su clúster a regiones donde sí lo estén. Para obtener más información, consulte Regiones de proveedores 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