관계형 데이터와 함께 임베딩을 저장하고 쿼리할 수 있는 Postgres용 오픈 소스 벡터 유사도 검색 확장 프로그램입니다.
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
pip으로 패키지를 설치합니다
pip install pynndescent - 2
데이터에 검색 인덱스를 만들고 가장 가까운 이웃 15개를 쿼리합니다
사용 전 알아둘 점
- README에 따르면 이 프로젝트는 아직 초기 단계이며 문서도 계속 보완되고 있습니다.
- 정확도가 높은 근사 검색(정확도 80~100%)을 대상으로 하며, 정확 검색을 위한 것은 아닙니다.
토픽
자주 묻는 질문
- 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 통계는 매일 갱신됩니다.
관련 프로젝트
Lance 형식으로 저장된 데이터에서 벡터, 전문 검색, SQL 검색을 지원하는 멀티모달 AI용 임베디드 검색 라이브러리 겸 데이터베이스입니다.
대규모 근사 최근접 이웃 벡터 검색을 위한 C++ 라이브러리로, 인덱스 구축·검색·분산 서빙 도구를 제공합니다.
그래프 및 트리 인덱스를 사용해 고차원 벡터에서 빠른 근사 최근접 이웃 검색을 수행하는 C++ 라이브러리이자 명령줄 도구입니다.
HNSW 그래프 알고리즘을 사용해 빠른 근사 최근접 이웃 검색을 수행하는 Python 바인딩 포함 헤더 전용 C++ 라이브러리입니다.
pgvector에 DiskANN 기반 인덱스와 라벨 필터링을 추가해 벡터 검색을 더 빠르고 저렴하게 만드는 Rust 기반 Postgres 확장입니다.