本文由 AI 分析生成
Summary
Fendy Feng’s June 2025 comparison of the main open-source vector search engines: Milvus, Faiss, Annoy, Weaviate, and Qdrant, plus honorable mentions (Elasticsearch, Vespa, pgvector, Chroma, Marqo, LanceDB). Covers architecture, performance, trade-offs, and a decision framework.
Fendy Feng 2025 年 6 月對主要開源向量搜索引擎的比較:Milvus、Faiss、Annoy、Weaviate 和 Qdrant,以及補充提及(Elasticsearch、Vespa、pgvector、Chroma、Marqo、LanceDB)。涵蓋架構、性能、取捨和決策框架。
Key Points
- Milvus: cloud-native (separated storage/compute), horizontal scaling, HNSW/IVF/DiskANN indexes, hybrid search (vector + scalar + full-text), time travel queries; most GitHub stars (35K+); managed version: Zilliz Cloud; best general-purpose choice
- Faiss (Meta): C++ library with Python bindings, CPU+GPU optimized, fastest raw performance but no built-in persistence or distribution; ideal for research/prototyping; steeper learning curve
- Annoy (Spotify): random projection trees, read-optimized, immutable after build (must rebuild for updates), disk-based/memory-mapped; ideal for static recommendation workloads
- Weaviate: vector + knowledge graph hybrid; HNSW indexing; expressive cross-vector+relationship queries; more setup complexity; not fastest for pure vector-only workloads
- Qdrant: rich payload-based filtering (AND/OR/NOT), ACID compliance, REST+gRPC APIs; newer (2021); good for filter-heavy search; horizontal scaling still evolving
- pgvector: PostgreSQL extension; pragmatic choice for existing Postgres users; IVF+HNSW; SQL joins between vector and relational data; performance ceiling lower than dedicated systems
- Decision framework: scale requirements → query patterns (pure vs. hybrid) → update frequency → integration needs → team expertise
Insights
The key differentiator across engines is how they handle hybrid queries (vector similarity + metadata filtering). Milvus applies filters pre/post-search with good performance; Qdrant integrates filters as part of the search process; Weaviate adds graph traversal on top. For most new RAG/recommendation projects, Milvus or Qdrant are sensible starting points. Faiss is the right choice when you need maximum raw throughput and are willing to build the surrounding infrastructure yourself (it’s a library, not a service). The pgvector trajectory is worth watching: “does SQL remain necessary for AI workloads?” is an open question, but for teams already on Postgres it removes operational complexity. VDBBench (open-source by Zilliz) is the recommended benchmark tool for real-workload evaluation rather than synthetic tests.
Connections
Raw Excerpt
Vector search has moved beyond niche applications to become a fundamental building block for many modern applications. For most teams just starting with vector search, Milvus provides a good balance of features, performance, and operational simplicity.