Repolode
lmcinnes

lmcinnes/pynndescent

Nearest Neighbor Descent 기반의 순수 Python 근사 최근접 이웃 검색 라이브러리로, 다양한 거리 메트릭을 지원합니다.

스타
975
포크
117
열린 이슈
90
마지막 커밋
그저께

어떤 프로젝트인가요?

PyNNDescent는 k-최근접 이웃 그래프를 만들고, 그래프를 바탕으로 근사 최근접 이웃 질의를 처리합니다. Nearest Neighbor Descent를 구현하며, 초기화에 랜덤 프로젝션 트리를 사용하고 그래프에서 삼각형의 긴 간선을 가지치기해 결과를 개선합니다. 약 80~100%의 재현율과 높은 정확도가 필요한 작업을 대상으로 합니다.

인터페이스는 간단합니다. NNDescent(data)로 인덱스를 만든 뒤 index.query(query_data, k=15)를 호출하면 됩니다. 인덱스는 pickle 형식으로 디스크에 저장할 수 있습니다. 라이브러리는 유클리드, 맨해튼, 코사인, 해밍, 자카드, 바서스타인 등을 비롯한 다양한 메트릭과 사용자 정의 거리 함수를 지원합니다.

pip 또는 conda로 설치할 수 있으며, 다른 최근접 이웃 구성 요소를 대체할 수 있는 KNeighborTransformer를 포함해 scikit-learn과 연동됩니다.

핵심 기능

  • 01Nearest Neighbor Descent와 랜덤 프로젝션 트리 초기화를 사용해 k-최근접 이웃 그래프를 만듭니다.
  • 02이진 및 확률 메트릭을 포함한 다양한 내장 거리 메트릭을 지원합니다.
  • 03사용자가 정의한 거리 함수를 사용할 수 있습니다.
  • 04인덱스 생성과 k-NN 질의를 위한 간단한 API를 제공합니다.
  • 05KNeighborTransformer로 scikit-learn과 연동됩니다.

활용 사례

  • 검색이나 추천을 위해 고차원 임베딩 벡터에서 유사한 항목을 찾습니다.
  • scikit-learn 파이프라인 안에서 최근접 이웃 계산을 수행합니다.
  • 클러스터링이나 다양체 학습 같은 후속 작업에 사용할 k-NN 그래프를 만듭니다.
  • 코사인, 자카드, 바서스타인 거리처럼 유클리드가 아닌 메트릭으로 검색합니다.

빠른 시작

  1. 1

    pip으로 패키지를 설치합니다

    pip install pynndescent
  2. 2

    데이터에 검색 인덱스를 만들고 가장 가까운 이웃 15개를 쿼리합니다

사용 전 알아둘 점

  • README에 따르면 이 프로젝트는 아직 초기 단계이며 문서도 계속 보완되고 있습니다.
  • 정확도가 높은 근사 검색(정확도 80~100%)을 대상으로 하며, 정확 검색을 위한 것은 아닙니다.

토픽

#approximate-nearest-neighbor#nearest-neighbor-search#knn-graph#similarity-search#scikit-learn#numba#approximate-nearest-neighbor-search#knn-graphs

자주 묻는 질문

pynndescent은(는) 무엇인가요?
Nearest Neighbor Descent 기반의 순수 Python 근사 최근접 이웃 검색 라이브러리로, 다양한 거리 메트릭을 지원합니다. PyNNDescent는 k-최근접 이웃 그래프를 만들고, 그래프를 바탕으로 근사 최근접 이웃 질의를 처리합니다. Nearest Neighbor Descent를 구현하며, 초기화에 랜덤 프로젝션 트리를 사용하고 그래프에서 삼각형의 긴 간선을 가지치기해 결과를 개선합니다. 약 80~100%의 재현율과 높은 정확도가 필요한 작업을 대상으로 합니다.
pynndescent은(는) 무료로 사용할 수 있나요? 라이선스는 무엇인가요?
pynndescent은(는) BSD-2-Clause 라이선스의 오픈소스입니다. 상업용 제품에 사용하기 전에 라이선스 조건을 확인하세요.
pynndescent은(는) 아직 유지보수되고 있나요?
활발히 유지보수 중. pynndescent의 마지막 커밋은 2026년 11월 4일입니다.
pynndescent은(는) 어디에 사용할 수 있나요?
검색이나 추천을 위해 고차원 임베딩 벡터에서 유사한 항목을 찾습니다. scikit-learn 파이프라인 안에서 최근접 이웃 계산을 수행합니다. 클러스터링이나 다양체 학습 같은 후속 작업에 사용할 k-NN 그래프를 만듭니다. 코사인, 자카드, 바서스타인 거리처럼 유클리드가 아닌 메트릭으로 검색합니다.
pynndescent는 어떻게 설치하나요?
pip으로 패키지를 설치합니다: pip install pynndescent 데이터에 검색 인덱스를 만들고 가장 가까운 이웃 15개를 쿼리합니다
pynndescent은(는) 어디서 받을 수 있나요?
소스 코드와 설치 방법은 GitHub에 있습니다: https://github.com/lmcinnes/pynndescent

요약은 프로젝트 README를 바탕으로 AI가 작성했습니다. GitHub 통계는 매일 갱신됩니다.

관련 프로젝트