Categories: 工作・開発

数百万件のベクトル検索をESP32でSDカードから実行、サーバーもクラウドも不要

AIの「ベクトル検索」は、ふつう大きなメモリを積んだサーバーで動く。開発者のBruno Keymolen氏は、それを手のひらサイズのマイコンで動かすソフト「nn20db」を公開した。数百万件のデータを、SDカードなどの安い記憶装置から直接検索する。サーバーもクラウドもGPUもいらない。

ベクトル検索は、画像や文章などを数字の並び(ベクトル)に置き換え、似たものを、距離の近いものとして探す仕組みだ。AIの意味検索や、画像や音声の類似探索に使われる。ふつうは、この索引をまるごとメモリに載せるため、とても大きなメモリが要る。

nn20dbは、索引をメモリではなく記憶装置に置き、必要な部分だけを読み出す。そのため、チップのメモリよりずっと大きなデータでも扱える。近いものへ次々とたどっていく「HNSW」というグラフを使い、すべてを総当たりせずに近い候補を見つける。数百万件でも、検索は1秒から数秒で済む。索引は記憶装置に残るため、電源を切っても作り直さずに済む。

使い方は、まずパソコン(Linux)で索引を作り、その中身をSDカードにコピーする。あとは、ESP32-P4のようなマイコンが、手元でその索引を検索する。付属のデモでは、1万件の都市データから最も近い街を探したり、画像の特徴から似た画像を見つけたりできる。ネットにつながっていなくても動く。距離の測り方は、コサインやユークリッドなど複数から選べる。

用途としては、機器の中で完結する画像や音声の照合、音楽の断片から曲を言い当てる仕組み、ネットに頼らない検索などが挙げられる。いまはベータ版で、SDKとデモは公開されているが、中核のライブラリはバイナリで配られる。個人や教育の用途なら無償で使える。氏は、制約のある機器で試した人からの声を求めている。

関連情報

FabScene編集部

FabScene編集部