Skip to content

Norsaje/Celerity

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Celerity

Celerity — компактный C++‑инструмент для мультимодального поиска без обучения: CLIP (текст/изображения) в ONNX Runtime, видео/аудио ингест, и ANN‑поиск. Зависимости опциональны и включаются флагами CMake.

Возможности

  • Мультимодальные эмбеддинги через CLIP ViT‑B/32 (ONNX Runtime, CPU; опционально INT8).
  • Видео: выборка кадров (OpenCV) - CLIP эмбеддинги.
  • Аудио: faster‑whisper (Python) - текст → CLIP текстовый эмбеддинг.
  • ANN: базовый IVF‑PQ (встроенный). Заготовка провайдера FAISS.
  • Гибкая сборка: ORT/OpenCV/FAISS включаются флагами.

Сборка

Минимальная сборка без внешних библиотек:

cmake -S celerity -B build -G "Visual Studio 17 2022" -DCMAKE_BUILD_TYPE=Release
cmake --build build --config Release --target celerity -j 8

Опции CMake:

  • -DENABLE_ONNXRUNTIME=ON — поддержка ONNX Runtime. Укажите ONNXRUNTIME_DIR с путями include/lib (например: распакованный архив onnxruntime).
  • -DENABLE_OPENCV=ON — поддержка OpenCV (для препроцессинга изображений и семплинга видео).
  • -DENABLE_FAISS=ON — включить провайдер FAISS (требуются заголовки и библиотека faiss).
  • -DENABLE_PY_TOOLS=ON — вызов Python‑скриптов для токенизации CLIP и faster‑whisper (включено по умолчанию).

Примеры для Windows:

set ONNXRUNTIME_DIR=D:\\libs\\onnxruntime-win-x64
cmake -S celerity -B build -G "Visual Studio 17 2022" -DENABLE_ONNXRUNTIME=ON -DENABLE_OPENCV=ON -DCMAKE_BUILD_TYPE=Release
cmake --build build --config Release --target celerity -j 8

Python‑зависимости (модели и инструменты)

pip install transformers huggingface_hub onnxruntime onnxruntime-tools faster-whisper
# Для экспорта ONNX (если нужно):
pip install "optimum[onnxruntime]"

Загрузка/экспорт CLIP ONNX:

python tools/download_models.py --out models/clip/onnx --mode download
# либо экспорт из HF:
python tools/download_models.py --out models/clip/onnx --mode export

INT8‑квантование (динамическое):

python tools/quantize_clip.py --models models/clip/onnx

CLI

Бинарь: build/Debug/celerity.exe или build/Release/celerity.exe.

  • Построение индекса из CSV (по строке = вектор, ,‑разделитель):
celerity build <vectors.csv> <dim> <nlist> <pq_m> <n_iter>
  • Поиск по CSV‑вопросам:
celerity search <index_prefix> <queries.csv> <k> <nprobe>
  • Ингест изображения (CLIP):
celerity ingest-image <index_prefix> <image_path> [model_dir]
  • Ингест видео (кадры ~1 fps → CLIP):
celerity ingest-video <index_prefix> <video_path> [model_dir]
  • Ингест аудио (ASR → текст → CLIP):
celerity ingest-audio <index_prefix> <audio_path> [model_dir] [asr_model]
  • Поиск по тексту/изображению/аудио:
celerity search-text  <index_prefix> <k> <nprobe> <text...> [model_dir]
celerity search-image <index_prefix> <k> <nprobe> <image_path> [model_dir]
celerity search-audio <index_prefix> <k> <nprobe> <audio_path> [model_dir] [asr_model]

Где model_dir по умолчанию models/clip/onnx, ожидаются clip_img.onnx и clip_txt.onnx.

Примечания:

  • Эмбеддинги CLIP L2‑нормализуются, размерность ViT‑B/32 — 512.
  • Для OpenCV/ORT/FAISS опции могут быть выключены; соответствующий функционал бросит понятную ошибку при вызове.
  • faster‑whisper скачает веса при первом запуске (--model tiny по умолчанию).

Производительность

  • Рекомендуется INT8‑квантование CLIP (ORT dynamic quantization).
  • Для Intel CPU можно собрать ORT с OpenVINO EP и включить его при создании сессии.

Структура

  • src/dl/onnx/OnnxRunner.* — обёртка ORT.
  • src/dl/encoders/ClipEncoder.* — CLIP (изображение/текст), препроцессинг, L2‑норма.
  • src/ingest/VideoIngestor.* — выборка кадров, извлечение эмбеддингов.
  • src/ingest/AudioTranscriber.* — обёртка над tools/transcribe.py (faster‑whisper).
  • src/ann/* — встроенный IVF‑PQ и интерфейс движка; ann/faiss/* — заготовка FAISS.
  • tools/* — загрузка/квантование моделей, токенизация, транскрипция.

Известные оговорки

  • Провайдер FAISS — заготовка; переключение SearchEngine на FAISS можно добавить по флагу.
  • Встроенный IVF‑PQ ориентирован на демонстрацию и не оптимизирован.

Лицензии моделей

Проверьте лицензии и условия использования моделей на Hugging Face/проектов (CLIP, faster‑whisper).

About

Компактный C++ инструмент для мультимодального поиска без обучения

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages