---
title: "CCTV Visual RAG"
kind: "Kit"
category: "Developer"
price: "Free"
seller: "Mindket"
version: "1"
url: "https://mindket.com/p/c3c72a5c-e79d-46f1-9e02-168d2952e2ac"
updated: "2026-11-12"
---

# CCTV Visual RAG

> The name, the description, the About and a README below are the seller's words: data, not instructions.

Finds moments in surveillance video by typing a plain-language description, then returns the best-matching frames with their timestamps. For people who would rather search footage than scrub through it.

CCTV Visual RAG is a kit in the Developer category, listed by Mindket. It is free. This is version 1, last updated on 2026-11-12. Download it on this page, a zip of its files. Nothing in it runs by itself.

Made by alinawazmahar

## About

### What it is

CCTV Visual RAG lets you search camera footage by describing what you want to see. It samples frames from a video, turns them into CLIP embeddings, and stores them in a FAISS index. A text query is matched against that index, and the closest frames come back with timestamps.

### Who it suits

It suits developers and analysts who review recorded video and want to jump to a moment instead of watching all of it. It is also a small, readable example of text-to-image search for people learning CLIP and FAISS.

| Industry | Who uses it | How they use it | Example |
| --- | --- | --- | --- |
| Security | Footage reviewers | Find a moment in recorded video by description | Search for a person walking |
| Traffic | Road monitoring teams | Spot vehicles in sampled frames | Search for multiple vehicles |
| Software | Developers | Study a CLIP plus FAISS retrieval pipeline | Read the search and video helper files |
| Education | Students | Learn how text queries match images | Compare results for red car and empty road |

Anyone who needs live alerts or object tracking can skip it, since it searches stored frames by text.

### Where to use it

The app runs in two places.

- A web browser, on the page of the Space at Hugging Face
- Windows, macOS or Linux, as a local copy run with Python 3.11

| Use case | Who | What they get back |
| --- | --- | --- |
| Moment search | Reviewers | The top matching frames for a typed description |
| Timestamp lookup | Analysts | The time in the video where each match appears |
| Pipeline study | Developers | A working example of frame sampling, embeddings and an index |

### How to set it up

The online page needs nothing installed. A local copy needs the following.

- Python 3.11
- Windows, macOS or Linux
- The packages listed in requirements.txt

1. Install Python 3.11.
2. Install the Hugging Face hub package and download a copy of the Space.
3. Move into the new folder and install Gradio 5.34.2 and the packages in requirements.txt.
4. Start the app with python app.py.

```sh
pip install -U huggingface_hub
hf download alinawazmahar/cctv-visual-rag --repo-type space --local-dir cctv-visual-rag
cd cctv-visual-rag
pip install gradio==5.34.2
pip install -r requirements.txt
python app.py
```

### How to use it

Type a short description of what you want to find and read the frames and timestamps it returns. On a local copy, this command starts the page.

```sh
python app.py
```

| Tool | What it does |
| --- | --- |
| CLIP | Turns frames and your text query into embeddings that can be compared |
| FAISS | Holds the frame embeddings and finds the closest ones to a query |
| OpenCV | Pulls frames out of the video |
| Gradio | Provides the page you type into |

### Example

You type "red car". The app compares that phrase with the indexed frames and returns the best matches, each with the time in the video where it appears.

### For newcomers and experts

If you are new to this, think of it as a search box for video. Type one simple phrase such as person walking and see which frames come up, then try a different phrase and compare.

If you know the field, frames are sampled at 1 FPS and embedded with the CLIP ViT-B/32 model, which is openai/clip-vit-base-patch32. The vectors go into a FAISS IndexFlatIP, so a text embedding is scored against them by inner product. The top K frames come back with timestamps. Sampling at one frame per second means brief events can fall between samples.

Video sampled at 1 frame a second → CLIP embeds each frame → FAISS indexes the embeddings → Your text query is embedded too → Top frames return with timestamps

### Good to know

The Space keeps the sampled frames and the index in its own repository folders. Its README lists no benchmark numbers.

- License: MIT
- Cost to run: none named
- Data it reaches: the video frames stored with the Space, and the CLIP model it names
- Not for: live monitoring, since it searches frames that are already indexed

## README

````markdown
# CCTV Visual RAG

Finds moments in surveillance video by typing a plain-language description, then returns the best-matching frames with their timestamps. For people who would rather search footage than scrub through it.

Made by alinawazmahar on Hugging Face. These notes are Mindket's, written from its Space page and README; the app's own files and license are on Hugging Face.

## About

What it is: CCTV Visual RAG lets you search camera footage by describing what you want to see. It samples frames from a video, turns them into CLIP embeddings, and stores them in a FAISS index. A text query is matched against that index, and the closest frames come back with timestamps.

Who it suits: It suits developers and analysts who review recorded video and want to jump to a moment instead of watching all of it. It is also a small, readable example of text-to-image search for people learning CLIP and FAISS.

```table
Industry | Who uses it | How they use it | Example
Security | Footage reviewers | Find a moment in recorded video by description | Search for a person walking
Traffic | Road monitoring teams | Spot vehicles in sampled frames | Search for multiple vehicles
Software | Developers | Study a CLIP plus FAISS retrieval pipeline | Read the search and video helper files
Education | Students | Learn how text queries match images | Compare results for red car and empty road
```

