Anuncio¡Presentamos MongoDB 8.0, el MongoDB más rápido de la historia! Leer más >
AnuncioVoyage AI se une a MongoDB para potenciar aplicaciones de IA más precisas y confiables en Atlas. Más información >
Blog home
arrow-left

Arquitectura estratégica de bases de datos para IA: unificada o dividida

22 de mayo de 2025 | Updated: 3 de junio de 2025

Conclusiones clave:

  • Una arquitectura unificada reduce significativamente la complejidad del desarrollo al eliminar los desafíos de sincronización entre bases de datos vectoriales y operativas separadas.

  • La coherencia de los datos está garantizada mediante transacciones atómicas en sistemas unificados, lo que evita los "documentos fantasma" y otras fallas en la arquitectura dividida.

  • El costo total de propiedad suele ser menor con arquitecturas unificadas debido a la infraestructura consolidada y la menor carga de mantenimiento.

  • La velocidad de desarrollo aumenta con enfoques unificados, ya que los equipos pueden centrarse en crear funcionalidades en lugar de en código de integración y gestión de errores.

  • MongoDB Atlas ofrece beneficios de preparación para el futuro con capacidades de IA integradas como búsqueda vectorial, cuantificación automática, entre otras.

La IA exige más de las bases de datos, y las decisiones arquitectónicas que toman las organizaciones hoy en día afectan directamente su tiempo de comercialización y su ventaja competitiva. En la era de la IA generativa, la base de datos debe ofrecer soporte tanto para búsquedas vectoriales de alta dimensión como para cargas de trabajo transaccionales rápidas, a fin de mantener el ritmo ante los rápidos cambios empresariales y tecnológicos.

En este artículo, examinamos las consideraciones arquitectónicas que los líderes tecnológicos y arquitectos deben tener en cuenta al gestionar los diversos requisitos de datos de las aplicaciones de IA, incluidas las incrustaciones vectoriales de alta dimensión para la búsqueda semántica junto con los datos operativos tradicionales (perfiles de usuario, metadatos de contenido, etc.). Esta dicotomía presenta dos enfoques arquitectónicos distintos (dividido frente a unificado), cada uno con implicaciones significativas para el rendimiento de la aplicación, la coherencia y la experiencia del desarrollador.

Nota: Para los líderes técnicos que quieren dotar a sus equipos con los detalles prácticos, o que necesitan pruebas sólidas para convencer a los desarrolladores escépticos, hemos publicado una guía de implementación completa. Si bien este artículo se centra en las consideraciones estratégicas, la guía profundiza en las realidades a nivel de código que su equipo de desarrollo agradecerá.

Por qué la arquitectura de datos es importante

La creación de productos y funciones de IA exitosos implica pensar con antelación sobre la velocidad y el costo de la inteligencia a escala. Independientemente de si está implementando la búsqueda semántica para una base de conocimiento o impulsando un motor de recomendaciones en tiempo real, la arquitectura de su base de datos respalda la rapidez y la confiabilidad con la que puede llevar esas funcionalidades al mercado.

En la era de la IA, el éxito ya no depende únicamente de tener algoritmos innovadores; está determinado fundamentalmente por la precisión y la relevancia de los resultados. Esto representa un cambio profundo: la arquitectura de datos, que antes estaba relegada a los departamentos de TI, se ha convertido en una preocupación estratégica para todos. Influye directamente en la rapidez con la que los desarrolladores pueden innovar (velocidad del desarrollador), la rapidez con la que se pueden introducir nuevas capacidades en el mercado (tiempo de comercialización) y la confiabilidad con la que funcionan los sistemas en condiciones reales (confiabilidad operativa).

En esencia, la arquitectura de datos se ha convertido en el fundamento sobre el cual toda la estrategia de IA prospera o fracasa. La arquitectura de datos es el fundamento de los datos.

A diferencia de las aplicaciones tradicionales que trataban en su mayoría con datos estructurados y queries de CRUD simples, las aplicaciones de IA generan y consultan representaciones vectoriales de datos no estructurados (como texto, imágenes y audio) para encontrar elementos “similares”. A menudo, estos vectores se almacenan en bases de datos vectoriales dedicadas o motores de búsqueda optimizados para la búsqueda de similitudes. Al mismo tiempo, las aplicaciones siguen necesitando queries tradicionales (búsquedas exactas, agregaciones, transacciones en datos empresariales). Esto plantea una cuestión arquitectónica fundamental clave:

¿Utilizamos bases de datos especializadas independientes para estas diferentes cargas de trabajo y estructuras de datos, o las unificamos en un solo sistema?

Aprovechemos también la oportunidad para abordar brevemente el concepto de “base de datos de IA” que ha surgido para describir un sistema que gestiona tanto cargas de trabajo operativas estándar como operaciones específicas de IA, tales como la búsqueda vectorial. En resumen, detrás de las capacidades de búsqueda de IA en las aplicaciones de IA modernas, se encuentran técnicas de recuperación de IA activadas por bases de datos optimizadas para cargas de trabajo de IA.

Arquitectura dividida: integración de un almacén vectorial independiente

En una arquitectura dividida, las operaciones vectoriales y la gestión de datos transaccionales se delegan a sistemas separados y especializados. Una base de datos de propósito general (por ejemplo, MongoDB, PostgreSQL) mantiene los datos operativos, mientras que un almacén vectorial dedicado (por ejemplo, Elasticsearch, Pinecone) gestiona las incrustaciones y las operaciones de búsqueda de similitud. A primera vista, este enfoque de dividir y vencer permite que cada sistema haga lo que mejor sabe.

El motor de búsqueda o almacén vectorial dedicado pueden especializarse en consultas de similitud de vectores, mientras que la base de datos operativa gestiona las actualizaciones y la persistencia. Esto aprovecha las optimizaciones especializadas en cada sistema, pero introduce requisitos de sincronización entre los almacenes de datos.

Muchos equipos de IA han implementado la búsqueda semántica y otras funcionalidades de IA de esta manera, utilizando un índice vectorial externo junto con su base de datos de la aplicación, con ambos sistemas mantenidos en sincronización a través de middleware personalizado o lógica a nivel de aplicación.

Características de la arquitectura dividida:

  • Sistemas especializados: cada base de datos está optimizada para su rol (por ejemplo, la base de datos operativa garantiza escrituras rápidas, transacciones ACID y consultas enriquecidas; el motor de búsqueda vectorial proporciona una búsqueda de similitud eficiente utilizando índices como HNSW para ANN).

  • Duplicación de datos: las incrustaciones vectoriales (y, a menudo, algunos identificadores o metadatos) se duplican en el almacén vectorial. El ID primario o la clave existen en ambos sistemas para vincular los resultados.

  • Lógica de sincronización: la aplicación debe gestionar la sincronización: para cada creación, actualización y borrado de un registro, es necesario actualizar o borrar la entrada vectorial correspondiente en el índice de búsqueda. Esto se puede hacer a través de flujos de eventos, captura de cambios o en el código de la aplicación que llama a dos sistemas.

  • Consulta de datos: patrones de query en varias etapas que requieren coordinación entre sistemas

Pila de ejemplo: un ejemplo es utilizar MongoDB como fuente de verdad para documentos de productos, y Elasticsearch como motor de búsqueda vectorial para incrustaciones de descripciones de productos. La aplicación se guarda en MongoDB, luego indexa la incrustación en Elasticsearch y, en el momento de la query, realiza una búsqueda vectorial en Elasticsearch, para después recuperar el documento completo de MongoDB por ID.

Este patrón de sistema es lo que escuchamos de varios equipos de IA que aprovechan MongoDB y prácticamente todo lo que prometa hacer que los vectores avancen más rápido.

Es el equivalente arquitectónico de llevar cinturón y tirantes: los pantalones no se caen, pero se trabaja demasiado para resolver lo que podría ser un problema más sencillo. Estos equipos a menudo terminan creando más código de sincronización que funcionalidades reales, convirtiendo lo que debería ser innovación en IA en un complejo ejercicio de malabares de coordinación de bases de datos.

Diagrama que muestra la arquitectura dividida para MongoDB + Elasticsearch. En el centro del diagrama hay un cuadro titulado "múltiples tecnologías", que incluye la base de datos operativa y la base de datos vectorial, las cuales están conectadas mediante ETL. Desde este cuadro, la base de datos vectorial envía el contexto del mensaje a la capa de orquestación y la base de datos operativa envía la consulta a la base de datos normal para obtener los datos no relacionados con los vectores a la capa de orquestación. Desde allí, la capa de orquestación se conecta al LLM y a la aplicación basada en IA generativa.
Figura 1. Arquitectura dividida: base de datos operativa MongoDB + almacén vectorial Elasticsearch.

Dejando a un lado las precauciones excesivas, el punto notable es que dividir la arquitectura conlleva un costo.

Ahora existen dos fuentes de verdad que deben mantenerse sincronizadas. Cada vez que se agreguen o actualicen datos, se debe indexar el vector en el motor de búsqueda. Cada query implica múltiples recorridos: uno al servicio de búsqueda para encontrar elementos relevantes y otro a la base de datos para recuperar los detalles completos.

Esta complejidad agregada puede ralentizar el desarrollo e introducir posibles puntos de falla. El uso de un sistema de división introduce desafíos, como se analizará, en torno a la coherencia (por ejemplo, registros “fantasma” cuando los dos sistemas se quedan sin sincronización) y una complejidad agregada en el desarrollo y el mantenimiento.

En casos de uso de escala extremadamente alta o latencia ultrabaja (>1B vectores o <1 ms NN SLAs), un motor vectorial dedicado como FAISS o Milvus aún puede superar a una base de datos de propósito general en el rendimiento bruto de búsqueda por similitud. Sin embargo, los nodos de búsqueda de MongoDB Atlas aíslan las cargas de trabajo de búsqueda vectorial en instancias separadas y optimizadas para memoria, lo que permite escalar y ajustar el rendimiento de la búsqueda independientemente de los nodos de la base de datos, ofreciendo a menudo las garantías de baja latencia que requieren las aplicaciones de IA modernas.

Arquitectura unificada con MongoDB Atlas: una plataforma para datos de IA

En una arquitectura unificada, una sola plataforma de base de datos gestiona tanto datos operativos como funciones de búsqueda vectorial. MongoDB Atlas Vector Search integra la búsqueda y la indexación de vectores directamente en la base de datos de MongoDB.

Este patrón arquitectónico simplifica el modelo de datos al almacenar incrustaciones junto con datos asociados en la misma estructura de documento. El sistema de base de datos gestiona internamente la indexación vectorial (mediante algoritmos como HNSW) y ofrece capacidades de query integradas en patrones de datos vectoriales y tradicionales.

