高次元ベクトルデータ検索技術「NGT」の環境をDockerで爆速構築
類似画像検索システムを構築するにあたり、高次元ベクトルデータの検索にNGTを使いました。本稿では、NGTの環境をDockerで爆速構築する方法を紹介します。
NGT
NGTとは、高次元ベクトルデータを高速に検索するコマンド及びライブラリのことです。Yahoo! Japanによって開発されました。
膨大なベクトルデータの検索でこのようなライブラリが必要とされます。僕は、十万枚規模の画像特徴ベクトル(4000次元)の検索に利用しました。
Docker
NGTはUbuntuでの動作確認が行われています。UbuntuをベースイメージとしたDockerコンテナを作っていきます。
Dockerコンテナの作成
以下のようなDockerfileとシェルスクリプトを用意します。これらを実行するだけです。
シェルスクリプトを動作させれば、NGTがコンパイルされた状態のDockerコンテナが作成され、コンテナのbashにアタッチできます。
アタッチした環境(Bash環境)では、 ngt
コマンドが動作します。
ビルド時間は長いですが、一度環境を作ってしまえばとても簡単にベクトルデータ検索ライブラリが使えるようになります。
NGTを試す
NGTの試し方は公式を参考にしてください。
まとめ
Yahoo! Japanが作成した高次元ベクトルデータ検索ライブラリNGTを試せる環境をDockerを用いて瞬時に作成する方法を紹介しました。
Dockerfileに環境構築の手順が書いてあるので、時間が経ったあとでも環境を再現しやすいでしょう。
次回予定
次はGolangでNGTをバックエンドにした(雑な)APIサーバーを作ります。