knowhere  by zilliztech

Vector search engine for Milvus

Created 2 years ago
287 stars

Top 91.3% on SourcePulse

GitHubView on GitHub
Project Summary

Knowhere is a C++ vector search engine designed as the core component for Milvus, offering integrations with FAISS, HNSW, and DiskANN. It targets developers building large-scale similarity search systems who need a high-performance, embeddable vector index library.

How It Works

Knowhere leverages C++ for performance and provides a flexible architecture that can be compiled with various backends, including FAISS, HNSW, and DiskANN. It supports CPU and GPU (via cuVS) acceleration, as well as disk-based ANN indexing with DiskANN, allowing users to choose the optimal configuration for their hardware and performance requirements.

Quick Start & Requirements

  • Installation: Build from source using Conan.
  • Prerequisites: Linux (Ubuntu 20.04, CentOS verified) or macOS (x86_64, Apple Silicon). Requires build-essential, libopenblas-openmp-dev, libaio-dev, python3-dev, python3-pip, and conan==1.61.0. GPU builds require CUDA.
  • Setup: Building from source involves Conan package installation and compilation, with GPU and DiskANN support requiring specific Conan flags. Python wheel generation is also supported.
  • Docs: Milvus Main Project (Knowhere is built implicitly within Milvus).

Highlighted Details

  • Integrates multiple ANN libraries: FAISS, HNSW, DiskANN.
  • Supports CPU, GPU (cuVS), and DiskANN indexing.
  • Written in C++ for performance.
  • Includes unit tests for verification.

Maintenance & Community

Knowhere is a core component of the Milvus project. Contributions are managed via pull requests and pre-commit hooks for code quality.

Licensing & Compatibility

Apache License 2.0. Compatible with commercial and closed-source applications.

Limitations & Caveats

The README focuses on building from source and does not detail API usage or provide high-level documentation for direct integration outside of the Milvus ecosystem. Pre-commit hooks require clang-format and clang-tidy, which may need separate installation.

Health Check
Last Commit

9 hours ago

Responsiveness

Inactive

Pull Requests (30d)
18
Issues (30d)
11
Star History
10 stars in the last 30 days

Explore Similar Projects

Feedback? Help us improve.