Docs Menu
Docs Home
/

MongoDB 및 Voyage AI 사용한 멀티모달 이벤트 탐색기

멀티모달 AI, 하이브리드 검색 , AWS 베드락 및 S3 기반 MongoDB 가 지원하는 대화형 에이전트 사용하여 자율 주행 센서 출력에서 가져온 비표준 이벤트를 분석합니다.

사용 사례: 인공 지능, IoT

산업: 제조 및 모션

제품: MongoDB Atlas, MongoDB Search, MongoDB Vector Search, MongoDB Voyage AI,

파트너: Amazon Bedrock

자율 주행 시스템은 고해상도 이미지, LiDAR 스윕, 레이다 프레임, 원격 측정 로그 등 엄청난 양의 센서 데이터 생성합니다. 이러한 정보의 범람 속에서 가장 중요한 데이터 포인트는 가장 드문 경우가 많습니다: 엣지 또는 코너 케이스로 알려진 비정상적이거나 예기치 않은 주행 시나리오입니다. 이러한 데이터 포인트에는 도로 위의 동물, 물에 잠긴 교차로, 비정상적인 건설 구역, 표준 유효성 검사 및 도로 테스트 중에 자율 시스템이 거의 발생하지 않는 기타 상황이 포함됩니다.

이러한 드문 시나리오를 수동으로 찾는 것은 느리고 비용이 많이 듭니다. 데이터 과학자는 특정 이벤트를 찾기 위해 사용자 지정 필터와 스크립트를 작성하는 데 상당한 시간을 소비하는 경우가 많습니다. 수동 검색 방법은 속도가 느리고 연간 소수의 엣지 케이스만 해결할 수 있는 반면, 팀은 이 수를 수천 개로 확장하다 해야 합니다.

멀티모달 이벤트 탐색기는 MongoDB Atlas Search와 Voyage AI 임베딩 및 대화형 AI 에이전트 결합하여 이 과제 해결하는 한 가지 방법을 보여줍니다. 이 솔루션을 통해 팀은 다음을 수행할 수 있습니다.

  • 언어 설명을 사용하여 주행 이벤트를 검색 .

  • 날씨, 계절, 시간 등 환경 조건을 기준으로 필터하다 합니다.

  • 데이터베이스 실시간 추론하는 ReAct 기반 AI 에이전트 와 상호 작용 합니다.

This solution allows engineers and data scientists to discover rare driving scenarios at fleet scale in seconds rather than weeks, accelerating model training cycles and improving the safety and reliability of autonomous driving systems.

이 솔루션은 웹 애플리케이션, 백엔드 서비스 및 애플리케이션 데이터 플랫폼이 명확하게 분리된 계층형 아키텍처를 따릅니다.

멀티모달 이벤트 탐색기의 상위 수준 아키텍처

그림 1. 멀티모달 이벤트 탐색기의 상위 수준 아키텍처

프론트엔드 Next.js로 구축되었으며 MongoDB 브랜드 환경을 위해 LeafyGreen UI 구성 요소를 사용합니다. 다음과 같은 주요 상호 작용 표면을 제공합니다.

  • 메타데이터 필터하다 드롭다운이 있는 검색 줄입니다.

  • 일치하는 주행 이벤트 이미지를 표시하는 결과 그리드입니다.

  • AI 에이전트 통한 대화 쿼리를 위한 채팅 패널입니다.

FastAPI 기반 Python 백엔드 핵심 로직을 조정합니다. 다음을 노출합니다.

  • 벡터 검색과 전체 텍스트 검색 결합한 하이브리드 검색 API .

  • Voyage AI reranking을 적용하여 결과를 구체화하는 Reranker API .

  • 도구 검색 레지스트리와 함께 AWS 기반암(Claude)을 사용하여 데이터베이스 추론하는 ReAct 에이전트 입니다.