En la práctica, esto significa que la aplicación puede ejecutar una query (a MongoDB) que filtra y encuentra datos basados en la similitud de los vectores, sin necesidad de un segundo sistema. Esto significa que todos los datos (los documentos de la aplicación y sus representaciones vectoriales) residen en un mismo lugar, bajo un sistema transaccional compatible con ACID para la carga de trabajo de IA.

Características de la arquitectura unificada:

  • Una sola fuente de verdad: tanto los datos sin procesar como los índices vectoriales residen en una base de datos. Por ejemplo, MongoDB Atlas permite almacenar campos de vector en documentos y consultarlos con operadores de búsqueda vectorial integrados. No es necesario duplicar ni sincronizar datos entre diferentes sistemas.

  • Operaciones atómicas: las actualizaciones de un documento y su incrustación vectorial se realizan en una única transacción atómica u operación de escritura. Esto garantiza una fuerte coherencia: el índice vectorial no puede apartarse de los datos del documento. Si una transacción falla, no se confirma ninguno de los cambios (ni el documento ni su incrustación). Esto elimina problemas como los “documentos fantasma” (que definiremos en breve) porque es imposible tener una incrustación sin su documento correspondiente en la misma base de datos.

  • Capacidades de query unificadas: el lenguaje del query (por ejemplo, MQL de MongoDB) puede combinar filtros tradicionales, búsqueda de texto completo y búsqueda de similitud vectorial en una sola query. Esta capacidad de búsqueda híbrida significa que es posible, por ejemplo, encontrar documentos donde categoría = "Tech" y la incrustación sea similar a un vector de query, todo de una vez. No es necesario realizar dos queries en sistemas diferentes y luego fusionar los resultados en la aplicación.

  • Simplicidad operativa: solo hay un sistema que gestionar, asegurar, escalar y supervisar. En una plataforma de nube gestionada como MongoDB Atlas, se obtiene un servicio totalmente gestionado que gestiona tanto cargas de trabajo operativas como vectoriales, a menudo con funcionalidades para optimizar cada una (por ejemplo, “nodos de búsqueda” dedicados que gestionan la indexación y las consultas de búsqueda para que las búsquedas vectoriales pesadas no afecten el rendimiento de la carga de trabajo transaccional).

Diagrama que muestra la arquitectura unificada. En el centro hay un cuadro etiquetado como vista única, que contiene MongoDB y Vector Search. Este cuadro envía el contexto del mensaje a la capa de orquestación, que se conecta con el LLM y la aplicación impulsada por IA generativa. A la izquierda de esto hay cuadros que dicen esquemas flexibles y que es fácil incorporar datos nuevos, ambos con marcas de verificación. A la derecha, hay nuevamente cuadros, todos con marcas de verificación. Estos indican una tecnología, un languaje del query, una infraestructura, sin duplicación de datos y reducción de costo.
Figura 2. Arquitectura unificada: MongoDB Atlas con búsqueda vectorial integrada.

MongoDB Atlas integra un motor Atlas Vector Search (basado en Apache Lucene, la misma tecnología utilizada en algunos motores de búsqueda vectorial dedicados) directamente en la base de datos. Esto permite a los desarrolladores almacenar vectores de alta dimensión en documentos y ejecutar búsquedas de similitud usando índices impulsados por algoritmos como HNSW (grafos de Hierarchical Navigable Small World ) para la búsqueda de ANN.

Las funcionalidades adicionales como cuantización vectorial (para comprimir vectores y lograr eficiencia) y búsqueda híbrida (que combina búsquedas vectoriales y de texto) son compatibles de forma nativa y se construyen con el MongoDB Query Language (MQL).

Todo esto ocurre bajo el motor de transacciones y la arquitectura de seguridad de la base de datos de MongoDB Atlas. En resumen, el enfoque unificado tiene como objetivo ofrecer lo mejor de ambos mundos: la rica funcionalidad de un almacén vectorial especializado y la confiabilidad/coherencia de un único almacén de datos operativos.

Una consideración estratégica para los responsables de la toma de decisiones

Para los responsables técnicos que gestionan tanto la innovación como los presupuestos, el enfoque unificado presenta un caso financiero convincente junto con sus méritos técnicos.

Si su organización ya aprovecha MongoDB como base de datos operativa (como lo hacen miles de empresas en todo el mundo), el camino hacia la habilitación de la IA es notablemente fluido. En lugar de asignar presupuesto para un sistema de base de datos vectorial completamente nuevo, con todos los costos asociados de licencia, infraestructura y personal, puede ampliar su inversión existente en MongoDB para gestionar cargas de trabajo vectoriales.

Sus equipos ya comprenden la arquitectura, el modelo de seguridad y las características operativas de MongoDB. Agregar capacidades vectoriales se convierte en una adición de habilidades incremental en lugar de una curva de aprendizaje pronunciada para un sistema completamente nuevo. Para los proyectos que ya están en curso, la migración de datos vectoriales o la generación de nuevas incrustaciones dentro de su infraestructura de MongoDB existente puede lograrse sin interrumpir las operaciones en curso.

Descripción técnica de la arquitectura dividida frente a la unificada

Para ilustrar las implicaciones prácticas de cada arquitectura, observemos la implementación de alto nivel y las consideraciones operativas para una aplicación de respuesta a preguntas en una base de conocimiento. Ambos enfoques permiten la búsqueda de similitud vectorial, pero con diferencias notables en la complejidad de la implementación y las garantías de coherencia.

