Skip to main content

multimodal-dataprep-dev

Develop and debug the Multimodal DataPrep microservice: its FastAPI media endpoints, in-process embedding pipeline, batch jobs, object detection, telemetry and Metrics Manager publishing, and pluggable VDMS/Milvus vector stores plus MinIO/local storage. Use when changing source, adding a backend, running pytest/coverage/format checks, or building the service image. Use multimodal-dataprep-user for deployment and API-consumer workflows.

소스 정보

저장소
open-edge-platform/edge-ai-libraries
최근 소스 활동
2026년 8월 4일 19:15
감지된 SKILL.md 언어
영어
스타
169
포크
151

설치 방법

기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.

소스 파일 검토

설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.

파일 탐색기
6 개 파일

SKILL.md 표시 중

SKILL.md
소스 지침 · 읽기 전용 미리보기
name
multimodal-dataprep-dev
description
Develop and debug the Multimodal DataPrep microservice: its FastAPI media endpoints, in-process embedding pipeline, batch jobs, object detection, telemetry and Metrics Manager publishing, and pluggable VDMS/Milvus vector stores plus MinIO/local storage. Use when changing source, adding a backend, running pytest/coverage/format checks, or building the service image. Use multimodal-dataprep-user for deployment and API-consumer workflows.
# Multimodal DataPrep — Dev Work from `microservices/visual-data-preparation-for-retrieval/multimodal-dataprep/` inside an `edge-ai-libraries` checkout. If the request only deploys or consumes the service, use [`../multimodal-dataprep-user/SKILL.md`](../multimodal-dataprep-user/SKILL.md). ## Start with the relevant reference | Reference | Read when | |---|---| | [`references/source-map.md`](./references/source-map.md) | Locating endpoints, pipeline code, backend abstractions, or configuration | | [`references/testing-and-build.md`](./references/testing-and-build.md) | Installing dependencies, testing, formatting, building, or debugging containers | Example tasks: | Example | Purpose | |---|---| | [onboard-embedding-model.md](./example-prompts/onboard-embedding-model.md) | Exercise a different embedding model safely | | [update-test-cases.md](./example-prompts/update-test-cases.md) | Add coverage for a source change | ## Build-context rule Use `./build.sh`; do not run `docker build ... .` from this directory. The Dockerfile copies both this service and the sibling `multimodal-embedding-serving` source, so its context must be `microservices/`. `build.sh` supplies that context. ## Local development loop ```bash poetry install --with dev poetry run python -m pytest tests poetry run coverage run --rcfile ./pyproject.toml -m pytest tests poetry run coverage report -m poetry run black --check src tests poetry run isort --check-only src tests ``` Run a focused test file while iterating: ```bash poetry run python -m pytest tests/test_vectorstores.py ``` Do not conceal collection failures or attribute unrelated failures to the current change. See [`references/testing-and-build.md`](./references/testing-and-build.md). ## Build and run `setup.sh` must be sourced. With no argument it exports defaults and creates the YOLOX model volume; it does not start the stack. ```bash export MINIO_ROOT_USER='<user>' export MINIO_ROOT_PASSWORD='<strong-password>' export EMBEDDING_MODEL_NAME='CLIP/clip-vit-b-32' source ./setup.sh --nosetup ./build.sh docker compose -f docker/compose.yaml up -d --build ``` Other supported setup actions are `--conf`, `--down`, `--build [custom-tag]`, and `--nd` (foreground `docker compose ... up --build`). For Milvus, use `docker/compose-milvus.yaml`. For local media storage, layer `docker/compose.storage-local.yaml` after the default compose file. ## Current architecture `src/main.py` creates the FastAPI app at `/v1/dataprep`, starts the optional Metrics Manager publisher, preloads the embedding client and YOLOX detector, and asks the active vector store to update its index during shutdown. Requests flow through `src/endpoints/` into `src/core/embedding/embedding_orchestrator.py`. Video work is executed by the threaded/shared-memory pipeline in `embedding_helper.py`; `client.py` wraps the in-process model from the sibling embedding package and persists vectors through `src/core/vectorstores/`. Media bytes and metadata go through `src/core/storage/`. ## Change rules - Preserve backend neutrality. Use `get_vector_store()` and `get_storage()` rather than importing a concrete backend in endpoint or orchestration code. - Keep search/query behavior out of this service; `BaseVectorStore` covers ingestion-time add, delete, health, and index-update operations. - Add endpoint schemas in `src/common/schema.py` and include routers in `src/main.py`. - Keep media routes under `/media`; supported inputs include MP4 video and common image formats, plus text summaries at `/summary`. - Mock external storage, model, and vector-store calls in unit tests. The Milvus integration test is opt-in through `MILVUS_IT_URI`. - Add the repository SPDX header to every new source, config, test, or documentation file. - Never commit credentials. ## Important configuration facts | Fact | Impact | |---|---| | All application settings use Pydantic's `MM_DATAPREP_` prefix | Set container variables such as `MM_DATAPREP_VECTORDB_BACKEND`, `MM_DATAPREP_STORAGE_BACKEND`, and `MM_DATAPREP_EMBEDDING_MODEL_NAME` | | `setup.sh` sets `INDEX_NAME=video-rag`; default compose maps it to `MM_DATAPREP_DB_COLLECTION` | For a one-off VDMS collection, set `INDEX_NAME` after sourcing and before Compose | | Milvus collection names cannot contain hyphens | `compose-milvus.yaml` uses `MILVUS_INDEX_NAME` with default `video_rag` | | Changing embedding dimensions is incompatible with an existing collection | Choose a fresh collection or obtain confirmation before deleting data | | YOLOX weights are downloaded on first use | An offline first run can leave object detection unavailable while other ingestion continues | | Metrics Manager publishing is optional | It is enabled only when `MM_DATAPREP_METRICS_MANAGER_URL` is non-empty and must not delay ingestion |
GitHub에서 보기