
Recherche sémantique dans des vidéos en utilisant Gemini Embedding 2 ou Qwen3-VL.
Recherche sémantique dans des séquences vidéo. Tapez ce que vous recherchez, récupérez un clip découpé.
[!IMPORTANT] Source officielle : github.com/ssrajadh/sentrysearch est le seul foyer officiel de SentrySearch. Les autres sites republiant ou mettant en miroir ce projet ne sont ni affiliés ni approuvés par le mainteneur, téléchargez toujours depuis ce dépôt.
Langues : Anglais · 简体中文
Nouveau : Backend MLX pour Apple Silicon : exécute le modèle local 2B deux fois plus vite avec moins de la moitié de la mémoire, à précision égale
SentrySearch découpe vos vidéos en segments qui se chevauchent, intègre chaque segment en tant que vidéo à l'aide de l'API Gemini Embedding de Google, d'Alibaba DashScope (qwen-cloud) ou d'un modèle Qwen3-VL local, et stocke les vecteurs dans une base de données ChromaDB locale. Lorsque vous effectuez une recherche, votre requête textuelle (ou une image, voir recherche par image) est intégrée dans le même espace vectoriel et comparée aux embeddings vidéo stockés. La meilleure correspondance est automatiquement découpée depuis le fichier original et enregistrée sous forme de clip.
macOS/Linux :```bash curl -LsSf https://astral.sh/uv/install.sh | sh
**Windows :**```powershell
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
> **Nécessite Python 3.11 ou 3.12** (les wheels PyTorch ne prennent pas encore en charge 3.13+). Si votre Python par défaut est plus récent, installez une version 3.12 gérée et épinglez l'installation de l'outil :
> ```bash
> uv python install 3.12
> uv tool install --python 3.12 .
> ```
3. Configurez votre clé API (ou [utilisez plutôt un modèle local](#local-backend-no-api-key-needed)) — **nécessaire uniquement pour le backend Gemini par défaut** ; ignorez cette étape si vous utilisez `--backend local`, `--backend mlx`, ou `--backend qwen-cloud` avec `DASHSCOPE_API_KEY` dans `.env`.```bash
sentrysearch init
Cela vous demande votre clé API Gemini, l'écrit dans .env et la valide avec un embedding de test.
5. Recherche :```bash
sentrysearch search "red truck running a stop sign"
ffmpeg est requis pour le découpage et le rognage vidéo. Si vous ne l'avez pas à l'échelle du système, le imageio-ffmpeg fourni est utilisé automatiquement.
Configuration manuelle : Si vous préférez ne pas utiliser
sentrysearch init, vous pouvez copier.env.examplevers.envet ajouter votre clé depuis aistudio.google.com/apikey manuellement.
$ 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.
Si une clé est déjà configurée, il vous sera demandé si vous souhaitez l'écraser.
> **Astuce :** Définissez une limite de dépenses sur [aistudio.google.com/billing](https://aistudio.google.com/billing) pour éviter toute dépense excessive accidentelle.
### Indexer les séquences```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 — secondes par segment--overlap 5 — chevauchement entre les segments--no-preprocess — ignorer la réduction d'échelle et du taux de rafraîchissement (envoyer les segments bruts)--target-resolution 480 — hauteur cible en pixels pour le prétraitement--target-fps 5 — taux de rafraîchissement cible pour le prétraitement--no-skip-still — intégrer tous les segments, même ceux sans changement visuel--rpm 10 — limiter les requêtes par minute vers l'API cloud (détails ci-dessous)--backend local — utiliser un modèle local au lieu de Gemini (détails ci-dessous)--backend mlx — utiliser le modèle local via MLX sur Apple Silicon, plus rapide et plus léger que local (détails ci-dessous)$ 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:00
Saved clip: ./match_front_2024-01-15_14-30_02m15s-02m45s.mp4
Si le score de similarité du meilleur résultat est inférieur au seuil de confiance (0,41 par défaut, ou 0,35 avec `--backend mlx`), vous serez invité à confirmer avant l'élagage :```
No confident match found (best score: 0.28). Show results anyway? [y/N]:
Avec --no-trim, les résultats à faible confiance sont affichés avec une note au lieu d'une invite.
Options : --results N, --output-dir DIR, --no-trim pour ignorer le rognage automatique, --threshold 0.5 pour ajuster le seuil de confiance, --save-top N pour enregistrer les N meilleurs clips au lieu du meilleur résultat uniquement, --dedupe pour définir à quel point un résultat peut être similaire à un choix mieux classé avant d'être écarté (activé par défaut, afin que les segments qui se chevauchent du même moment ne remplissent pas la liste), et --rerank pour demander à un VLM de reclasser les candidats retournés avant le rognage. Le backend et le modèle sont détectés automatiquement à partir de l'index — passez --backend ou --model uniquement pour les remplacer.```bash
sentrysearch search "red truck" --save-top 5 --dedupe 0.95