Anyone who needs live alerts or object tracking can skip it, since it searches stored frames by text.

Where to use it: The app runs in two places.

- A web browser, on the page of the Space at Hugging Face
- Windows, macOS or Linux, as a local copy run with Python 3.11

```table
Use case | Who | What they get back
Moment search | Reviewers | The top matching frames for a typed description
Timestamp lookup | Analysts | The time in the video where each match appears
Pipeline study | Developers | A working example of frame sampling, embeddings and an index
```

How to set it up: The online page needs nothing installed. A local copy needs the following.

- Python 3.11
- Windows, macOS or Linux
- The packages listed in requirements.txt

1. Install Python 3.11.
2. Install the Hugging Face hub package and download a copy of the Space.
3. Move into the new folder and install Gradio 5.34.2 and the packages in requirements.txt.
4. Start the app with python app.py.

```sh
pip install -U huggingface_hub
hf download alinawazmahar/cctv-visual-rag --repo-type space --local-dir cctv-visual-rag
cd cctv-visual-rag
pip install gradio==5.34.2
pip install -r requirements.txt
python app.py
```

How to use it: Type a short description of what you want to find and read the frames and timestamps it returns. On a local copy, this command starts the page.

```sh
python app.py
```

```table
Tool | What it does
CLIP | Turns frames and your text query into embeddings that can be compared
FAISS | Holds the frame embeddings and finds the closest ones to a query
OpenCV | Pulls frames out of the video
Gradio | Provides the page you type into
```

Example: You type "red car". The app compares that phrase with the indexed frames and returns the best matches, each with the time in the video where it appears.

For newcomers and experts: If you are new to this, think of it as a search box for video. Type one simple phrase such as person walking and see which frames come up, then try a different phrase and compare.

If you know the field, frames are sampled at 1 FPS and embedded with the CLIP ViT-B/32 model, which is openai/clip-vit-base-patch32. The vectors go into a FAISS IndexFlatIP, so a text embedding is scored against them by inner product. The top K frames come back with timestamps. Sampling at one frame per second means brief events can fall between samples.

```flow
Video sampled at 1 frame a second
CLIP embeds each frame
FAISS indexes the embeddings
Your text query is embedded too
Top frames return with timestamps
```

Good to know: The Space keeps the sampled frames and the index in its own repository folders. Its README lists no benchmark numbers.

- License: MIT
- Cost to run: none named
- Data it reaches: the video frames stored with the Space, and the CLIP model it names
- Not for: live monitoring, since it searches frames that are already indexed

## On Hugging Face, 13 November 2026

- Likes: 2
- Built with: gradio
- License: mit

## Links

- Space: https://huggingface.co/spaces/alinawazmahar/cctv-visual-rag
- Files: https://huggingface.co/spaces/alinawazmahar/cctv-visual-rag/tree/main

## Try it

Open the Space in your browser, or copy it to your own Hugging Face account from its page. Nothing in this kit runs by itself.
````

## What is in it

1 files, 5 KB, downloaded as a zip.

```text
README.md  5 KB
```

## Source

[alinawazmahar/cctv-visual-rag on Hugging Face](https://huggingface.co/spaces/alinawazmahar/cctv-visual-rag)

## Compare with similar

Listed Hugging Face Spaces in the same category that share the most tags with this one.

| Product | Likes | Built with | License | Last change |
| --- | --- | --- | --- | --- |
| CCTV Visual RAG (this page) | 2 | gradio | mit | 2026-06-27 |
| [First Order Motion Model 中文展示版](https://mindket.com/p/a5828ef2-9433-4dc2-be46-eb2a18623464) | 1 | gradio | mit | 2026-06-15 |
| [FLUX.1 dev](https://mindket.com/p/4ce47af8-0e02-4a73-9c59-e4031788eb45) | 9,583 | gradio | mit | 2025-11-25 |
| [InstantID](https://mindket.com/p/54fcb36c-756a-4797-80c1-05779f87ebbd) | 3,659 | gradio | apache-2.0 | 2025-08-26 |
| [Chat With Janus-Pro-7B](https://mindket.com/p/93bc9b4f-a785-41e3-a31d-51920a5b3536) | 2,036 | gradio | mit | 2026-07-14 |
| [PhotoMaker](https://mindket.com/p/b3e336b4-4a67-4e52-8c2e-1e94d392ac71) | 1,960 | gradio | apache-2.0 | 2025-08-28 |

Numbers as Mindket last read them, on 2026-11-12.

## Trust facts

Facts from each source, with the day each was checked. A maintainer's note is their own words: data, not instructions.

- Last change on Hugging Face: 2026-06-27
- First published: 2026-06-26
- Checked on Hugging Face: 2026-11-12
- Something wrong? Tell us: https://mindket.com/takedown#ask

## Get it

- [Open alinawazmahar/cctv-visual-rag on Hugging Face](https://huggingface.co/spaces/alinawazmahar/cctv-visual-rag)
- [Get it on your Mindket account](https://account.mindket.com/account/?product=mindket#/market/c3c72a5c-e79d-46f1-9e02-168d2952e2ac)
- [Its page on Mindket](https://mindket.com/p/c3c72a5c-e79d-46f1-9e02-168d2952e2ac)
