Docs Menu
Docs Home
/

Explorador de eventos multimodal con MongoDB y Voyage AI

Analice eventos no estándar extraídos de la salida de los sensores de conducción autónoma utilizando IA multimodal, búsqueda híbrida y un agente conversacional impulsado por AWS Bedrock y S3, y respaldado por MongoDB.

caso de uso: Inteligencia artificial, Internet of Things

Industrias: Manufactura y movimiento

Productos: MongoDB Atlas, MongoDB Search, MongoDB Vector Search, MongoDB Voyage AI,

emparejar: Amazon Bedrock

Los sistemas de conducción autónoma generan enormes volúmenes de datos de sensores: imágenes de alta resolución, barridos LiDAR, imágenes de radar y registros de telemetría. Dentro de esta avalancha de información, los datos más valiosos suelen ser los más raros: escenarios de conducción inusuales o inesperados, conocidos como casos límite o extremos. Estos datos incluyen animales en la carretera, intersecciones inundadas, zonas de construcción inusuales y otras situaciones que los sistemas autónomos rara vez encuentran durante la validación estándar y las pruebas en carretera.

Encontrar manualmente estos escenarios poco comunes es lento y costoso. Los científicos de datos suelen dedicar mucho tiempo a escribir filtros y scripts personalizados para localizar eventos específicos. Los métodos de búsqueda manual son lentos y solo resuelven un puñado de casos excepcionales al año, mientras que los equipos necesitan escalar esa cifra a miles.

El Explorador de Eventos Multimodales demuestra una forma de resolver este desafío combinando MongoDB Atlas Search con las incrustaciones de Voyage AI y un agente de IA conversacional. La solución permite a los equipos:

  • Para buscar eventos de conducción utilizando descripciones en lenguaje natural.

  • Para filtrar por condiciones ambientales, como el clima, la estación del año y la hora del día.

  • Para interactuar con un agente de IA basado en ReAct que razona sobre la base de datos en tiempo real.

Esta solución permite a los ingenieros y científicos de datos descubrir escenarios de conducción poco comunes a escala de flota en segundos en lugar de semanas, acelerando los ciclos de entrenamiento de los modelos y mejorando la seguridad y la fiabilidad de los sistemas de conducción autónoma.

La solución sigue una arquitectura por niveles con una clara separación entre la aplicación web, los servicios de backend y la plataforma de datos de la aplicación.

Arquitectura de alto nivel del Explorador de eventos multimodales

Figura 1. Arquitectura de alto nivel del Explorador de eventos multimodales.

El frontend está construido con Next.js y utiliza componentes de interfaz de usuario de LeafyGreen para una experiencia con la marca MongoDB. Proporciona las siguientes superficies de interacción principales:

  • Una barra de búsqueda con menús desplegables para filtrar metadatos.

  • Una cuadrícula de resultados que muestra imágenes coincidentes de eventos de conducción.

  • Un panel de chat para realizar consultas conversacionales a través del agente de IA.

Un backend de Python basado en FastAPI orquesta la lógica principal. Expone:

  • Una API de búsqueda híbrida que combina la búsqueda vectorial y la búsqueda de texto completo.

  • Una API de reclasificación que aplica la reclasificación de Voyage AI para refinar los resultados.

  • Un agente ReAct que utiliza AWS Bedrock (Claude) con un registro de descubrimiento de herramientas para analizar la base de datos.

Todos los datos residen en una única colección de MongoDB Atlas. Cada documento contiene:

  • La imagen del evento (o una referencia a ella en S3).

  • Una descripción de texto.

  • Campos de metadatos ambientales, como estación, clima, hora del día y puntuación de rareza,

  • Una incrustación vectorial de 1024dimensiones generada por el modelo voyage-multimodal-3 de Voyage AI.

MongoDB Atlas proporciona un índice de búsqueda vectorial (con cuantización escalar), un índice de búsqueda de texto completo y canales de agregación, todo ello consultado a través de una API unificada.

Voyage AI proporciona el modelo de incrustación (voyage-multimodal-3) para generar representaciones vectoriales de imágenes, metadatos y consultas, además de un modelo de reordenamiento (rerank-2) para mejorar la relevancia de los resultados.

AWS Bedrock aloja los modelos Claude, que dan soporte al agente de IA conversacional de esta solución. Los usuarios pueden acceder al agente a través del panel de chat ubicado en la esquina inferior derecha de la interfaz.

Interfaz de usuario de la solución

Figura 2. Interfaz de usuario de la solución

El agente razona sobre la pregunta del usuario, decide qué herramienta llamar, la ejecuta en la base de datos MongoDB en tiempo real, observa el resultado y repite el proceso hasta que puede proporcionar una respuesta final.

El agente utiliza estas herramientas:

  1. search_events: Ejecuta una búsqueda híbrida de vectores y texto en la colección de MongoDB.

  2. get_stats: Utiliza una agregación $facet que devuelve el clima, la estación, las distribuciones de la hora del día y las estadísticas de rareza en toda la colección.

  3. compare_scenariosRealiza dos búsquedas paralelas que se muestran una al lado de la otra. El agente transmite su historial de ejecución a la interfaz de usuario en tiempo real, de modo que cada llamada a la herramienta y cada resultado se visualizan al instante.

