python annoy

pythonのannoyの使い方

タグ annoy


pythonのannoyの使い方

概要

  • RPF(Random Projection Forest)を利用して高次元データの近似最近傍検索を効率的に行う
  • annoyはbuildしたインデックスに後から要素を追加することができない

インストール

ダウンロード

$ pythno3 -m pip install annoy

具体例

インデックスの構築

from annoy import AnnoyIndex
import random

# ベクトルの次元を指定
dimension = 40

# Annoyインデックスの初期化
index = AnnoyIndex(dimension, 'angular')

# サンプルデータの追加
n_items = 1000
for i in range(n_items):
    v = [random.gauss(0, 1) for z in range(dimension)]
    index.add_item(i, v)

# インデックスの構築
n_trees = 10
index.build(n_trees)

検索

# クエリベクトルの作成
query_vector = [random.gauss(0, 1) for z in range(dimension)]

# 最も近いアイテムの検索
n_nearest_neighbors = 10
nearest_neighbors = index.get_nns_by_vector(query_vector, n_nearest_neighbors)
print(nearest_neighbors) # indexで得られる

Google Colab