Tutorial - NanoDB
Let's run NanoDB's interactive demo to witness the impact of Vector Database that handles multimodal data.
What you need
-
One of the following Jetson devices:
Jetson AGX Orin (64GB) Jetson AGX Orin (32GB) Jetson Orin NX (16GB) Jetson Orin Nano (8GB)
-
Running one of the following versions of JetPack:
JetPack 5 (L4T r35.x) JetPack 6 (L4T r36.x)
-
Sufficient storage space (preferably with NVMe SSD).
16GB
for container image40GB
for MS COCO dataset
-
Clone and setup
jetson-containers
:git clone https://github.com/dusty-nv/jetson-containers bash jetson-containers/install.sh
How to start
Download COCO
Just for an example, let's use MS COCO dataset:
cd jetson-containers
mkdir -p data/datasets/coco/2017
cd data/datasets/coco/2017
wget http://images.cocodataset.org/zips/train2017.zip
wget http://images.cocodataset.org/zips/val2017.zip
wget http://images.cocodataset.org/zips/unlabeled2017.zip
unzip train2017.zip
unzip val2017.zip
unzip unlabeled2017.zip
Download Index
You can download a pre-indexed NanoDB that was already prepared over the COCO dataset from here:
cd jetson-containers/data
wget https://nvidia.box.com/shared/static/icw8qhgioyj4qsk832r4nj2p9olsxoci.gz -O nanodb_coco_2017.tar.gz
tar -xzvf nanodb_coco_2017.tar.gz
This allow you to skip the indexing process in the next step, and jump to starting the Web UI.
Indexing Data
If you didn't download the NanoDB index for COCO from above, we need to build the index by scanning your dataset directory:
jetson-containers run $(autotag nanodb) \
python3 -m nanodb \
--scan /data/datasets/coco/2017 \
--path /data/nanodb/coco/2017 \
--autosave --validate
This will take a few hours on AGX Orin. Once the database has loaded and completed any start-up operations , it will drop down to a >
prompt from which the user can run search queries. You can quickly check the operation by typing your query on this prompt:
> a girl riding a horse
* index=80110 /data/datasets/coco/2017/train2017/000000393735.jpg similarity=0.29991915822029114
* index=158747 /data/datasets/coco/2017/unlabeled2017/000000189708.jpg similarity=0.29254037141799927
* index=123846 /data/datasets/coco/2017/unlabeled2017/000000026239.jpg similarity=0.292171448469162
* index=127338 /data/datasets/coco/2017/unlabeled2017/000000042508.jpg similarity=0.29118549823760986
* index=77416 /data/datasets/coco/2017/train2017/000000380634.jpg similarity=0.28964102268218994
* index=51992 /data/datasets/coco/2017/train2017/000000256290.jpg similarity=0.28929752111434937
* index=228640 /data/datasets/coco/2017/unlabeled2017/000000520381.jpg similarity=0.28642547130584717
* index=104819 /data/datasets/coco/2017/train2017/000000515895.jpg similarity=0.285491943359375
You can press Ctrl+C to exit. For more info about the various options available, see the NanoDB container documentation.
Interactive Web UI
Spin up the Gradio server:
jetson-containers run $(autotag nanodb) \
python3 -m nanodb \
--path /data/nanodb/coco/2017 \
--server --port=7860
Then navigate your browser to http://<IP_ADDRESS>:7860
, and you can enter text search queries as well as drag/upload images:
To use the dark theme, navigate to
http://<IP_ADDRESS>:7860/?__theme=dark
instead