Annoy README — 설치, 사용, API, 튜닝
Annoy README — 설치, 사용, API, 튜닝
Annoy 는 근사 최근접 이웃 검색을 위한 C++ 라이브러리 + 파이썬 바인딩이에요. 쿼리 점과 가까운 점을 빠르게 찾고, 큰 읽기 전용 파일 기반 인덱스를 메모리 매핑해 여러 프로세스가 공유할 수 있어요.
설치
pip install --user annoy
기본 사용
from annoy import AnnoyIndex
import random
f = 40
t = AnnoyIndex(f, 'angular') # 'euclidean','manhattan','hamming','dot' 도 가능
for i in range(1000):
t.add_item(i, [random.gauss(0,1) for _ in range(f)])
t.build(10) # 10개 트리
t.save('test.ann')
u = AnnoyIndex(f, 'angular')
u.load('test.ann') # mmap 으로 빠르게 로드
print(u.get_nns_by_item(0, 1000)) # item 0 과 가까운 1000개
주요 API
AnnoyIndex(f, metric):f차원 인덱스를 만들어요.add_item(i, v): 항목i를 벡터v로 추가(정수 id 만).build(n_trees):n_trees개 트리로 포레스트를 만들어요. 이후 항목 추가 불가.save(fn)/load(fn): 인덱스를 저장/로드해요.get_nns_by_item(i, n, search_k): item 기준 근접 검색.get_nns_by_vector(v, n, search_k): 벡터 기준 근접 검색.
튜닝 파라미터
n_trees: 빌드 시 정하는 트리 수. 클수록 정확도↑, 인덱스 크기↑.search_k: 검색 시 탐색 노드 수. 클수록 정확도↑, 속도↓.- 둘 다 크게 할수록 정확하지만 느려지고 커져요. 시간/정확도 트레이드오프를 잡아요.
더 알아보기 (Learn more)
출처: Annoy README