벡터 데이터베이스 시각화: 유사도 검색을 위한 강력한 도구, Feder
머신 러닝(ML) 모델의 도움으로 사진과 동영상 같은 비정형 데이터를 벡터 유사도 검색을 위한 임베딩으로 쉽게 인코딩할 수 있습니다. 검색을 가속화하기 위해 IVF_FLAT 및 HNSW와 같은 다양한 인덱스가 채택됩니다. 애플리케이션에 가장 적합한 인덱스를 선택하려면 사용자는 검색 속도와 정확도 사이에서 절충해야 합니다.
사용자의 번거로움을 덜기 위해, ANNS 알고리즘을 시각화하는 도구인 Feder를 발표하게 되어 자랑스럽습니다. Feder를 사용하면 사용자는 전례 없이 직관적인 방식으로 다양한 유형의 인덱스와 그 매개변수를 이해할 수 있습니다. Feder는 또한 Pinecone과 같은 고급 벡터 데이터베이스의 데이터를 시각화하는 데 도움이 되어 대량의 데이터를 더 쉽게 관리할 수 있게 합니다.
Feder를 통해 사용자는 다양한 인덱스가 어떻게 구조화되어 있는지, 각 유형의 인덱스를 사용해 데이터가 어떻게 구성되는지, 그리고 다양한 매개변수 구성이 인덱싱 구조에 어떤 영향을 미치는지 관찰할 수 있습니다. 또한 Feder는 벡터 유사도 검색의 전체 과정을 시각화하는 데도 도움이 되며, 검색 중 데이터 접근에 대한 상세한 기록을 제공합니다. 이는 복잡한 데이터를 분석하고 시각화하는 데 특히 유용하며, 사용자가 추세와 패턴을 식별하여 정보에 기반한 결정을 내릴 수 있도록 돕습니다.
현재 Feder는 hnswlib의 HNSW만 지원합니다. 더 많은 인덱스가 곧 지원될 예정입니다.
벡터 데이터베이스 소개
벡터 데이터베이스는 대량의 벡터 데이터를 효율적으로 저장, 관리 및 쿼리하도록 설계된 특수한 유형의 데이터베이스입니다. 벡터 데이터는 이미지, 텍스트 또는 오디오와 같은 복잡한 정보를 고차원 벡터 공간의 수치 벡터로 표현합니다. 이러한 데이터베이스는 유사도 검색에 최적화되어 있어, 사용자가 주어진 쿼리 벡터와 가장 유사한 벡터를 찾을 수 있게 합니다. 이 기능은 데이터의 미묘한 차이를 이해하는 것이 중요한 이미지 인식, 자연어 처리, 추천 시스템과 같은 애플리케이션에서 특히 가치가 있습니다.
벡터 데이터베이스에서 Feder 이해하기
Feder는 JavaScript로 구축되었습니다. 시각화를 위해 Feder를 사용하려면, 먼저 인덱스를 구축하고 Faiss 또는 Hnswlib에서 인덱스 파일을 저장해야 합니다. Feder는 시각화 전에 전처리 및 데이터 정리에 도움을 줄 수 있습니다. 그런 다음 Feder가 업로드된 파일을 분석하여 인덱스 정보를 얻고 시각화를 준비합니다. Feder는 또한 벡터 데이터베이스에 저장된 데이터의 품질을 관리하고 시각화합니다. 벡터 유사도 검색 중에는 대상 벡터와 검색 매개변수 구성을 제공해야 합니다. 그러면 Feder가 임베딩 모델을 사용해 데이터를 수치 벡터로 변환하는 과정을 포함하여 전체 검색 과정을 시각화해 줍니다.
federjs는 두 부분으로 구성됩니다:
- Feder-Core
- 인덱스 파일을 분석하여 인덱스에 대한 자세한 정보를 얻습니다.
- 인덱스 쿼리를 지원하고, 인덱스 쿼리 중 접근된 벡터의 상세한 기록을 유지합니다.
- Feder-View
- 다양한 인덱스의 전체 구조를 시각화할 수 있게 합니다.
- 다양한 인덱스를 사용한 전체 유사도 검색 과정을 시각화할 수 있게 합니다.
federjs 외에도 Feder는 Python 도구인 federpy도 제공합니다. federpy를 사용하면 IPython Notebook에서 인덱스 구조와 검색 과정을 직접 시각화할 수 있습니다. 또는 시각화를 HTML 파일로 내보낸 다음 브라우저를 사용해 웹 서비스를 시작할 수도 있습니다.
Feder 사용자 가이드를 읽고 Feder 사용 방법에 대해 자세히 알아보세요.
이 사용 사례에서는 17,000개 이상의 이미지를 포함하는 고전적인 ML 이미지 데이터셋인 VOC 2012를 사용합니다.
먼저, 오픈 소스 ML 파이프라인인 Towhee를 사용하여 VOC 2012 데이터셋의 이미지를 벡터로 인코딩합니다. 그런 다음 Hnswlib로 인덱스를 구축하고 인덱스 파일을 저장합니다. 마지막으로 시각화를 위해 Feder를 사용합니다. Feder는 전체 데이터셋을 검색할 필요 없이 검색 프로세스를 최적화합니다.
여기 링크는 HNSW의 시각화를 볼 수 있는 대화형 사용자 경험을 제공합니다.
HNSW 인덱스는 다층 구조이며 각 레이어는 상호 연결된 네트워크입니다. 맨 아래 레이어는 데이터베이스의 모든 데이터 객체를 포착하며, 위쪽 최상위 레이어로 이동할수록 데이터 포인트/노드는 더 희소해집니다. 이를 현대 교통 시스템에 비유해 보겠습니다. 샌프란시스코에서 뉴욕시 어퍼 이스트 사이드에 숨어 있는 부티크 매장을 방문한다고 하면, 아마 먼저 JFK나 LaGuardia로 비행기를 타고 가서 맨해튼으로 가는 가장 편리한 지하철을 찾은 다음, 그 동네에 도착하기 위해 버스나 심지어 Citi bike로 갈아탈 것입니다. 마찬가지로, 대상에 가장 가까운 노드를 빠르게 찾고 싶다면 먼저 최상위 레이어에서 검색을 시작합니다. 여기에서의 검색이 더 빠르기 때문입니다. 하지만 한 가지 단점은, 대개 상위 레이어와 네트워크가 원하는 목적지로 데려가거나 기대한 결과를 찾도록 도와주지 못한다는 것입니다. 따라서 더 높은 정확도를 위해 그 아래의 다음 레이어로 이동합니다.
HNSW 인덱스를 구축할 때, 최상위 레이어의 한 노드가 알고리즘에 의해 검색을 시작하는 진입점으로 선택됩니다. Feder는 병렬 처리를 사용하여 쿼리 성능을 향상시킵니다.
아래는 VOC 2012 데이터셋을 기반으로 구축된 5개 레이어 HNSW 인덱스에서 Layer 4, 3, 2의 시각화를 보여줍니다.
Feder는 대화형 사용자 경험을 제공합니다. 따라서 어떤 노드든 선택하여 더 자세히 관찰할 수 있습니다. 노란색으로 강조된 경로는 입구에서 선택한 노드에 도달하기까지 경유 노드가 가장 적은 최단 경로를 나타냅니다. 흰색 경로는 선택한 노드가 도달할 수 있는 다른 모든 노드를 보여줍니다. 확대하면 더 많은 세부 정보를 볼 수 있으며, 레이어가 많을수록 연결된 객체가 더 유사하다는 것을 알게 됩니다. Feder는 또한 원시 데이터를 시각적 형식으로 변환합니다.
왼쪽 상단의 개요 패널에서 관련 통계를 볼 수 있습니다. 매개변수 M은 선택한 노드가 각 레이어에서 다른 노드 중 몇 개에 도달할 수 있는지를 결정합니다. 스크린샷에서 볼 수 있듯이 m= 8입니다. 이는 임의의 노드에서 시작할 때, 이 임의의 노드가 도달할 수 있는 노드의 최대 수가 8개라는 의미입니다.
매개변수 값을 수정하여 인덱스 구조가 어떻게 영향을 받는지 관찰할 수 있습니다.
M 값이 증가함에 따라 HNSW 구조는 더 평평해집니다. ef 값을 수정한 결과는 시각화에서 덜 뚜렷합니다. 실제로 매개변수 ef는 인덱스 구축 중 생성되는 링크에 영향을 미칩니다.
검색할 대상 이미지를 업로드하면, Feder가 전체 검색 프로세스를 애니메이션으로 표시합니다.
벡터 유사도 검색의 전체 과정을 시각화하는 애니메이션입니다.
시각화는 벡터 유사도 검색에서 접근된 데이터의 기록을 표시합니다. 즉, 대상 벡터와의 거리 측면에서 비교된 모든 벡터를 볼 수 있으며, 이 과정에 포함되지 않은 벡터는 애니메이션에 표시되지 않습니다.
시각화에서 볼 수 있듯이, HNSW 인덱스의 경우 검색은 최상위 레이어에서 시작하여 이 레이어에서 대상에 가장 가까운 노드를 찾은 다음, 이 레이어에서 접근 가능한 모든 노드가 대상에 충분히 가깝지 않으면 다음 레이어로 내려갑니다.
하단 레이어에서의 검색은 여러 경로로 진행된다는 점에 유의해야 합니다. 매개변수 ef는 검색 경로의 선택을 결정합니다. HNSW에 대한 자세한 소개는 논문 "Efficient and robust approximate nearest neighbor search using hierarchical navigable small world graphs"를 읽어보세요.
인터랙티브 시각화를 통해 검색 경로의 시작 부분에 있는 노드들은 관련성이 낮다는 것을 확인할 수 있습니다. 하지만 최근접 이웃 검색이 진행됨에 따라 검색 정확도는 빠르게 상승합니다. 왼쪽의 통계 패널은 VOC 2012 데이터셋의 총 17,000개 이미지 중 약 1%의 이미지(약 170개 이미지)만이 검색 중 실제로 접근된다는 것을 보여줍니다. 검색에서의 엄청난 가속은 HNSW 인덱스 덕분에 가능합니다.
또한 인덱스 매개변수에 대해 서로 다른 값을 설정하고 새로운 인덱스 파일을 생성하여 구조와 검색 효율성을 비교할 수도 있습니다. Feder는 유사도 검색에서 벡터 임베딩의 사용을 시각화합니다.
Feder의 주요 기능
Feder는 여러 주요 기능을 제공하는 강력한 도구로, 대량의 벡터 데이터를 관리하고 쿼리하는 데 이상적인 선택입니다:
고급 벡터 검색: Feder는 코사인 유사도와 유클리드 거리를 포함한 정교한 벡터 검색 알고리즘을 지원하여, 사용자가 주어진 쿼리 벡터와 가장 유사한 벡터를 높은 정밀도로 찾을 수 있도록 합니다.
확장성: 수평 확장이 가능하도록 설계된 Feder는 방대한 양의 데이터와 높은 쿼리량을 손쉽게 처리할 수 있어, 데이터셋이 증가하더라도 견고한 성능을 보장합니다.
데이터 관리: Feder는 포괄적인 데이터 관리 시스템을 제공하여 사용자가 벡터 데이터를 쉽게 관리, 업데이트, 유지보수할 수 있게 하며, 데이터 무결성과 접근성을 보장합니다.
시맨틱 검색: 시맨틱 검색을 지원하는 Feder는 사용자가 의미와 문맥을 기반으로 벡터를 검색할 수 있도록 하여, 검색 결과의 관련성과 정확성을 향상시킵니다.
Feder의 사용 사례
Feder의 다재다능함은 다음을 포함한 다양한 애플리케이션에 적합하게 만듭니다:
이미지 인식: Feder는 이미지에서 객체, 사람, 장면을 식별할 수 있는 이미지 인식 시스템을 개발하는 데 사용될 수 있어, 보안, 리테일 등 다양한 애플리케이션에 매우 유용합니다.
자연어 처리: Feder는 인간 언어를 이해하고 생성하는 자연어 처리 시스템을 구동할 수 있으며, 챗봇, 번역 서비스, 감정 분석과 같은 애플리케이션을 용이하게 합니다.
추천 시스템: Feder는 사용자의 선호도와 행동을 기반으로 제품, 서비스 또는 콘텐츠를 제안하는 추천 시스템을 구축하는 데 활용될 수 있으며, 사용자 경험과 참여도를 향상시킵니다.
Feder를 벡터 데이터베이스와 통합하기
Feder는 다른 벡터 데이터베이스와 원활하게 통합되어 보다 포괄적이고 견고한 벡터 데이터 관리 시스템을 만들 수 있습니다. 통합 방법은 다음과 같습니다:
데이터 가져오기/내보내기: Feder는 다른 벡터 데이터베이스에서 데이터를 가져오고 내보낼 수 있어, 사용자가 시스템 간에 데이터를 쉽게 전송하고 플랫폼 전반의 일관성을 유지할 수 있도록 합니다.
API 통합: Feder는 견고한 API를 제공하여 개발자가 이를 다른 벡터 데이터베이스 및 애플리케이션과 통합할 수 있게 하며, 원활한 상호 운용성과 확장된 기능을 촉진합니다.
쿼리 페더레이션: Feder는 여러 벡터 데이터베이스에 걸쳐 쿼리를 페더레이션할 수 있어, 사용자가 서로 다른 시스템 전반에서 벡터를 검색할 수 있도록 하며, 이를 통해 데이터 분석의 범위와 깊이를 향상시킵니다.
이러한 통합 기능을 활용함으로써, 사용자는 데이터 관리와 쿼리 성능을 향상시키고, 더 정보에 기반한 데이터 중심 의사결정을 내릴 수 있습니다.
계속 읽기

Introducing Zilliz CLI and Agent Skills for Zilliz Cloud
Manage your vector database from your terminal or AI coding agent. Zilliz CLI and Agent Skills work with Claude Code, Cursor, Codex, and Copilot.

3 Easiest Ways to Use Claude Code on Your Mobile Phone
Run Claude Code from your phone with Remote Control, Happy Coder, or SSH + Tailscale. Comparison table, setup steps, and tools for typing, memory, and parallel tasks.

Democratizing AI: Making Vector Search Powerful and Affordable
Zilliz democratizes AI vector search with Milvus 2.6 and Zilliz Cloud for powerful, affordable scalability, cutting costs in infrastructure, operations, and development.



