Analise eventos não padrão obtidos a partir da saída de sensores de direção autônoma usando IA multimodal, pesquisa híbrida e um agente de conversação com base no AWSBedrock e S3, e apoiado pelo MongoDB.
Casos de uso: Inteligência artificial, IoT
Setores: Manufatura e movimento
Produtos: MongoDB Atlas, PesquisaMongoDB , Vector Search MongoDB, MongoDB Voyage AI,
Parceiros: Amazon Bedrock
Visão Geral da Solução
Os sistemas de direção autônoma geram volumes enormes de dados de sensores: imagens de alta resolução, varreduras LiDAR, armações de mapa e registros de telemetria. Nesse fluxo de informações, os pontos de dados mais valiosos geralmente são os mais raros: cenários de direção incomuns ou inesperados conhecidos como casos extremos ou de curva. Esses pontos de dados incluem animal na via, interseções alagadas, zonas de construção incomuns e outras situações que sistemas autônomos raramente encontram durante a validação do padrão e os testes em via pública.
Encontrar esses cenários raros manualmente é lento e caro. Os Cientistas de Dados geralmente passam um tempo significativo escrevendo filtros e scripts personalizados para localizar eventos específicos. Os métodos de pesquisa manual são lentos e podem resolver apenas alguns casos extremos por ano, enquanto as equipes precisam escalar esse número para milhares.
O Multimodal Event Explorer demonstra uma maneira de resolver esse desafio, combinando o Atlas Search com incorporações do Voyage AI e um agente de IA de conversação. A solução habilita as equipes:
Para pesquisar eventos de direção usando descrições de linguagem natural.
Para filtrar por condições ambientais, como tempo, estação e hora do dia.
Para interagir com um agente de IA baseado em ReAct que analisa o banco de dados em tempo real.
Essa solução permite que engenheiros e Cientistas de Dados descobrirem cenários de direção raros na escala da Frota em segundos em vez de semanas, acelerando os ciclos de treinamento do modelo e melhorando a segurança e a confiabilidade dos sistemas de direção autônomos.
Arquiteturas de referência
A solução segue uma arquitetura em camadas com uma separação clara entre o aplicação web, os serviços de backend e a plataforma de dados do aplicação .
figura 1. Arquitetura de alto nível do Multimodal Event Explorer
Aplicativo Web
O frontend é construído com Next.js e usa componentes da interface do usuário LeafyGreen para uma experiência da marca MongoDB. Ele fornece as seguintes interfaces principais de interação:
Uma barra de pesquisa com menus suspensos de filtros de metadados.
Uma grade de resultados exibindo imagens de evento de direção correspondentes.
Um painel de bate-papo para consultas de conversação por meio do agente de IA.
Serviços de backend
Um backend de Python baseado em FastAPI orquestra a lógica central. Ele expõe:
Uma API de pesquisa híbrida que combina pesquisa vetorial e de texto completo.
Uma API Reranker que aplica a reclassificação da Voyage AI para refinar os resultados.
Um agente ReAct que usa o AWSBedrock (Classe) com um registro de descoberta de ferramentas para lidar com o banco de dados.
Plataforma de Dados: MongoDB Atlas
Todos os dados residem em uma única coleção MongoDB Atlas . Cada documento contém:
A imagem do evento (ou uma referência a ela no S3).
Uma descrição de texto.
Campos de metadados ambientais, como estação do ano, condições meteorológicas, hora do dia e pontuação de raridade,
Uma incorporação de vetor 1024-dimensional gerada pelo modelo priority-multimodal-3 da Voyage AI.
O MongoDB Atlas fornece o índice de pesquisa vetorial (com quantização escalar), um índice de pesquisa de texto completo e pipelines de agregação , todos consultados por meio de uma API unificada.
A Voyage AI fornece o modelo de incorporação (voyage-multimodal-3) para gerar representações vetoriais de imagens, metadados e queries, além de um modelo de reclassificação (rerank-2) para melhorar a relevância dos resultados.
Serviços externos
O AWS FeedRock hospeda modelos Class, que capacitam o agente de IA conversacional para essa solução. Os usuários podem acessar o agente por meio do painel de chat localizado no canto inferior direito da interface.
figura 2. Interface do usuário da solução
O agente raciocina sobre a pergunta do usuário, decide qual ferramenta chamar, executa-a no banco de dados MongoDB em tempo real, observa o resultado e repete o processo até que possa fornecer uma resposta final.
O agente usa estas ferramentas:
search_events: Executa pesquisa híbrida de vetor e texto na collection do MongoDB .get_stats: usa uma agregação$facetque retorna distribuições de tempo, estação do dia e estatísticas de raridade em toda a coleção.compare_scenarios: Executa duas pesquisas paralelas retornadas lado a lado. O agente transmite seu rastreamento de execução para a UI em tempo real, para que cada chamada e resultado de ferramenta fique visível no momento em que acontece.
compare_scenarios demonstra um padrão humano-in-the-loop (HITL). Quando Classe decide chamá-lo, o back-end pausa o fluxo e envia um prompt de aprovação para a UI antes que a ferramenta seja executada. O usuário deve clicar em Aprovar ou Rejeitar. Se nenhuma resposta chegar em 60 segundos, a ferramenta será automaticamente ignorada.
Observação: para acionar esse fluxo, os usuários podem abrir o painel de bate-papo e clicar na pergunta sugerida "Human in the loop demo", ou digitar qualquer pergunta solicitando ao agente que compare dois cenários de direção, como "Compare cenários de direção com nuvem e tempo limpo ".
Abordagem do modelo de dados
A solução armazena todos os dados de evento em uma única collection do MongoDB , aproveitando o modelo de documento flexível para colocalizar informações multimodais que normalmente exigiriam junções dispendiosas em várias tabelas em um sistema relacional, resultando em queries mais rápidas e um modelo de dados mais simples à medida que a complexidade do evento aumenta . O seguinte trecho ilustra o modelo de documento na prática:
{ "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 }
Estrutura do documento
Cada documento de evento contém estes campos principais:
event_id: identificador exclusivo do evento, corresponde ao nome do arquivo de imagem no disco ou em S3.domain: Categoria do evento (por exemplo, "adas" para direção autônoma).source_dataset: O conjunto de dados de origem.image_path: Caminho relativo para a imagem no sistema de arquivos local.image_url: S3 ou URL do CloudFront depois que as imagens forem migradas para o armazenamento na nuvem; nulo em desenvolvimento local.image_embedding: Vetor de flutuação 1024-dimensional32 gerado pela IA do Voyage (voyage-multimodal-3 ou 3.5).text_description: descrição em linguagem natural da cenário , usada para texto completo do Atlas Search.metadata: objeto aninhado contendo:season: primavera, verão, queda ou inver no.time_of_day: alvorecer, dia, entardecer ou noite.weather: limpo, nublodo, húmido ou nublodo.environment: ambiente de direção (por exemplo, campo).rarity_score: 0–1 indicador de quão incomum é o cenário.
embedding_metadata: rastreia o nome do modelo de incorporação, as dimensões vetoriais e os tamanhos de bytes para as representações originais float32 e quantizadas8.created_at: carimbo de data/hora UTC de quando o documento foi ingerido.
Por que esse modelo funciona
Ao colocalizar a referência da imagem, a descrição do texto, os metadados e a incorporação de vetores em um único documento, a solução elimina as junções. Uma query de pesquisa híbrida pode corresponder à incorporação vetorial e à descrição de texto simultaneamente, aplicar pré-filtros em campos de metadados (season, weather, time_of_day) e retornar resultados completos em uma única ida e volta.
A agregação $facet permite que o agente de IA calcule estatísticas de distribuição — como detalhamento meteorológico, contagens de evento por estação, histogramas de hora do dia e estatísticas de pontuação de raridade (média, mínima, máxima) — em toda a coleção em um único execução do pipeline, sem a necessidade de múltiplas queries.
Índice vetorial com quantização escalar
O índice de pesquisa vetorial aplica quantização escalar na camada do índice, comprimindo as incorporações 1024-dimensional32 de 4,096 bytes para baixo para 1,024 bytes por vetor (int8). Essa estratégia de indexação reduz a carga útil do vetor na memória em 75% e retém aproximadamente 90% da recuperação em comparação com a pesquisa de fidelidade total. Os campos de filtro, incluindo domain, metadata.season, metadata.time_of_day e metadata.weather, são declarados diretamente na mesma definição de índice. Essa configuração permite que a pré-filtragem de metadados ocorra dentro de $vectorSearch antes que qualquer resultado seja retornado ao aplicação.
Construir a solução
O código fonte completo com README detalhado está disponível no repositório público Github da Indústria Soluções. Para implementar a solução, siga estas etapas.
Pré-requisitos
Python 3.13
Node.js 18 ou superior (LTS recomendado)
uv para gerenciamento de dependência do Python
Um cluster MongoDB Atlas
Uma chave de API do Voyage AI
Credenciais AWS com acesso Cama do Rock
Ignorar o Conjunto de Dados
A solução usa o conjunto de dados de direção autônoma MIST no HuggingFace (jongwonryu/MIST-autonomous-driver-dataset), mas você pode substituir seu próprio conjunto de dados seguindo as instruções de configuração no README. O pipeline de ingestão realiza os seguintes processos:
Transmite imagens do HuggingFace.
Aplica gatilhos de variedade para garantir uma cobertura balanceada em combinações de tempo do dia, estação do ano.
Gera incorporações multimodais via Voyage AI (voyage-multimodal-3).
Insere documentos com índices Vector Search e Atlas Search no MongoDB.
Execute o pipeline a partir do diretório backend/:
uv run python services/ingestion_pipeline.py --sample-size 1000
Este comando transmite aproximadamente 1a2 GB e processa cerca de 1,000 imagens diversas em 15a30 minutos. O tamanho da amostra padrão é 500 se o sinalizador for omitido.
Configurar o Backend
Copie o arquivo de ambiente de exemplo e preencha-o com suas credenciais:
cp backend/.env.example backend/.env
Defina MONGODB_URI, DATABASE_NAME, VOYAGE_API_KEY e, opcionalmente, AWS_REGION / AWS_PROFILE.
Inicie o servidor FastAPI a partir do diretório backend/:
uv run uvicorn main:app --host 0.0.0.0 --port 8000
Configurar o frontend
Copie o exemplo de ambiente frontend para frontend/.env.local, instale as dependências do Node com npm install e inicie o servidor de desenvolvimento com npm run dev. O frontend está acessível em http://localhost:.3000
cp frontend/EXAMPLE.env frontend/.env.local cd frontend && npm install && npm run dev
Explorar a pipeline de query
Quando a demonstração estiver ao vivo, envie uma query como "dirigir à noite em condições de nuvem" para ver o pipeline em ação. O pipeline é executado nesta ordem:
Pré-filtro: Se o usuário selecionou filtros de metadados (estação do ano, tempo do dia), estes campos serão aplicados como pré-filtros dentro do $vectorSearch, restringindo o conjunto de candidatos para pesquisa.
$rankFusionPesquisa híbrida: a consulta é incorporada usandovoyage-multimodal-3e executa simultaneamente uma pesquisa vetorial em relação ao índice quantizado escalar e uma pesquisa MongoDB de texto completo. Os resultados usam a Reciprocal Class Fusion para mesclar em um único pipeline de agregação .Reclassificação: os resultados mesclados usam o Voyage AI
rerank-2para reclassificação, que pontua cada candidato em relação ao texto original da query para maior precisão.
Principais Aprendizados
Acelere a descoberta de casos extremos com pesquisa híbrida: a combinação de pesquisa vetorial e de texto completo por meio do do MongoDB
$rankFusionpermite que as equipes encontrem cenários de direção raros usando queries de linguagem natural. Essa abordagem também corresponde a termos técnicos específicos, códigos de falha ou IDs de sensores que a pesquisa semântica pura pode perder.Reduzir os custos de infraestrutura com a quantização escalar: o MongoDB Atlas Vector Search comprime 102432 vetores de flutuação dimensionais para int,8 gerando economia de memória e preservando a recuperação. Para conjuntos de dados com milhões de incorporações, essa compressão se traduz diretamente em requisitos de hardware mais baixos.
Simplifique o gerenciamento de dados multimodal com o modelo de documento: armazenar imagens, incorporações, descrições de texto e metadados em um único documento do MongoDB elimina a sobrecarga de sincronização de manter bancos de dados separados para dados operacionais, um mecanismo de pesquisa e um armazenamento de vetores.
Capacitar os Cientistas de Dados com acesso de conversação: o agente de IA baseado no ReAct e apoiado pelo AWS Ler mais permite a interação de linguagem natural com dados da Frota. Em vez de escrever queries de agregação personalizadas, as equipes podem fazer perguntas como "Compare cenários de direção de tempo húmido vs. limpo" e receber análise estruturada com rastreamentos de execução de ferramentas.
Melhore a qualidade da recuperação com a reclassificação da Voyage AI: adicionar uma etapa de reclassificação após a pesquisa híbrida melhora significativamente a precisão dos resultados. O modelo de reclassificação da Voyage AI2 reclassifica os candidatos em relação à query original, empurrando os resultados mais contextualmente relevantes para o topo.
Autores
Humza Akhtar, MongoDB