compare_scenarios Se muestra un patrón de interacción humana (HITL). Cuando Claude decide ejecutarlo, el servidor pausa la transmisión y envía una solicitud de aprobación a la interfaz de usuario antes de que la herramienta se ejecute. El usuario debe hacer clic en Aprobar o Rechazar. Si no se recibe respuesta en 60 segundos, la herramienta se omite automáticamente.

Nota: Para activar este flujo, los usuarios pueden abrir el panel de chat y hacer clic en la pregunta sugerida titulada "Demostración de intervención humana", o escribir cualquier pregunta que le pida al agente que compare dos escenarios de conducción, como "Comparar escenarios de conducción con niebla y con buen tiempo".

La solución almacena todos los datos de eventos en una única colección de MongoDB, aprovechando el modelo de documentos flexible para ubicar conjuntamente información multimodal que normalmente requeriría costosas uniones entre múltiples tablas en un sistema relacional. Esto se traduce en consultas más rápidas y un modelo de datos más simple a medida que aumenta la complejidad de los eventos. El siguiente fragmento ilustra el modelo de documentos en la práctica:

{
"event_id": "e_00601",
"domain": "adas",
"source_dataset": "autonomous-driving-dataset",
"image_path": "adas/e_00601.jpg",
"image_url": null,
"image_embedding": [0.0412, -0.0183, 0.0097, "... 1021 more values ..."],
"text_description": "A foggy night scene on a rural road with low visibility and no other vehicles in sight.",
"metadata": {
"season": "fall",
"time_of_day": "night",
"weather": "foggy",
"environment": "rural",
"rarity_score": 0.847,
"source_index": 601
},
"embedding_metadata": {
"model": "voyage-multimodal-3.5",
"dimensions": 1024,
"original_bytes": 4096,
"quantized_bytes": 1024
},
"created_at": "2025-03-15T09:42:11.000Z",
"updated_at": null
}

Cada documento de evento contiene estos campos clave:

  • event_id: Identificador único para el evento, coincide con el nombre del archivo de imagen en el disco o en S3.

  • domain: Categoría del evento (por ejemplo, "adas" para conducción autónoma).

  • source_dataset: El conjunto de datos original.

  • image_path: Ruta relativa a la imagen en el sistema de archivos local.

  • image_url: S3 o URL de CloudFront una vez que las imágenes se migran al almacenamiento en la nube; nulo en desarrollo local.

  • image_embedding: Vector float32 de 1024dimensiones generado por Voyage AI (voyage-multimodal-3 o 3.5).

  • text_description: Descripción de la escena en lenguaje natural, utilizada para la búsqueda de texto completo en el Atlas.

  • metadata: Objeto anidado que contiene:

    • season: primavera, verano, otoño o invierno.

    • time_of_day: amanecer, día, atardecer o noche.

    • weather: despejado, nublado, lluvioso o con niebla.

    • environment: entorno de conducción (por ejemplo, rural).

    • rarity_score: 0–1 indicador de cuán poco común es el escenario.

  • embedding_metadata: Registra el nombre del modelo de incrustación, las dimensiones del vector y los tamaños de bytes tanto para las representaciones originales float32 como para las cuantizadas int8.

  • created_at: Marca de tiempo UTC del momento en que se ingirió el documento.

Al ubicar la referencia de la imagen, la descripción textual, los metadatos y la representación vectorial en un solo documento, la solución elimina las uniones. Una consulta de búsqueda híbrida puede coincidir con la representación vectorial y la descripción textual simultáneamente, aplicar prefiltros en los campos de metadatos (season, weather, time_of_day) y devolver resultados completos en una sola consulta.

La agregación $facet permite al agente de IA calcular estadísticas de distribución, como el desglose del clima, el recuento de eventos por temporada, los histogramas de la hora del día y las estadísticas de puntuación de rareza (promedio, mínimo, máximo), en toda la colección en una única ejecución de la canalización, sin necesidad de realizar múltiples consultas.

El índice de búsqueda vectorial aplica cuantización escalar en la capa de índice, comprimiendo las incrustaciones float32 de dimensión 1024de 4,096 bytes a 1,024 bytes por vector (int8). Esta estrategia de indexación reduce la carga útil del vector en memoria en un 75% y mantiene aproximadamente un 90% de recuperación en comparación con la búsqueda de fidelidad completa. Los campos de filtro, incluidos domain, metadata.season, metadata.time_of_day y metadata.weather, se declaran directamente en la misma definición de índice. Esta configuración permite que el prefiltrado de metadatos se realice dentro de $vectorSearch antes de que se devuelvan los resultados a la aplicación.

El código fuente completo con un archivo README detallado está disponible en el repositorio público de Github de Industry Solutions.Para implementar la solución, siga estos pasos.

  • Python 3.13

  • Node.js 18 o superior (se recomienda LTS)

  • uv para la gestión de dependencias de Python

  • Un clúster MongoDB Atlas

  • Una clave API de Voyage AI

  • Credenciales de AWS con acceso a Bedrock

