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 image -
40GB
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