Diagrama que desglosa los costos ocultos de la arquitectura dividida. El diagrama está dividido en 4 categorías, y cada categoría incluye una descripción del escenario de falla, las consecuencias, las mitigaciones requeridas y el impacto para el desarrollador. La primera categoría está etiquetada como crear, y el escenario de falla es que la inserción de MongoDB tiene éxito, pero la indexación de Elasticsearch falla. Las consecuencias de este escenario son la documentación huérfana en MongoDB, los documentos invisibles para la búsqueda vectorial y la lógica de rollback manual. Las mitigaciones requeridas son el administrador de transacciones a través de la base de datos, el proceso de limpieza del cliente y las herramientas de monitoreo para la sincronización fallida. Y el impacto para el desarrollador es un código de gestión compleja de errores y un mayor tiempo de desarrollo. La segunda categoría es leer, y el escenario de falla es que el vector existe en Elasticsearch, pero falta el documento en MongoDB. Las consecuencias de esto son múltiples recorridos, resultados de búsqueda interrumpidos y complejidad en la gestión de errores. Las mitigaciones necesarias son las queries por lotes para el rendimiento, la gestión de respaldos para los documentos que faltan y el filtrado de resultados para eliminar los elementos que no están disponibles. Y el impacto para el desarrollador es la complejidad de las queries en varias etapas y el aumento de los gastos en general de la red. La tercera categoría es actualizar, y el escenario de falla es que el documento se actualiza en MongoDB, pero la actualización del vector falla en Elasticsearch. Las consecuencias de esto son incrustaciones vectoriales obsoletas y los resultados de búsqueda no coinciden con el contenido actualizado. Las mitigaciones requeridas son tareas de conciliación en segundo plano, mecanismo de reintentos y registro de eventos para actualizaciones fallidas. Y el impacto para el desarrollador es que el código de sincronización supera las funcionalidades y los gastos en general del mecanismo de recuperación. La cuarta y última categoría es borrar, donde el escenario de falla es un documento eliminado de MongoDB, pero el vector aún existe en Elasticsearch. Las consecuencias de esto son documentos fantasma en los resultados de búsqueda, una experiencia de usuario interrumpida y posibles problemas de seguridad/privacidad. Las mitigaciones requeridas son la supervisión de la coherencia del índice, los procesos de limpieza periódicos y el filtrado posterior a la búsqueda de documentos fantasmas. Y el impacto para el desarrollador es la gestión de errores para documentos faltantes y la gestión de la frustración del usuario.
Figura 3. Arquitectura de división: el costo oculto

En una arquitectura dividida (por ejemplo, con MongoDB + Elasticsearch): almacenamos el contenido y los metadatos del artículo en MongoDB y almacenamos los vectores de incrustación en un índice de Elasticsearch. En el momento de la consulta, buscaremos en el índice de Elasticsearch por similitud de vectores para obtener una lista de los ID de los mejores artículos, y luego recuperaremos esos artículos de MongoDB por sus ID.

Existen varias operaciones clave involucradas en una arquitectura de base de datos dual:

  • Creación: durante la creación del documento, la aplicación debe coordinar las inserciones en ambos sistemas. Primero, el documento se guarda en MongoDB y, a continuación, se genera su incrustación vectorial y se almacena en Elasticsearch. Si alguna de las operaciones falla, se necesita una lógica de rollback manual para mantener la coherencia. Por ejemplo, si la inserción en MongoDB se realiza correctamente pero la indexación de Elasticsearch falla, los desarrolladores deben implementar un código de limpieza personalizado para eliminar el documento huérfano de MongoDB.

  • Leer: la búsqueda vectorial se convierte en un proceso de varias etapas en una arquitectura dividida. La aplicación primero hace las queries a Elasticsearch para encontrar vectores similares, recupera solo los ID del documento y, a continuación, realiza un segundo recorrido a MongoDB para recuperar los documentos completos que coinciden con esos ID. Esto introduce latencia de red adicional y requiere gestión de errores para los casos en los que los documentos existen en un sistema, pero no en el otro.

  • Actualización: la actualización de contenido presenta desafíos de sincronización significativos. Tras actualizar un documento en MongoDB, la aplicación también debe actualizar el vector correspondiente en Elasticsearch. Si la actualización de Elasticsearch falla después de que la actualización de MongoDB se realice correctamente, los sistemas pierden la sincronización, lo que provoca que la búsqueda vectorial devuelva resultados obsoletos o incorrectos. No existe una transacción atómica que abarque ambos sistemas, lo que requiere mecanismos de recuperación complejos.

  • Borrado: las operaciones de borrado enfrentan problemas de sincronización similares. Cuando se elimina un documento de MongoDB, pero la eliminación correspondiente en Elasticsearch falla, aparecen "documentos fantasma" en los resultados de búsqueda: vectores que apuntan a documentos que ya no existen. Los usuarios reciben resultados de búsqueda a los que no pueden acceder, lo que crea una experiencia confusa y posibles problemas de seguridad si la información confidencial sigue siendo accesible indirectamente a través del contenido de vista previa almacenado en Elasticsearch.

Cada una de estas operaciones requiere una gestión cuidadosa de errores, mecanismos de reintento, sistemas de supervisión y procesos de conciliación en segundo plano para mantener la coherencia entre las dos bases de datos. Y, notablemente, la complejidad aumenta con el tiempo, ya que los problemas de sincronización se vuelven más difíciles de detectar y resolver a medida que crece el volumen de datos, lo que finalmente genera un impacto tanto en la productividad del desarrollador como en la experiencia del usuario.