모든 데이터는 단일 MongoDB Atlas 컬렉션 에 있습니다. 각 문서 에는 다음이 포함됩니다.

  • 이벤트 이미지에 대한3 참조)입니다.

  • 텍스트 설명입니다.

  • 시즌, 날씨, 시간, 희소성 점수와 같은 환경 메타데이터 필드,

  • Voyage AI의 voyage-multimodal-3 모델에 의해 생성된 1024차원 벡터 임베딩입니다.

MongoDB Atlas 통합 API 통해 쿼리되는 벡터 검색 인덱스 (스칼라 양자화 포함), 전체 텍스트 검색 인덱스, 집계 파이프라인을 모두 제공합니다.

Voyage AI 이미지, 메타데이터 및 쿼리의 벡터 표현을 생성하기 위한 임베딩 모델(voyage-multimodal-3)과 결과 관련성을 개선하기 위한 reranker 모델(rerank-2)을 제공합니다.

AWS 베드락은 이 솔루션의 대화형 AI 에이전트 지원하는 Claude 모델을 호스팅합니다. 사용자는 인터페이스의 오른쪽 하단에 있는 채팅 패널을 통해 에이전트 에 액세스 할 수 있습니다.

솔루션 사용자 인터페이스

그림 2. 솔루션 사용자 인터페이스

에이전트 사용자의 질문에 대해 추론하고, 호출할 도구를 결정하고, 라이브 MongoDB database 대상으로 도구를 실행하고, 결과를 관찰하고, 최종 응답을 제공할 수 있을 때까지 프로세스 반복합니다.

에이전트 다음 도구를 사용합니다.

  1. search_events: MongoDB 컬렉션 에 대해 하이브리드 벡터 및 텍스트 검색 실행합니다.

  2. get_stats: 전체 컬렉션 의 날씨, 계절, 시간 분포 및 희소성 통계를 반환하는 $facet 집계 사용합니다.

  3. compare_scenarios: 반환된 두 개의 병렬 검색을 나란히 수행합니다. 에이전트 실행 추적을 실시간 UI 에 스트리밍하므로 모든 도구 호출과 결과가 발생하는 즉시 볼 수 있습니다.

compare_scenarios 는 HITL(Human-in-the-Loop) 패턴 보여줍니다. Claude가 이를 호출하기로 결정하면 백엔드 스트림 을 일시 중지하고 도구가 실행되기 전에 UI 에 승인 프롬프트를 보냅니다. 사용자는 승인 또는 거부를 클릭해야 합니다. 60 초 이내에 응답이 도착하지 않으면 도구가 자동으로 건너뜁니다.

참고: 이 흐름을 트리거하다 하려면 사용자는 채팅 패널을 열고 '휴먼 인 인 더 루프(Human in the Loop) 데모'라는 제안 질문을 클릭하거나 에이전트 두 가지 운전 시나리오를 비교하도록 요청하는 질문(예: "안개가 낀 운전 시나리오와 맑은 날씨 운전 시나리오 비교하기")을 입력할 수 있습니다. ".

이 솔루션은 모든 이벤트 데이터를 단일 MongoDB 컬렉션 에 저장하고, 유연한 문서 모델 활용하여 관계형 시스템의 여러 테이블에 걸쳐 일반적으로 비용이 많이 드는 조인이 필요한 멀티모달 정보를 함께 배치하여 이벤트 복잡성이 증가함에 따라 쿼리 속도를 높이고 데이터 모델 간소화합니다. . 다음 스니펫은 실제 문서 모델 보여줍니다.

{
"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
}

각 이벤트 문서 다음과 같은 키 필드가 포함되어 있습니다.

  • event_id: Unique identifier for the event, matches the image filename on disk or in S3.

  • domain: 이벤트 의 카테고리(예: 자율 주행의 경우 'adas')입니다.

  • source_dataset: 원본 데이터 세트입니다.

  • image_path: 로컬 파일 시스템에 있는 이미지의 상대 경로입니다.

  • image_url: 이미지가 cloud 저장 로 마이그레이션된 후 S3 또는 CloudFront URL ; 로컬 개발에서는 null입니다.

  • image_embedding: Voyage AI 에 의해 생성된 1024차원 float32 벡터(voyage-multimodal-3 또는 3.5).

  • text_description: 전체 텍스트 Atlas Search 에 사용되는 장면에 대한 언어 설명입니다.

  • metadata: 다음을 포함하는 중첩 객체 :

    • season: 봄, 여름, 가을, 또는 겨울.

    • time_of_day: 새벽, 낮, 황혼 또는 밤.

    • weather: 맑음, 흐림, 비 또는 흐림.

    • environment: 운전 환경(예: 전원 지역).

    • rarity_score: 0-1 시나리오가 얼마나 흔하지 않은지 나타내는 지표입니다.

  • embedding_metadata: 원본 float32 및 양자화된 int8 표현 모두에 대한 임베딩 모델 이름, 벡터 크기 및 바이트 크기를 추적합니다.

  • created_at: 문서 수집된 시점의 UTC 타임스탬프입니다.

이 솔루션은 이미지 참조, 텍스트 설명, 메타데이터 및 벡터 임베딩을 단일 문서 에 함께 배치하여 조인을 제거합니다. 하이브리드 검색 쿼리 벡터 임베딩과 텍스트 설명을 동시에 일치시키고, 메타데이터 필드(season, weather, time_of_day)에 사전 필터를 적용 , 한 번의 왕복으로 완전한 결과를 반환할 수 있습니다.

AI 에이전트 $facet 집계 통해 날씨 분석, 시즌별 이벤트 수, 하루 중 히스토그램, 희소성 점수 통계(평균, 최소, 최대)와 같은 분포 통계를 단일 컬렉션 에서 계산할 수 있습니다. 파이프라인 쿼리가 필요하지 않습니다.

벡터 검색 인덱스 인덱스 계층에서 스칼라 양자화를 적용하여 벡터당 1024차원 float32 임베딩을 4,096 바이트에서 1,024 바이트로 압축합니다(int8). 이 인덱싱 전략은 완전 충실도 검색 에 비해 인메모리 벡터 페이로드를 75% 줄이고 재현율을 약 90% 유지합니다. domain, metadata.season, metadata.time_of_day, metadata.weather 등의 필터하다 필드는 동일한 인덱스 정의에서 직접 선언됩니다. 이 설정 하면 결과가 애플리케이션 에 반환되기 전에 $vectorSearch 내에서 메타데이터 사전 필터링이 수행될 수 있습니다.

자세한 README가 포함된 전체 소스 코드 산업 솔루션 공개 Github 리포지토리 에서 확인할 수 있습니다. 솔루션을 배포 하려면 다음 단계를 따르세요.

  • Python 3.13

  • Node.js 18 이상(LTS 권장)

  • Python 종속성 관리 위한 uv

  • MongoDB Atlas cluster

  • Voyage AI API 키

  • 베드락 액세스 권한이 있는 AWS 자격 증명

1

이 솔루션은 HuggingFace에서 MIST 자율 주행 데이터 세트(joongwonryu/MIST-autonomous-driver-dataset)를 사용하지만,README의 설정 지침에 따라 자체 데이터 세트를 대체할 수 있습니다. 수집 파이프라인 다음 프로세스를 수행합니다.

  • HuggingFace에서 이미지를 스트리밍합니다.

  • 다이버시티 게이팅을 적용하여 날씨, 계절, 시간 조합에 걸쳐 균형 잡힌 커버리지를 보장합니다.

  • Voyage AI 통해 멀티모달 임베딩을 생성합니다(voyage-multimodal-3).

  • Vector Search 및 Atlas Search 인덱스가 있는 문서를 MongoDB 에 삽입합니다.

백엔드/ 디렉토리 에서 파이프라인 실행합니다.

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

이 명령은 약 1~2 GB 스트리밍하고 약 1,000 의 다양한 이미지를 15~30 분 내에 처리합니다. 플래그가 생략된 경우 기본값 샘플 크기는 500 입니다.

2

예시 환경 파일 복사하여 자격 증명 으로 채웁니다.

cp backend/.env.example backend/.env

MONGODB_URI, DATABASE_NAME, VOYAGE_API_KEY 및 선택적으로 AWS_REGION / AWS_PROFILE를 설정합니다.

백엔드/ 디렉토리 에서 FastAPI 서버 시작합니다.

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

프론트엔드 환경 예시 프론트엔드/.env.local에 복사하고, npm install로 노드 종속성을 설치하고, npm 실행 dev로 개발 서버 시작합니다. 프론트엔드 는 http://localhost:3000 에서 액세스할 수 있습니다.

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

컨테이너화된 배포서버 의 경우 루트 디렉토리 에서 make 빌드 실행 . Docker Compose는 로컬 AWS 자격 증명 마운트하여 백엔드 정적 키 없이 베드락에 연결할 수 있도록 합니다. make Clean을 사용하여 컨테이너를 중지하고 제거 .

5

데모가 시작되면 '흐린 날씨의 야간 드라이브'와 같은 쿼리 제출 파이프라인 조치 하는 모습을 확인하세요. 파이프라인 다음과 같은 순서로 실행됩니다.

  1. 사전 필터: 사용자가 메타데이터 필터(계절, 날씨, 시간)를 선택한 경우 이러한 필드는 $vectorSearch 내에서 사전 필터로 적용되어 검색 후보 설정하다 좁힙니다.

  2. $rankFusion 하이브리드 검색: 쿼리 를 사용하여 voyage-multimodal-3 포함되며 스칼라 양자화된 인덱스 대한 벡터 검색 과 전체 텍스트 MongoDB Search를 동시에 실행합니다. 결과는 Reciprocal Rank Federation을 사용하여 단일 집계 파이프라인 으로 병합됩니다.

  3. Reranker: 병합된 결과는 순위 변경에Voyage AI 를 rerank-2 사용하며, 이는 정밀도를 높이기 위해 원본 쿼리 텍스트에 대해 각 후보에 점수를 매깁니다.

  • 하이브리드 검색 으로 엣지 케이스 발견 가속화: MongoDB의 을(를) 통해 벡터 검색 과 전체 텍스트 검색 결합하면 $rankFusion 팀이 언어 쿼리를 사용하여 드문 주행 시나리오를 찾을 수 있습니다. 이 접근 방식은 순수 시맨틱 검색 놓칠 수 있는 특정 기술 용어, 오류 코드 또는 센서 ID와도 일치합니다.

  • 스칼라 양자화로인프라 비용 절감: MongoDB Atlas Vector Search는 1024차원 float32 벡터를 int 로8 압축하여 재현율을 유지하면서 메모리를 절약합니다. 수백만 개의 임베딩이 있는 데이터 세트의 경우 이 압축은 hardware 요구 사항을 낮추는 것으로 직접 해석됩니다.

  • 문서 모델 로 멀티모달 데이터 관리 간소화: 이미지, 임베딩, 텍스트 설명 및 메타데이터 단일 MongoDB 문서 에 저장하면 운영 데이터, 검색 엔진 및 벡터 저장 위한 별도의 데이터베이스를 유지 관리하는 데 따른 동기화 오버헤드 제거할 수 있습니다.

  • 대화형 액세스 로 데이터 사이언티스트 역량 강화 : AWS 베드락이 지원하는 ReAct 기반 AI 에이전트 사용하면 플릿 데이터와 자연어 상호 작용을 할 수 있습니다. 팀은 사용자 지정 집계 쿼리를 작성하는 대신 "안개가 든 날씨와 맑은 날씨의 주행 시나리오 비교"와 같은 질문을 하고 도구 실행 추적을 통해 구조화된 분석을 받을 수 있습니다.

  • Voyage AI 순위 변경으로 검색 품질 향상: 하이브리드 검색 후에 순위 변경 단계를 추가하면 결과 정밀도가 크게 향상됩니다. Voyage AI의 순위 재지정2 모델은 원래 쿼리 에 대해 후보자의 점수를 다시 매기고 상황과 가장 관련이 있는 결과를 맨 위로 밀어냅니다.

  • Humza Akhtar, MongoDB

돌아가기

기술 Docs 용 컨텍스트 인식 RAG

이 페이지의 내용