Skip to content

コマンドクイックリファレンス

masajiro edited this page May 25, 2020 · 2 revisions

前述の簡単な使用例に出てきたコマンド(create、append、search)と後述するONNGを生成するコマンド(reconstruct-graph)について良く使われるパラメータのみを紹介します。詳細はこちらをご参照ください。

インデックスの初期化 create

create コマンドは指定されたインデックス名のディレクトリを生成しインデックスとして初期化します。その後、指定されたデータを登録します。

ngt create -d no_of_dimensions [-o object_type] [-D distance_function] [-E no_of_edges] [-S no_of_edges_at_search_time] index [registration_data]

index
生成するインデックス名を指定します。データを登録後、本インデックス名のディレクトリが生成されてその中に複数のファイルからなるインデックスが生成されます。

registration_data
登録するベクトルデータを指定します。1行が1オブジェクト(データ)で構成され、各次元要素のデータはスペースまたはタブで区切られていなければなりません。省略するとインデックスの初期化のみ行います。

-d no_of_dimensions
登録データの次元数を指定します。登録データファイルの各行がすべて次元要素のみで構成されている場合には指定不要ですが、次元要素に続き属性情報などが存在している場合にはこの次元数に基づき後続データを無視します。

-o object_type
データオブジェクトの型を指定します。

オプション指定 データタイプ バイトサイズ
f 単精度(デフォルト) 4
c 正整数(バイナリ) 1

整数型はバイナリ(2値)型としても扱えるので、登録データでは8ビット毎の10進数として指定します。次元数はバイト数となります。つまり、64ビットのバイナリの場合には次元数は8になります。ビット数が8の倍数にならないときには、0を追加し8の倍数になるようします。バイナリデータの場合にはhamming距離とjaccard距離のみが利用できます。

-D distance_function
距離関数を指定します。

オプション指定 距離関数 データ型
1 L1 単精度/整数
2 L2(デフォルト) 単精度/整数
a 角度 単精度/整数
A 正規化角度*1 単精度/整数
c コサイン類似度 単精度/整数
C 正規化コサイン類似度 単精度/整数
h ハミング 整数
j ジャッカード 整数

*1: 指定されたデータを正規化した上で保存します。

-E no_of_edges (default = 10)
グラフ生成時の各ノードの初期エッジ数を指定します。登録したデータ(ノード)に対して距離の近いノードにリンク(エッジ)を付与します。

-S no_of_edges_at_search_time (デフォルト=40)
インデックス生成に伴う検索時及び生成後の検索時に利用するエッジ数を指定します。seachコマンドによる検索時においてエッジ数を指定しない場合にこの値が利用されます。値が-2の時には各検索開始時に最適な参照エッジ数が自動で算出されます。

データの登録 append

append コマンドは指定された登録データファイル内のデータを指定されたインデックスに登録します。

ngt append index registration_data

index
既存のインデックスを指定します。

registration_data
登録するベクトルデータを指定します。1行が1オブジェクト(データ)で、各次元のデータはスペースまたはタブで区切られていなければなりません。

検索 search

search コマンドは指定されたクエリを使って検索します。

ngt search [-n no_of_searches] [-r search_radius] [-e search_range_coefficient] [-E max_no_of_edges] index query_data

index
既存のインデックス名を指定します。

query_data
クエリデータのファイル名を指定します。1行が1クエリデータであり、登録データと同様に各次元のデータはスペースまたはタブで区切られていなければなりません。複数クエリを与えた場合には順次検索します。

-n no_of_searches(デフォルト:20)
検索結果数を指定します。

-e search_range_coefficient (デフォルト=推奨値=0.1)
探索範囲の拡大係数です。大きければ精度が高くなりますが遅くなり、小さければ精度は下がりますが速くなります。0~0.3の範囲内で調整することが望ましいですが、負の値も指定可能です。

-E max_no_of_edges(デフォルト=createで指定した値または40)
検索時に利用するエッジ数を指定します。グラフ上の各ノードのエッジ数よりも小さいエッジ数で検索する場合に指定します。

グラフの再構成 reconstruct-graph

指定されたインデックスからグラフを再構成したインデックスを生成します。

  $ ngt reconstruct-graph [-m shortcut_mode] [-s search_optimization_mode] [-I graph_type] -o no_of_outgoing_edges -i no_of_incoming_edges input_index reconstructed_index

input_index
既存のインデックス名を指定します。

reconstructed_index
再構成されるインデックス名を指定します。

-o no_of_outgoing_edges
再構成されるグラフに付与する入力グラフの各ノードの出エッジ数を指定します。この値は再構成されるグラフの出次数の下限値となります。

-i no_of_incoming_edges
再構成されるグラフに付与する入力グラフの各ノードの出エッジ数を指定します。ただし、出エッジの方向を反転した上で再構成されるグラフに付与されます。この値は再構成されるグラフの入次数の下限値となります。

-m mode
グラフのショートカット削減のモードを指定します。

  • S: ショートカット削減あり(デフォルト)
  • s: ショートカット削減なし

-s mode
Specify the mode of the search parameter optimization.

  • s: 探索エッジパラメータ最適化
  • p: プリフェッチパラメータ最適化
  • a: 精度テーブル生成
  • -: 上記すべて(デフォルト)

-I graph_type 既存のグラフのタイプを指定します。ANNG以外のグラフではANNGに変換してから再構成します。

  • a: ANNG
  • o: ANNG以外