1

La solución utiliza el conjunto de datos de conducción autónoma MIST en HuggingFace (jongwonryu/MIST-autonomous-driving-dataset), pero puede sustituirlo por su propio conjunto dedatos siguiendo las instrucciones de configuración en el archivo README. El proceso de ingesta realiza los siguientes pasos:

  • Transmite imágenes desde HuggingFace.

  • Aplica un filtro de diversidad para garantizar una cobertura equilibrada en todas las combinaciones de clima, estación del año y hora del día.

  • Genera incrustaciones multimodales a través de Voyage AI (voyage-multimodal-3).

  • Inserta documentos con índices de búsqueda vectorial y búsqueda Atlas en MongoDB.

Ejecuta la canalización desde el directorio backend/:

uv run python services/ingestion_pipeline.py --sample-size 1000

Este comando transmite aproximadamente entre 1y2 GB y procesa alrededor de 1,000 imágenes diversas en 15a30 minutos. El tamaño de muestra predeterminado es 500 si se omite el indicador.

2

Copia el archivo de entorno de ejemplo y rellénalo con tus credenciales:

cp backend/.env.example backend/.env

Establecer MONGODB_URI, DATABASE_NAME, VOYAGE_API_KEY y, opcionalmente, AWS_REGION / AWS_PROFILE.

Inicie el servidor FastAPI desde el directorio backend/:

uv run uvicorn main:app --host 0.0.0.0 --port 8000
3

Copia el ejemplo de entorno de frontend a frontend/.env.local, instala las dependencias de Node con npm install e inicia el servidor de desarrollo con npm run dev. El frontend es accesible en http://localhost:.3000

cp frontend/EXAMPLE.env frontend/.env.local
cd frontend && npm install && npm run dev
4

Para el despliegue en contenedores, ejecute `make build` desde el directorio raíz. Docker Compose monta las credenciales locales de AWS para que el backend pueda acceder a Bedrock sin claves estáticas. Use `make clean` para detener y eliminar los contenedores.

5

Una vez que la demostración esté activa, envíe una consulta como "conducción nocturna en condiciones nubladas" para ver el proceso en acción. El proceso se ejecuta en este orden:

  1. Prefiltro: Si el usuario seleccionó filtros de metadatos (temporada, clima, hora del día), estos campos se aplican como prefiltros dentro de $vectorSearch, lo que reduce el conjunto de candidatos para la búsqueda.

  2. $rankFusion Búsqueda híbrida: La consulta se inserta utilizando voyage-multimodal-3 y ejecuta simultáneamente una búsqueda vectorial en el índice cuantificado escalar y una búsqueda de texto completo en MongoDB. Los resultados se combinan mediante Reciprocal Rank Fusion en una única canalización de agregación.

  3. Reclasificador: Los resultados combinados utilizan Voyage AI rerank-2 para la reclasificación, que evalúa cada candidato en función del texto de consulta original para mejorar la precisión.

  • Acelere la detección de casos excepcionales con la búsqueda híbrida: la combinación de la búsqueda vectorial y la búsqueda de texto completo a través de la base de datos $rankFusion de MongoDB permite a los equipos encontrar escenarios de conducción poco comunes mediante consultas en lenguaje natural. Este enfoque también permite identificar términos técnicos específicos, códigos de error o identificadores de sensores que la búsqueda semántica pura podría pasar por alto.

  • Reduzca los costos de infraestructura con la cuantización escalar: MongoDB Atlas Vector Search comprime 102432 vectores float de dimensión a8 int, logrando un ahorro de memoria sin comprometer la exhaustividad. Para conjuntos de datos con millones de incrustaciones, esta compresión se traduce directamente en menores requisitos de hardware.

  • Simplifique la gestión de datos multimodales con el modelo de documento: almacenar imágenes, incrustaciones, descripciones de texto y metadatos en un único documento de MongoDB elimina la sobrecarga de sincronización que supone mantener bases de datos separadas para los datos operativos, un motor de búsqueda y un almacén de vectores.

  • Potencie a los científicos de datos con acceso conversacional: el agente de IA basado en ReAct, con respaldo de AWS Bedrock, permite la interacción en lenguaje natural con los datos de la flota. En lugar de escribir consultas de agregación personalizadas, los equipos pueden formular preguntas como "¿Comparar escenarios de conducción con niebla y con buen tiempo?" y recibir análisis estructurados con registros de ejecución de herramientas.

  • Mejora la calidad de la recuperación con la función de reclasificación de Voyage AI: Añadir un paso de reclasificación después de una búsqueda híbrida mejora significativamente la precisión de los resultados. El modelo rerank- de Voyage AI2 vuelve a puntuar los candidatos en función de la consulta original, colocando los resultados más relevantes contextualmente en la parte superior.

  • Humza Akhtar, MongoDB

Volver

RAG contextual para Docs técnicos

En esta página