Diagrama que desglosa las operaciones CRUD en una arquitectura unificada con MongoDB Atlas con Vector Search. El diagrama se divide en 4 categorías y proporciona un diagrama de arquitectura rápido en la parte superior, seguido de los beneficios y lo que se elimina. La primera categoría es crear, donde MongoDB Atlas se conecta al documento + vector; a continuación, el documento con la incrustación se inserta en la aplicación. Los beneficios de esto son una operación atómica única, garantías de transacción y una coherencia de todo o nada. En cuanto a lo que se elimina, esto incluye la ausencia de todo lo siguiente: lógica de rollback manual, código de limpieza, coordinación entre sistemas y documentos huérfanos. El impacto en el desarrollador es un código más simple y el enfoque en la funcionalidad, no en el código de sincronización. La segunda categoría es la lectura, donde MongoDB Atlas utiliza un índice vectorial para devolver el documento completo con la operación de búsqueda vectorial a la aplicación. Los beneficios de esto son una query de un solo recorrido, la devolución de documentos completos, una latencia reducida y la garantía de resultados coherentes. En cuanto a lo que se elimina, esto incluye la ausencia de todo lo siguiente: queries de varias etapas, recolección y agrupación de ID, y gestión de errores para documentos faltantes. El impacto para el desarrollador es un código más simple y el enfoque en la funcionalidad, no en el código de sincronización. La tercera categoría es la actualización, donde MongoDB Atlas utiliza el documento + vector para actualizar el documento y el vector (operación atómica) en la aplicación. El beneficio de esto es una query de un solo recorrido, la devolución de documentos completos, una latencia reducida y resultados coherentes garantizados. En cuanto a lo que se elimina, esto incluye la ausencia de todo lo siguiente: queries de varias etapas, recolección y agrupación de ID, y gestión de errores para documentos faltantes. El impacto para el desarrollador es la ausencia de lógica de reintento y de conciliación en segundo plano. La categoría final es borrar, donde MongoDB Atlas utiliza el documento + vector para borrar documentos en la aplicación. Los beneficios de esto son la eliminación automática de vectores, la coherencia garantizada y una operación única. En cuanto a lo que se elimina, esto incluye la ausencia de todo lo siguiente: documentos fantasma, resultados de búsqueda interrumpidos, riesgos de seguridad/privacidad y supervisión de la sincronización. El impacto para el desarrollador es que no se necesitan procesos de limpieza y no hay errores reportados por los usuarios.
Figura 4. Operaciones CRUD en una arquitectura unificada: MongoDB Atlas con búsqueda vectorial.

En una arquitectura unificada (con MongoDB Atlas Vector Search): almacenamos los datos del artículo y su vector de incrustación en un único documento de MongoDB. Un índice de Atlas Vector Search en el campo de incrustación nos permite realizar una búsqueda de similitud directamente dentro de MongoDB con una única query. La base de datos utilizará internamente el índice vectorial para encontrar los vecinos más cercanos y devolver los documentos.

Veamos cómo las mismas operaciones se simplifican drásticamente en una arquitectura unificada:

  • Creación: la creación de documentos se convierte en una operación atómica. La aplicación almacena tanto el documento como su incrustación vectorial en un único documento de MongoDB con una sola operación de inserción. O bien, se almacena correctamente el documento completo (con su incrustación), o no se almacena nada en absoluto. No es necesaria una lógica de rollback personalizada ni código de limpieza, ya que las garantías de transacción de MongoDB aseguran la integridad de los datos sin código de aplicación adicional.

  • Lea: la búsqueda vectorial se optimiza en un solo paso. Al usar el pipeline de agregación de MongoDB con Atlas Vector Search, la aplicación consulta vectores similares y recupera los documentos completos en un solo recorrido. No hay necesidad de coordinar sistemas separados ni de gestionar incoherencias, ya que la búsqueda vectorial está integrada directamente con la recuperación de documentos, lo que reduce sustancialmente la latencia y la complejidad del código.

  • Actualización: las actualizaciones de los documentos mantienen una coherencia perfecta. Al actualizar el contenido de un documento, la aplicación puede actualizar tanto el documento como su incrustación vectorial de forma atómica en una sola operación. Las garantías transaccionales de MongoDB garantizan que se actualicen ambos o ninguno, eliminando la posibilidad de representaciones de datos fuera de sincronización. Los desarrolladores ya no necesitan implementar complejos mecanismos de recuperación para errores parciales.

  • Eliminación: el problema del documento fantasma desaparece por completo. Cuando se elimina un documento, su incrustación vectorial también se elimina automáticamente, ya que existen en el mismo documento. No hay posibilidad de vectores huérfanos o resultados de búsqueda incoherentes. Esto asegura que los resultados de búsqueda siempre reflejen el estado actual de la base de datos, mejorando la confiabilidad y la seguridad.

Este enfoque unificado elimina toda la categoría de desafíos de sincronización inherentes a las arquitecturas divididas. Los desarrolladores pueden enfocarse en crear funcionalidades en lugar de mecanismos de sincronización, herramientas de supervisión y procesos de recuperación. El sistema se escala de forma natural sin aumentar la complejidad, manteniendo un rendimiento y una confiabilidad coherentes incluso a medida que aumentan los volúmenes de datos. Más allá de los beneficios técnicos, esto se traduce en ciclos de desarrollo más rápidos, aplicaciones más confiables y, en última instancia, una mejor experiencia para los usuarios finales que reciben resultados de búsqueda constantemente precisos.

La búsqueda vectorial y la recuperación de documentos ocurren en un recorrido a la base de datos, lo que transforma fundamentalmente tanto las características de rendimiento como la simplicidad operativa de las aplicaciones impulsadas por IA.

Sincronización de datos: desafíos y "documentos fantasma"

Uno de los mayores desafíos con la arquitectura dividida es la sincronización de datos. Como hay dos fuentes de verdad (la base de datos operativa y el índice vectorial), cualquier cambio en los datos debe propagarse a ambas. En la práctica, la sincronización perfecta es difícil; las fallas en la red o en los procesos, o los bugs pueden hacer que un almacén se actualice mientras que el otro no. Esto puede llevar a incoherencias que son difíciles de detectar y resolver.

Un ejemplo notable en una configuración dividida es el escenario del "documento fantasma". Un documento fantasma se refiere a una situación en la que la búsqueda vectorial devuelve una referencia a un documento que ya no existe (o ya no coincide con los criterios) en la base de datos primaria.

Por ejemplo, supongamos que se borró un artículo o se marcó como privado en MongoDB, pero su incrustación no se eliminó de Elasticsearch. Una búsqueda vectorial todavía podría recuperar su ID como uno de los principales resultados, lo que llevaría a su aplicación a intentar buscar un documento que no está allí o que no debería mostrarse. Desde la perspectiva de un usuario, esto podría arrojar un resultado inservible o desactualizado.

Volvamos a nuestro escenario práctico anterior: imaginemos un sistema de base de conocimientos para el servicio de soporte al cliente en el que los artículos se actualizan constantemente y se eliminan ocasionalmente cuando quedan obsoletos. Cuando un agente de asistencia borra un artículo sobre un producto descatalogado, la eliminación se produce correctamente en MongoDB, pero debido a un tiempo de espera de red, la eliminación del vector correspondiente en Elasticsearch falla. Y sí, sucede, especialmente con aplicaciones que gestionan millones de solicitudes diariamente.

Más tarde, cuando un cliente busca soluciones relacionadas con ese producto descatalogado, la búsqueda vectorial en Elasticsearch identifica el artículo ahora eliminado como altamente relevante y devuelve su ID. Cuando la aplicación intenta recuperar el contenido completo de MongoDB mediante este ID, descubre que el documento ya no existe.

El cliente ve un enlace roto o un mensaje de error en lugar de contenido útil, lo que crea una experiencia confusa y frustrante.

Lo que resulta particularmente insidioso de este problema es que puede manifestarse de diversas formas en toda la aplicación. Más allá de los problemas de eliminación completa de documentos, se pueden encontrar:

  • Incrustaciones obsoletas: un documento se actualiza en MongoDB con contenido nuevo, pero el vector en Elasticsearch todavía representa la versión antigua, lo que provoca resultados de búsqueda que no coinciden con el contenido real.

  • Inconsistencias en los permisos: Los permisos de acceso de un documento cambian en MongoDB (p. ej., de público a privado), pero aún aparece en los resultados de la búsqueda vectorial para los usuarios que no deben acceder a él.

  • Actualizaciones parciales: solo se actualizan algunos campos en los sistemas, lo que genera metadatos no coincidentes entre lo que se muestra en las vistas previas de búsqueda y el documento real.

En entornos de producción, los equipos de desarrollo suelen recurrir a la implementación de soluciones alternativas complejas para mitigar estos problemas de sincronización:

  1. Tareas de conciliación en segundo plano que comparan periódicamente documentos entre ambos sistemas y corrigen las incoherencias

  2. Patrones de outbox en los que las operaciones se registran en un almacén separado y se reintentan hasta que tienen éxito

  3. Sistemas de supervisión personalizados diseñados específicamente para detectar y alertar sobre incoherencias entre bases de datos

  4. Procesos de intervención manual para que los equipos de soporte puedan solucionar las discrepancias reportadas por los usuarios

Todos estos mecanismos representan un esfuerzo de desarrollo significativo que, de otro modo, podría dirigirse a crear funcionalidades que aporten un valor empresarial real. También introducen puntos de fallo adicionales y una complejidad operativa añadida.

Fundamentalmente, una arquitectura unificada evita toda esta clase de problemas. Dado que solo hay una base de datos, un documento que se borra se elimina automáticamente de cualquier índice asociado dentro de la misma transacción. Un modelo de datos unificado hace que sea relativamente imposible tener un vector sin su documento, porque son uno solo y se mantienen en el mismo documento. Como resultado, desaparecen los problemas como documentos fantasma, referencias vectoriales obsoletas o la necesidad de sincronizar dos almacenes de datos.

No se necesita sincronización: cuando los documentos y las incrustaciones residen en una única base de datos, se reduce el riesgo de que haya documentos fantasma o lecturas incoherentes.

Compensaciones y consideraciones

Hay varias compensaciones clave que deben evaluarse al comparar arquitecturas divididas y unificadas para datos de IA. Como se mencionó, su elección afectará la complejidad del sistema, las características de rendimiento, la escalabilidad, el costo y la agilidad del desarrollo. Para los líderes de proyectos de IA y los líderes de IA empresarial es vital comprender estas compensaciones; a continuación, se presentan algunas:

Diagrama que muestra la comparación de compensaciones entre la arquitectura dividida y la unificada. El diagrama se divide en 4 categorías: complejidad del sistema frente a coherencia de los datos, gastos operativos en general frente a rendimiento, escalabilidad frente a rentabilidad, y carga de mantenimiento frente a productividad del desarrollador. Para la primera categoría, complejidad del sistema frente a coherencia de los datos, las menciones para la arquitectura dividida son necesidad de sincronización personalizada, escrituras duales entre sistemas y, en el mejor de los casos, coherencia eventual. Por otro lado, las menciones de la arquitectura unificada de MongoDB son las transacciones ACID, garantía de coherencia, operaciones atómicas únicas y ausencia de documentos fantasma o problemas de sincronización. En la siguiente categoría, gastos operativos en general frente a rendimiento, la arquitectura dividida presenta las compensaciones de una optimización especializada por sistema, múltiples idas y vueltas en la red y dos sistemas que supervisar y mantener, mientras que la arquitectura unificada ofrece los beneficios de una única query con índices optimizados, un solo recorrido en la red, y operaciones y supervisión consolidadas. La siguiente categoría es escalabilidad frente a rentabilidad, y las compensaciones para la arquitectura dividida son el escalado independiente de los componentes, los costos de infraestructura duplicados y el almacenamiento de datos redundante, mientras que la arquitectura unificada tiene los beneficios de una infraestructura consolidada, nodos de búsqueda dedicados cuando es necesario y una planificación de capacidad más sencilla. La categoría final, carga de mantenimiento frente a productividad del desarrollador, enumera las compensaciones para la arquitectura dividida como un código de integración extenso, múltiples lenguajes del query y la gestión compleja de errores; mientras que los beneficios para la arquitectura unificada son el enfoque en la lógica de la aplicación, un lenguaje del query único y un desarrollo de funcionalidades más rápido.
Figura 5. Comparación de compensaciones: arquitectura dividida y arquitectura unificada de MongoDB.

Complejidad del sistema frente a coherencia de los datos: mantener la coherencia en una configuración dividida requiere lógica adicional y aumenta la complejidad del sistema. Cada fragmento de datos se gestiona efectivamente dos veces, introduciendo oportunidades para la incoherencia y los modos de falla complejos. En una arquitectura unificada, las transacciones ACID garantizan que las actualizaciones de los datos y su vector de incrustación se produzcan juntos o no se produzcan en absoluto, lo que simplifica el diseño y reduce el código personalizado de control de errores.

Gastos operativos en general frente a rendimiento: una arquitectura de división puede aprovechar motores especializados optimizados para queries de similitud, pero introduce latencia de red con múltiples recorridos y aumenta los gastos operativos en general con dos sistemas que supervisar. Las arquitecturas unificadas eliminan el salto de red extra, lo que potencialmente reduce la latencia de las queries. MongoDB Atlas ofrece optimizaciones como la cuantización vectorial y los nodos de procesamiento de búsqueda dedicados que pueden igualar o superar el rendimiento de motores de búsqueda separados.

Escalabilidad frente a rentabilidad: las arquitecturas divididas permiten el escalado independiente de los componentes, pero conllevan duplicación de costos de infraestructura y redundancia de datos. Una arquitectura unificada consolida los recursos al mismo tiempo que permite el aislamiento de cargas de trabajo a través de funcionalidades como Atlas Search Nodes. Esto simplifica la planificación de la capacidad y ayuda a evitar el aprovisionamiento excesivo de múltiples sistemas.

Carga de mantenimiento frente a velocidad del desarrollador: las arquitecturas divididas requieren un "código adhesivo" sustancial para la integración, las escrituras duales y la sincronización, lo que ralentiza el desarrollo y complica los cambios de esquema. Las arquitecturas unificadas permiten a los desarrolladores centrarse en la lógica de la aplicación con menos partes móviles y un solo languaje del query, lo que acelera el tiempo de lanzamiento al mercado de las funcionalidades de IA.

Preparación para el futuro: las arquitecturas unificadas más simples facilitan y agilizan la adopción de nuevas capacidades a medida que evoluciona la tecnología de IA. Los sistemas divididos acumulan deuda técnica con cada actualización de componentes, mientras que las plataformas unificadas pueden incorporar nuevas funcionalidades de forma transparente sin tener que rediseñar los puntos de integración.

Si bien algunas organizaciones pueden elegir inicialmente un enfoque dividido debido a sistemas heredados o requisitos especializados, la arquitectura unificada de MongoDB con Atlas Vector Search ahora aborda muchas razones históricas para los motores de búsqueda separados, ofreciendo capacidades de búsqueda híbrida, opciones de precisión y herramientas de optimización dentro de un solo entorno de base de datos.

Elegir la arquitectura correcta para las cargas de trabajo de IA

¿Cuándo debe elegir una arquitectura dividida y cuándo tiene más sentido una arquitectura unificada? La respuesta depende en última instancia de sus requisitos y limitaciones específicos.

Considere una arquitectura dividida si ya tiene una infraestructura importante construida en torno a una búsqueda especializada o una base de datos vectorial y está cubriendo sus necesidades. En algunos casos, las aplicaciones de búsqueda de escala extremadamente alta podrían estar muy ajustadas en un motor separado, o los requisitos reglamentarios podrían dictar almacenes de datos separados.

