
Gemini Embedding 2 या Qwen3-VL का उपयोग करके वीडियो पर सिमैंटिक खोज।
वीडियो फुटेज पर सिमैंटिक खोज। आप जो खोज रहे हैं वह टाइप करें, और एक ट्रिम किया हुआ क्लिप वापस पाएं।
[!IMPORTANT] आधिकारिक स्रोत: github.com/ssrajadh/sentrysearch SentrySearch का एकमात्र आधिकारिक घर है। अन्य साइटें जो इस प्रोजेक्ट को पुनः प्रकाशित या मिरर कर रही हैं, वे मेंटेनर से संबद्ध या समर्थित नहीं हैं, हमेशा इस रिपॉजिटरी से डाउनलोड करें।
भाषाएँ: अंग्रेज़ी · 简体中文
नया: SentrySearch कोडबेस वॉकथ्रू वीडियो
पाइपलाइन:
SentrySearch आपके वीडियो को ओवरलैपिंग चंक में विभाजित करता है, Google के Gemini Embedding API, Alibaba DashScope (qwen-cloud), या एक स्थानीय Qwen3-VL मॉडल का उपयोग करके प्रत्येक चंक को वीडियो के रूप में एम्बेड करता है, और वेक्टर को एक स्थानीय ChromaDB डेटाबेस में संगृहीत करता है। जब आप खोज करते हैं, तो आपकी टेक्स्ट क्वेरी (या छवि, छवि द्वारा खोज देखें) को उसी वेक्टर स्पेस में एम्बेड किया जाता है और संगृहीत वीडियो एम्बेडिंग से मिलान किया जाता है। शीर्ष मिलान को स्वचालित रूप से मूल फ़ाइल से काटकर एक क्लिप के रूप में सहेजा जाता है।
macOS/Linux:```bash curl -LsSf https://astral.sh/uv/install.sh | sh
**विंडोज़:**```powershell
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
> **Python 3.11 या 3.12 की आवश्यकता है** (PyTorch व्हील्स अभी तक 3.13+ का समर्थन नहीं करते)। यदि आपका डिफ़ॉल्ट Python नया है, तो एक प्रबंधित 3.12 स्थापित करें और टूल इंस्टॉलेशन को पिन करें:
> ```bash
> uv python install 3.12
> uv tool install --python 3.12 .
> ```
3. अपना API कुंजी सेट करें (या [इसके बजाय स्थानीय मॉडल का उपयोग करें](#local-backend-no-api-key-needed)) — **केवल डिफ़ॉल्ट Gemini बैकएंड के लिए आवश्यक**; यदि आप `--backend local` या `DASHSCOPE_API_KEY` के साथ `--backend qwen-cloud` का उपयोग करते हैं तो इसे छोड़ें (`.env` में)।```bash
sentrysearch init
यह आपकी Gemini API कुंजी माँगता है, उसे .env में लिखता है, और एक परीक्षण embedding के साथ सत्यापित करता है।
5. खोज:```bash
sentrysearch search "red truck running a stop sign"
ffmpeg वीडियो चंकिंग और ट्रिमिंग के लिए आवश्यक है। यदि आपके पास सिस्टम-वाइड यह नहीं है, तो बंडल किया गया imageio-ffmpeg स्वचालित रूप से उपयोग किया जाता है।
मैन्युअल सेटअप: यदि आप
sentrysearch initका उपयोग नहीं करना चाहते हैं, तो आप.env.exampleको.envपर कॉपी कर सकते हैं और aistudio.google.com/apikey से अपनी कुंजी मैन्युअल रूप से जोड़ सकते हैं।
$ sentrysearch init
Enter your Gemini API key (get one at https://aistudio.google.com/apikey): ****
Validating API key...
Setup complete. You're ready to go — run sentrysearch index <directory> to get started.
यदि कोई कुंजी पहले से कॉन्फ़िगर की गई है, तो आपसे पूछा जाएगा कि क्या उसे ओवरराइट करना है।
> **सुझाव:** आकस्मिक अधिक खर्च को रोकने के लिए [aistudio.google.com/billing](https://aistudio.google.com/billing) पर खर्च की सीमा निर्धारित करें।
### फुटेज अनुक्रमणिका```bash
$ sentrysearch index /path/to/video/footage
Indexing file 1/3: front_2024-01-15_14-30.mp4 [chunk 1/4]
Indexing file 1/3: front_2024-01-15_14-30.mp4 [chunk 2/4]
...
Indexed 12 new chunks from 3 files. Total: 12 chunks from 3 files.
Options:
--chunk-duration 30 — प्रति चंक सेकंड--overlap 5 — चंकों के बीच ओवरलैप--no-preprocess — डाउनस्केलिंग/फ्रेम दर कमी को छोड़ें (कच्चे चंक भेजें)--target-resolution 480 — प्रीप्रोसेसिंग के लिए पिक्सेल में लक्ष्य ऊँचाई--target-fps 5 — प्रीप्रोसेसिंग के लिए लक्ष्य फ्रेम दर--no-skip-still — सभी चंक शामिल करें, यहाँ तक कि जिनमें कोई दृश्य परिवर्तन न हो--backend local — Gemini के बजाय स्थानीय मॉडल का उपयोग करें (विवरण नीचे)```bash
$ sentrysearch search "red truck running a stop sign"
#1 [0.87] front_2024-01-15_14-30.mp4 @ 02:15-02:45
#2 [0.74] left_2024-01-15_14-30.mp4 @ 02:10-02:40
#3 [0.61] front_2024-01-20_09-15.mp4 @ 00:30-01:00Saved clip: ./match_front_2024-01-15_14-30_02m15s-02m45s.mp4
यदि सर्वोत्तम परिणाम का समानता स्कोर आत्मविश्वास सीमा (डिफ़ॉल्ट 0.41) से कम है, तो आपको ट्रिमिंग से पहले संकेत दिया जाएगा:```
No confident match found (best score: 0.28). Show results anyway? [y/N]:
With --no-trim, कम-विश्वास वाले परिणाम एक प्रॉम्प्ट के बजाय एक नोट के साथ दिखाए जाते हैं।
विकल्प: --results N, --output-dir DIR, --no-trim ऑटो-ट्रिमिंग को छोड़ने के लिए, --threshold 0.5 विश्वास सीमा (confidence cutoff) को समायोजित करने के लिए, --save-top N सर्वोत्तम मिलान के बजाय शीर्ष N क्लिप को सहेजने के लिए, --dedupe उन परिणामों को हटाने के लिए जो उच्च-रैंक वाले चयन से बहुत अधिक समान हैं (एक ही घटना के लगभग-डुप्लिकेट टुकड़ों को सूची में भरने से रोकता है), और --rerank VLM से वापस आए उम्मीदवारों को ट्रिमिंग से पहले पुनः-रैंक करने के लिए कहने के लिए। बैकएंड और मॉडल इंडेक्स से स्वचालित रूप से पता लगाए जाते हैं — केवल ओवरराइड करने के लिए --backend या --model पास करें।```bash
sentrysearch search "red truck" --save-top 5 --dedupe 0.9
sentrysearch search "pedestrian crossing behind the car" --rerank --results 10
The `--dedupe` मान एक कोसाइन समानता सीमा (0–1) है। कोई भी परिणाम जिसकी समानता पहले से रखे गए उच्च-रैंक वाले परिणाम से इस मान से अधिक होती है, उसे हटा दिया जाता है। कम मान अधिक सख्त होते हैं: `0.8` के लिए परिणामों को बहुत अलग होना आवश्यक है, `0.95` केवल लगभग समान अंशों को हटाता है। `0.9` एक अच्छा डिफ़ॉल्ट है।
`--rerank` प्रत्येक लौटाए गए उम्मीदवार क्लिप को निकालता है, इसे क्वेरी के साथ एक VLM को भेजता है, और संभावित दृश्य मैचों को एम्बेडिंग-केवल परिणामों से आगे क्रमबद्ध करता है। Gemini और qwen-cloud खोजें पुनर्क्रमण के लिए Gemini 2.5 Flash का उपयोग करती हैं; स्थानीय खोजें एक स्थानीय Qwen3-VL Instruct पुनर्क्रमक का उपयोग करती हैं। यदि पुनर्क्रमण नहीं चल सकता या किसी उम्मीदवार को स्कोर नहीं किया जा सकता, तो SentrySearch खोज को विफल करने के बजाय एम्बेडिंग-रैंक वाले परिणामों को रखता है।
### छवि द्वारा खोजें
क्वेरी के रूप में एक संदर्भ छवि का उपयोग करें — 'ऐसे क्लिप खोजें जो इस तरह दिखते हैं' जब दृश्य को शब्दों में वर्णित करना अजीब हो (एक विशिष्ट कार का स्क्रीनशॉट, किसी अन्य वीडियो का संदर्भ फ्रेम, आदि) के लिए उपयोगी।```bash
$ sentrysearch img ~/Downloads/image.jpg
#1 [0.72] 2026-03-12_10-44-17-left_repeater.mp4 @ 00:00-00:30
#2 [0.69] 2026-03-12_10-44-17-left_repeater.mp4 @ 00:25-00:55
#3 [0.67] 2026-02-12_20-02-15-front.mp4 @ 00:00-00:18
Saved clip: ./match_2026-03-12_10-44-17-left_repeater_00m00s-00m30s.mp4
छवि को अनुक्रमित वीडियो खंडों के समान सदिश स्थान में एम्बेड किया जाता है और कोसाइन समानता द्वारा रैंक किया जाता है। छवि खोज --results, --threshold, --save-top, --dedupe, --overlay, --no-trim, --backend, और --model को सपोर्ट करती है।
समर्थित प्रारूप: Gemini बैकएंड पर JPG, PNG, WEBP, GIF, HEIC/HEIF; स्थानीय बैकएंड इसके अतिरिक्त PIL जो भी डीकोड कर सकता है (BMP, TIFF, आदि) स्वीकार करता है।
नोट: छवि खोज दृश्य रूप से समान मैच लौटाती है, जरूरी नहीं कि एक ही वस्तु। लाल सेडान क्वेरी समान आकार के अन्य लाल सेडान को सतह पर ला सकती है — उम्मीदों को तदनुसार समायोजित करें।
पता नहीं क्या खोजें? sentrysearch highlights आपके इंडेक्स में सबसे असामान्य क्लिप्स को रैंक करता है — ऐसे चंक जिनके एम्बेडिंग्स बाकी सब से दूर बैठते हैं — और उन्हें स्वचालित रूप से ट्रिम करता है। ताजा फुटेज के डंप को स्किम करने के लिए अच्छा है।```bash
$ sentrysearch highlights -n 3
#1 [0.165] 2026-02-12_20-02-15-back.mp4 @ 00:00-00:18
#2 [0.163] 2026-02-12_20-02-15-right_repeater.mp4 @ 00:00-00:18
#3 [0.149] 2026-02-12_20-02-15-front.mp4 @ 00:00-00:18
...
स्कोरिंग विधियाँ (`--method`):
- **`knn`** (डिफ़ॉल्ट) — किसी चंक के *k* निकटतम पड़ोसियों की औसत कोसाइन दूरी। मजबूत; उन क्लिप्स को उजागर करता है जिनके लगभग कोई जुड़वा नहीं हैं।
- **`centroid`** — इंडेक्स माध्य से दूरी। सबसे सस्ता, जो भी कम प्रतिनिधित्व में है उसकी ओर पक्षपाती।
- **`lof`** — स्थानीय आउटलायर फैक्टर (Local Outlier Factor)। तब सर्वोत्तम जब इंडेक्स में कई अलग "सामान्य" मोड हों (दिन बनाम रात बनाम गैरेज)।
परिष्करण विकल्प:
- `--against "<query>"` — किसी क्वेरी के *सापेक्ष* विसंगति स्कोर करें। `--against-mode within` (डिफ़ॉल्ट) के साथ, क्वेरी के शीर्ष मैचों में से विसंगतियों को रैंक करता है ("पैदल चलने वालों की क्लिप में अजीब पैदल चलने वाले")। `--against-mode global` के साथ, ऐसी क्लिप ढूँढता है जो क्वेरी से मेल खाती हैं *लेकिन* बाकी इंडेक्स से भिन्न हैं ("इस प्रकार की दुर्लभ घटनाएँ")।
- `--dedupe 0.9` — उन परिणामों को हटाएँ जो उच्च-रैंक वाले पिक के समान हैं (डिफ़ॉल्ट 0.9 कोसाइन समानता)। सूची को निकट-डुप्लिकेट फ्रेम से भरने से रोकता है।
- `--exclude-baseline` — स्कोरिंग से पहले इंडेक्स के आधे भाग को जो सेंट्रॉइड के निकटतम है, हटा दें। उपयोगी जब इंडेक्स में दोहरावदार "उबाऊ" फुटेज का वर्चस्व हो।
- `-k, --neighbors 10` — `knn`/`lof` के लिए *k*।
- `--no-trim` — क्लिप लिखे बिना रैंकिंग प्रिंट करें।
> **सावधानी:** सांख्यिकीय रूप से विसंगति का अर्थ दिलचस्प होना नहीं है। सेंसर गड़बड़ियाँ, लेंस फ्लेयर, अधिकतर दिन के इंडेक्स में रात के फ्रेम, और अकेली गैरेज क्लिप सभी उच्च रैंक करते हैं। शोर को छानने के लिए `--exclude-baseline` और `--dedupe` का उपयोग करें, या विषय द्वारा सीमित करने के लिए `--against` का उपयोग करें।
### Qwen क्लाउड (Alibaba DashScope)
[DashScope](https://www.alibabacloud.com/help/en/model-studio/qwen-api-via-dashscope) / मॉडल स्टूडियो मल्टीमॉडल एम्बेडिंग के लिए वैकल्पिक **qwen-cloud** बैकएंड का उपयोग करें (डिफ़ॉल्ट मॉडल `qwen3-vl-embedding`, `--dashscope-model` या `DASHSCOPE_EMBEDDING_MODEL` के साथ ओवरराइड करने योग्य):```bash
uv tool install ".[qwen-cloud]"
export DASHSCOPE_API_KEY=...
sentrysearch index /path/to/footage --backend qwen-cloud
sentrysearch search "your query" --backend qwen-cloud
वीडियो अपलोड: स्थानीय चंक फ़ाइलें DashScope-प्रबंधित अस्थायी OSS में आधिकारिक Python SDK द्वारा API द्वारा उपभोग करने से पहले भेजी जाती हैं (HTTP API एक URL की अपेक्षा करता है; SDK आपके लिए अपलोड संभालता है)।
Gemini API के बजाय स्थानीय Qwen3-VL-Embedding मॉडल का उपयोग करके इंडेक्स और खोजें। मुफ़्त, निजी, और पूरी तरह से आपकी मशीन पर चलता है। सर्वोत्तम खोज गुणवत्ता के लिए, Gemini बैकएंड का उपयोग करें — स्थानीय 8B मॉडल एक ठोस विकल्प है जब आपको ऑफ़लाइन/निजी खोज की आवश्यकता होती है, और 2B मॉडल एक फ़ॉलबैक है जब हार्डवेयर 8B का समर्थन नहीं कर सकता।
मॉडल आपके हार्डवेयर से स्वतः पता लगाया जाता है — NVIDIA GPUs और 24 GB+ RAM वाले Macs के लिए qwen8b, छोटे Macs और केवल CPU सिस्टम के लिए qwen2b। आप --model qwen2b या --model qwen8b से ओवरराइड कर सकते हैं। अपने हार्डवेयर के आधार पर एक इंस्टॉल चुनें:
अच्छी तरह से काम नहीं करेगा: Intel Macs और समर्पित GPU के बिना मशीनें। ये float32 के साथ CPU पर वापस आ जाते हैं — व्यावहारिक उपयोग के लिए बहुत धीमा और मेमोरी-भूखा। इसके बजाय Gemini API बैकएंड (डिफ़ॉल्ट) का उपयोग करें।
निश्चित नहीं हैं? Mac पर,
".[local]"का उपयोग करें। NVIDIA पर,".[local-quantized]"का उपयोग करें — 4-बिट क्वांटाइज़ेशन न्यूनतम गुणवत्ता हानि के साथ NVIDIA हार्डवेयर की सबसे व्यापक श्रेणी पर काम करता है। (bitsandbytes को CUDA की आवश्यकता है और Mac/MPS पर काम नहीं करता है।)
Python संस्करण: PyTorch व्हील्स नए Python रिलीज़ से पीछे रह जाते हैं, इसलिए स्थानीय बैकएंड को Python 3.11 या 3.12 की आवश्यकता है। यदि आपका डिफ़ॉल्ट Python 3.13+ है, तो एक प्रबंधित 3.12 इंस्टॉल करें और टूल इंस्टॉल को उस पर पिन करें:```bash uv python install 3.12 uv tool install --python 3.12 ".[local]"
**Mac पूर्वापेक्षा:** सिस्टम FFmpeg स्थापित करें (स्थानीय मॉडल का वीडियो प्रोसेसर इसकी आवश्यकता है — Gemini बैकएंड इसके बजाय एक बंडल किया हुआ ffmpeg का उपयोग करता है):```bash
brew install ffmpeg
--backend local के साथ इंडेक्स करें और खोजें — किसी अतिरिक्त फ्लैग की आवश्यकता नहीं:```bash
sentrysearch index /path/to/footage --backend local
sentrysearch search "car running a red light"
सर्च कमांड उस बैकएंड और मॉडल को स्वतः पहचान लेता है जिसके साथ आपने इंडेक्स किया था। आप शॉर्टहैंड के रूप में `--model` का भी उपयोग कर सकते हैं — इसका मतलब `--backend local` होता है:```bash
sentrysearch index /path/to/footage --model qwen2b # same as --backend local --model qwen2b
sentrysearch search "car running a red light" # auto-detects local/qwen2b from index
विकल्प:
--model qwen2b — छोटा मॉडल, कम गुणवत्ता लेकिन केवल ~6 GB मेमोरी (पूर्ण HuggingFace ID भी स्वीकार करता है)--quantize / --no-quantize — 4-बिट क्वांटिज़ेशन को चालू या बंद करें (डिफ़ॉल्ट: bitsandbytes स्थापित है या नहीं के आधार पर स्वतः पहचान)नोट्स:
--rerank एम्बेडिंग मॉडल के अतिरिक्त एक अलग Qwen3-VL Instruct मॉडल (Qwen/Qwen3-VL-8B-Instruct या Qwen/Qwen3-VL-2B-Instruct) डाउनलोड करता है।स्थानीय बैकएंड कुछ तकनीकों के माध्यम से तेज़ और मेमोरी-कुशल बना रहता है जो एक दूसरे को बढ़ाती हैं:
fps=1.0, max_frames=32)। 30 सेकंड का चंक ~30 फ्रेम उत्पन्न करता है — सैकड़ों नहीं।इन सबके साथ, A100 पर प्रति चंक ~2-5 सेकंड और T4 पर ~3-8 सेकंड की उम्मीद करें। 4090 पर, bf16 में 8B मॉडल प्रति चंक कम एकल अंकों में होना चाहिए।
ट्रिम किए गए क्लिप्स पर गति, स्थान और समय बर्न करें:```bash sentrysearch search "car cutting me off" --overlay
यह टेस्ला डैशकैम फ़ाइलों (स्पीड, GPS) में एम्बेडेड टेलीमेट्री को निकालता है और एक HUD ओवरले प्रस्तुत करता है। ओवरले दिखाता है:
- **शीर्ष केंद्र:** हल्के भूरे कार्ड पर गति और MPH लेबल
- **कार्ड के नीचे:** दिनांक और समय (AM/PM के साथ 12-घंटे)
- **शीर्ष बाएँ:** शहर और सड़क का नाम (रिवर्स जियोकोडिंग द्वारा)

आवश्यकताएँ:
- टेस्ला फर्मवेयर 2025.44.25 या बाद का, HW3+
- SEI मेटाडेटा केवल ड्राइविंग फुटेज में मौजूद है (पार्क किए गए/सेंट्री मोड में नहीं)
- रिवर्स जियोकोडिंग geopy के माध्यम से [OpenStreetMap's Nominatim API](https://nominatim.openstreetmap.org/) का उपयोग करता है (वैकल्पिक)
Tesla ओवरले समर्थन के साथ इंस्टॉल करें:```bash
uv tool install ".[tesla]"
geopy के बिना, ओवरले अभी भी काम करता है लेकिन शहर/सड़क का नाम छोड़ देता है।
स्रोत: teslamotors/dashcam
SentryMerge एक सह-उपकरण है जो एक SentrySearch परिणाम से एक घटना का एकल क्रॉस-कैमरा वीडियो स्वचालित रूप से काटता है। हर बार जब sentrysearch search चलता है, यह परिणाम सूची को ~/.sentrysearch/last_search.json में कैश करता है; SentryMerge उसे --last के माध्यम से लेता है, सर्वश्रेष्ठ मल्टी-कैमरा क्लिप-सेट चुनता है, एक VLM से प्रति कैमरा उप-सेकंड दृश्यता सीमाएँ पूछता है, और एक फ्रेम-सटीक वीडियो स्टिच करता है जो विषय को कैमरों में अनुसरण करता है:```bash
sentrysearch search ""
sentrymerge --last # → merge.mp4
`--last` खोज को पुनः चलाए बिना काम करता है; `sentrymerge --query "..."` पर्दे के पीछे खोज को पुनः चलाता है। स्थापना निर्देशों, VLM बैकएंड विकल्पों (Gemini / OpenAI / local Qwen), और गैर-टेस्ला डैशकैम के लिए मॉड्यूलर कैम-कॉन्फ़िग सिस्टम के लिए [SentryMerge README](https://github.com/ssrajadh/sentrymerge#readme) देखें।
### SentryBlur से संपादित करें
[SentryBlur](https://github.com/ssrajadh/sentryblur) वीडियो के स्थानीय चेहरे, लाइसेंस प्लेट और प्राकृतिक-भाषा संपादन के लिए एक सहायक उपकरण है। हर बार जब `sentrysearch search` एक क्लिप सहेजता है, तो वह पथ को `~/.sentrysearch/last_clip.json` में कैश करता है; SentryBlur `--last` के माध्यम से इसे उठाता है, इसलिए खोज-फिर-संपादन दो कमांड है और कोई पथ-पासिंग नहीं:```bash
sentrysearch search "car cuts me off"
sentryblur prompt --last "road signs" # → match_<...>_blurred.mp4
sentryblur faces --last और sentryblur plates --last उसी तरह काम करते हैं. तेज़ CPU डिटेक्टरों के लिए faces या plates चुनें; मनमानी वस्तुओं (फ़ोन स्क्रीन, मॉनिटर, नाम टैग) के लिए prompt "<text>" का उपयोग करें — prompt के लिए NVIDIA GPU या Apple Silicon की आवश्यकता है. स्थापना निर्देशों और हार्डवेयर नोट्स के लिए SentryBlur README देखें.
sentrysearch stats
sentrysearch remove path/to/footage
sentrysearch reset
#### विफल चंक्स और पुनः प्रयास
यदि एक चंक पुनः प्रयास के बाद एम्बेड नहीं किया जा सकता है, तो SentrySearch इसे `~/.sentrysearch/dlq.json` पर एक डेड-लेटर क्यू (DLQ) में रिकॉर्ड करता है और आपके फुटेज के बाकी हिस्से को इंडेक्स करना जारी रखता है। चंक आमतौर पर वहां बार-बार क्षणिक API/बैकएंड विफलताओं, एक विशिष्ट फ़ाइल के लिए डिकोडर त्रुटियों, लापता फ़ाइलों, या मेमोरी-आउट त्रुटियों के कारण पहुंचते हैं। स्थायी दिखने वाली विफलताएं जैसे कि लापता फ़ाइलें, डिकोड त्रुटियां, और OOM तुरंत रिकॉर्ड की जाती हैं क्योंकि समान सेटिंग्स के साथ उसी चंक को पुनः प्रयास करना सहायक होने की संभावना नहीं है।
विफल चंक्स का निरीक्षण करें:```bash
sentrysearch dlq list
अगले index run पर उन्हें पुनः प्रयास करें:```bash sentrysearch index /path/to/footage --retry-failed
DLQ को बिना पुनः प्रयास किए साफ़ करें:```bash
sentrysearch dlq clear
डिफ़ॉल्ट रूप से, भविष्य के sentrysearch index रन DLQ में पहले से मौजूद चंक्स को छोड़ देंगे ताकि आप बार-बार विफलताओं के लिए भुगतान या प्रतीक्षा न करें। स्रोत समस्या को ठीक करने, मॉडल/बैकएंड सेटिंग्स बदलने या मेमोरी खाली करने के बाद --retry-failed का उपयोग करें।
SentrySearch ~/.sentrysearch/ के अंतर्गत स्थानीय स्थिति रखता है:
डीबग जानकारी (एम्बेडिंग आयाम, API प्रतिक्रिया समय, समानता स्कोर) के लिए किसी भी कमांड में --verbose जोड़ें।
Gemini Embedding 2 और Qwen3-VL-Embedding दोनों मूल रूप से वीडियो एम्बेड कर सकते हैं — कच्चे वीडियो पिक्सेल टेक्स्ट क्वेरी के समान वेक्टर स्पेस में प्रक्षेपित होते हैं। कोई ट्रांसक्रिप्शन नहीं, कोई फ़्रेम कैप्शनिंग नहीं, कोई टेक्स्ट मध्यस्थ नहीं। "लाल ट्रक एक स्टॉप साइन पर" जैसी टेक्स्ट क्वेरी सीधे वेक्टर स्तर पर 30-सेकंड के वीडियो क्लिप से तुलनीय होती है। यही कारण है कि घंटों फुटेज पर उप-सेकंड सिमैंटिक खोज व्यावहारिक है।
Gemini के एम्बेडिंग API (डिफ़ॉल्ट सेटिंग्स: 30s चंक्स, 5s ओवरलैप) के साथ 1 घंटे की फुटेज को इंडेक्स करने की लागत ~$2.84 है:
1 घंटा = 3,600 सेकंड का वीडियो = मॉडल द्वारा संसाधित 3,600 फ़्रेम। 3,600 फ़्रेम × $0.00079 = ~$2.84/घंटा
Gemini API अपलोड किए गए वीडियो से मूल रूप से प्रति सेकंड ठीक 1 फ़्रेम निकालता और टोकनाइज़ करता है, चाहे फ़ाइल की वास्तविक फ़्रेम दर कुछ भी हो। प्रीप्रोसेसिंग चरण (जो ffmpeg के माध्यम से चंक्स को 480p पर 5fps पर डाउनस्केल करता है) एक स्थानीय/बैंडविड्थ ऑप्टिमाइज़ेशन है — यह पेलोड आकार को छोटा रखता है ताकि API अनुरोध तेज़ हों और टाइमआउट न करें — लेकिन यह API द्वारा संसाधित फ़्रेमों की संख्या नहीं बदलता है।
दो अंतर्निहित ऑप्टिमाइज़ेशन अलग-अलग तरीकों से लागत कम करने में मदद करते हैं:
खोज क्वेरी नगण्य हैं (केवल टेक्स्ट एम्बेडिंग)।
DashScope मल्टीमॉडल एम्बेडिंग को प्रति 1,000 इनपुट टोकन CNY में, मोडैलिटी के अनुसार बिल करता है। डिफ़ॉल्ट मॉडल qwen3-vl-embedding के लिए, अलीबाबा की प्रकाशित दरें (अपने क्षेत्र और किसी भी अपडेट के लिए नीचे दिए गए दस्तावेज़ की जाँच करें) लगभग इस प्रकार हैं:
इंडेक्सिंग वीडियो चंक्स (वीडियो मोडैलिटी) भेजता है; प्रत्येक search / img क्वेरी अधिकतर टेक्स्ट या इमेज टोकन होती है, जो प्रति टोकन वीडियो से सस्ती होती है। आपकी वास्तविक लागत प्रत्येक API कॉल के लिए DashScope द्वारा लौटाए गए टोकन गणना पर निर्भर करती है (रिज़ॉल्यूशन, अवधि, DASHSCOPE_VIDEO_FPS जैसे सैंपलिंग आदि पर निर्भर करता है) — Gemini की प्रकाशित प्रति-फ़्रेम USD दर की तरह अपने वर्कलोड को मापे बिना कोई निश्चित "$ प्रति घंटा फुटेज" नहीं है।
अलीबाबा एक मुफ्त टोकन भत्ता (जैसे सक्रियण के बाद सीमित अवधि के भीतर 1M टोकन) का भी दस्तावेज़ीकरण करता है; DashScope मल्टीमॉडल एम्बेडिंग मीटरिंग और बिलिंग पेज और Model Studio / बिलिंग कंसोल में पुष्टि करें, क्योंकि मूल्य निर्धारण, क्षेत्र और प्रचार बदलते हैं।
ये फ़्लैग दोनों Gemini और qwen-cloud के लिए चंकिंग और प्रीप्रोसेसिंग को प्रभावित करते हैं:
--chunk-duration / --overlap — कम ओवरलैप के साथ लंबे चंक्स = कम API कॉल = कम लागत--no-skip-still — प्रत्येक चंक को एम्बेड करें भले ही कुछ न हो रहा हो--target-resolution / --target-fps — प्रीप्रोसेसिंग गुणवत्ता समायोजित करें--no-preprocess — कच्चे चंक्स API को भेजेंस्थानीय बैकएंड इंडेक्सिंग और खोज के दौरान चेतावनियाँ प्रिंट कर सकता है। ये कॉस्मेटिक हैं और परिणामों को प्रभावित नहीं करते:
MPS: nonzero op is not natively supported — Apple Silicon पर एक ज्ञात PyTorch सीमा। ऑपरेशन एक कदम के लिए CPU पर वापस आ जाता है; बाकी सब GPU पर रहता है। आउटपुट गुणवत्ता पर कोई प्रभाव नहीं।video_reader_backend torchcodec error, use torchvision as default — torchcodec macOS पर संगत FFmpeg नहीं ढूंढ पाता। वीडियो प्रोसेसर स्वचालित रूप से torchvision पर वापस आ जाता है। यह अपेक्षित है और समान परिणाम उत्पन्न करता है।You are sending unauthenticated requests to the HF Hub — मॉडल बिना टोकन के Hugging Face से डाउनलोड होता है। डाउनलोड गति थोड़ी कम हो सकती है, लेकिन मॉडल ठीक लोड होता है। इसे शांत करने के लिए HF_TOKEN एनवायरनमेंट वेरिएबल सेट करें यदि यह आपको परेशान करता है।--no-skip-still से अक्षम करें।यह केवल Tesla सेंट्री मोड ही नहीं, बल्कि .mp4 और .mov फुटेज के साथ काम करता है। डायरेक्टरी स्कैनर फ़ोल्डर संरचना की परवाह किए बिना दोनों फ़ाइल प्रकारों को पुनरावर्ती रूप से ढूंढता है।
ffmpeg PATH पर, या बंडल ffmpeg का उपयोग imageio-ffmpeg के माध्यम से करें (डिफ़ॉल्ट रूप से स्थापित)brew install ffmpeg (वीडियो डिकोडर के लिए आवश्यक)| हार्डवेयर | इंस्टॉल कमांड | स्वतः पता लगाया गया मॉडल | नोट्स |
|---|
| Apple Silicon, 24 GB+ RAM | uv tool install ".[local]" | qwen8b | MPS के माध्यम से पूर्ण float16 |
| Apple Silicon, 16 GB RAM | uv tool install ".[local]" | qwen2b | 8B फ़िट नहीं होगा; 2B ~6 GB का उपयोग करता है |
| Apple Silicon, 8 GB RAM | uv tool install ".[local]" | qwen2b | तंग — लोड के तहत स्वैप हो सकता है; इसके बजाय Gemini API अनुशंसित है |
| NVIDIA, 18 GB+ VRAM | uv tool install ".[local]" | qwen8b | पूर्ण bf16 सटीकता (CUDA व्हील्स Linux/Windows पर स्वचालित रूप से खींची जाती हैं) |
| NVIDIA, 8–16 GB VRAM | uv tool install ".[local-quantized]" | qwen8b | 4-बिट क्वांटाइज़ेशन (~6–8 GB) |
| पथ | किसके द्वारा लिखा गया | किसके लिए उपयोग किया जाता है | क्या इसे हटाना सुरक्षित है? |
|---|
db/ | sentrysearch index | आपकी एम्बेडेड फुटेज के लिए ChromaDB वेक्टर इंडेक्स। | हाँ, लेकिन इससे इंडेक्स डिलीट हो जाता है। दोबारा खोजने से पहले sentrysearch index <dir> पुनः चलाएँ। |
.env | sentrysearch init | डिफ़ॉल्ट बैकएंड के लिए आपकी Gemini API कुंजी संग्रहीत करता है। | हाँ, लेकिन Gemini-समर्थित कमांड आपसे फिर से एक कुंजी कॉन्फ़िगर करने के लिए कहेंगे। |
dlq.json | असफल sentrysearch index चंक्स | डेड-लेटर कतार जिसे sentrysearch dlq list द्वारा निरीक्षित किया जाता है और --retry-failed के साथ पुनः प्रयास किया जाता है। | हाँ। इसे हटाने से असफल चंक्स भूल जाते हैं, इसलिए भविष्य के इंडेक्स रन उन्हें नए काम के रूप में पुनः प्रयास कर सकते हैं। |
last_clip.json | वे कमांड जो एक क्लिप सेव करते हैं (search, img, highlights, overlay) | SentryBlur को sentryblur ... --last के साथ सबसे हालिया सेव की गई क्लिप का उपभोग करने देता है। | हाँ। केवल --last हैंडऑफ़ खो जाता है; सेव की गई MP4 फ़ाइलें डिलीट नहीं होतीं। |
last_search.json | sentrysearch search, img, और highlights | SentryMerge को sentrymerge --last के साथ सबसे हालिया परिणाम सूची का उपभोग करने देता है। | हाँ। केवल --last हैंडऑफ़ खो जाता है; खोज इंडेक्स अपरिवर्तित रहता है। |
history | sentrysearch shell | इंटरैक्टिव शेल के लिए Readline कमांड हिस्ट्री। | हाँ। अगली बार शेल खाली हिस्ट्री के साथ शुरू होता है। |