Un enfoque dividido también puede tener sentido si un tipo de carga de trabajo supera ampliamente al otro (por ejemplo, si se realizan búsquedas vectoriales en miles de millones de elementos, pero se tienen operaciones transaccionales relativamente ligeras; aunque incluso en ese caso, una solución unificada con la indexación adecuada puede gestionar una escala sorprendente).

Simplemente prepárese para invertir en las herramientas y el esfuerzo de ingeniería necesarios para mantener los dos sistemas en armonía. Si elige este camino, diseñe cuidadosamente los procesos de sincronización y considere utilizar flujos de cambios o buses de eventos para propagar los cambios de manera confiable. Además, evalúe el costo operativo: mantener la experiencia en dos plataformas y la integración entre ellas no es algo trivial.

Considere una arquitectura unificada si está creando una nueva aplicación impulsada por IA o modernizando una existente, y desea simplicidad, coherencia y velocidad de desarrollo. Si evitar los problemas de la sincronización de datos y reducir la complejidad operativa son prioridades, la arquitectura unificada es una excelente opción.

Una plataforma unificada destaca cuando su aplicación necesita una integración estrecha entre datos operativos y vectoriales; por ejemplo, realizar una búsqueda semántica con filtros de tiempo de ejecución en metadatos, o actualizar contenido y reflejarlo inmediatamente en los resultados de búsqueda.

Con una solución como la plataforma de datos moderna de MongoDB, obtendrá una base de datos totalmente gestionada y lista para la nube que puede gestionar tanto las necesidades de la aplicación en línea como las necesidades de búsqueda de IA en un solo lugar. Esto conduce a ciclos de desarrollo más rápidos (ya que el equipo puede trabajar con un sistema y un languaje del query) y a una mayor confianza en que los resultados de búsqueda reflejan el estado real de los datos en cualquier momento.

Diagrama que detalla los beneficios de la arquitectura unificada en MongoDB Atlas Vector Search. Estos beneficios incluyen la ausencia de problemas de sincronización, transacciones ACID, arquitectura simplificada, esquema y control de acceso unificados, latencia reducida y productividad del desarrollador.
Figura 6. Beneficios de la arquitectura unificada en MongoDB Atlas Vector Search.

De cara al futuro, una arquitectura unificada es probablemente el enfoque más preparado para el futuro. Las capacidades de IA evolucionan a un ritmo acelerado, por lo que tener los datos en un solo lugar le permite aprovechar las nuevas funcionalidades de inmediato.

Trabajamos con clientes de IA que crean aplicaciones de IA sofisticadas, y una observación clave es el requisito de optimizar las operaciones de procesamiento de datos dentro de las aplicaciones de IA que aprovechan los pipelines de RAG o la IA agéntica. Las operaciones críticas incluyen la fragmentación, la generación de incrustaciones, la operación de búsqueda vectorial y la reclasificación.

También hemos los modelos de incrustación de vanguardia de Voyage AI y reordenadores de incrustación de última generación en MongoDB. Pronto, estos modelos residirán dentro de MongoDB Atlas y permitirán la conversión de objetos de datos en incrustaciones y aplicarán una capa adicional de gestión de datos en los pipelines de recuperación, todo dentro de MongoDB Atlas. Este paso es una de las formas clave en que MongoDB continúa aportando inteligencia a la capa de datos y creando una base de datos verdaderamente inteligente para aplicaciones de IA.

La plataforma Atlas de MongoDB expande continuamente sus funcionalidades enfocadas en la IA (desde mejoras en la búsqueda vectorial hasta la integración con flujos de datos y análisis en tiempo real), todo mientras asegura que las garantías fundamentales de la base de datos (como las transacciones ACID y la alta disponibilidad) permanezcan sólidas. Esto significa que no tiene que rediseñar su capa de datos para adoptar el próximo gran avance en IA; su plataforma existente crece para admitirlo.

Como es comprensible, el debate sobre la arquitectura dividida frente a la unificada es un ejemplo clásico de equilibrar la especialización frente a la simplicidad. Los sistemas divididos pueden ofrecer componentes de primer nivel para cada tarea, pero a costa de la complejidad y una posible incoherencia. Los sistemas unificados ofrecen elegancia y facilidad al agrupar funciones en un mismo lugar, y han cerrado rápidamente la brecha en cuanto a funcionalidad y rendimiento.

Finalicemos con esto: MongoDB se creó para el cambio, y ese espíritu es exactamente lo que necesitan las organizaciones a medida que navegan por la revolución de la IA. Al consolidar su infraestructura de datos y adoptar tecnologías que unifican capacidades, usted proporciona a sus equipos la libertad de experimentar y la confianza para ejecutar. El futuro pertenecerá a aquellos que puedan aprovechar la IA y los datos de manera conjunta y fluida. Es hora de evaluar su propia arquitectura y asegurarse de que le permite surfear la ola de la innovación en IA y no dejarse arrastrar por ella.

megaphone

En una era centrada en la IA, la capacidad de adaptarse rápidamente y ejecutar con excelencia es lo que diferencia y define a los líderes. La elección de la infraestructura de base de datos es una parte fundamental de esa ejecución. Elija con cuidado: su próximo avance podría depender de eso. Pruebe MongoDB Atlas gratis hoy mismo o diríjase a nuestro Centro de aprendizaje de Atlas para mejorar sus habilidades en MongoDB Atlas.

Recursos de MongoDB
Centro de aprendizaje de Atlas|Estudios de casos de clientes|Centro de aprendizaje de IA|Documentación|MongoDB University