Lesson 2 / 28

The Landscape: Libraries, Extensions, Dedicated Engines, Managed Services

Place the main options in four families.

Four families

(1) Libraries (FAISS, hnswlib, ScaNN): in-process indexes; fastest to start, you build everything else. (2) Extensions or features of general databases: pgvector for PostgreSQL, vector search in Elasticsearch/OpenSearch, MongoDB Atlas, Redis, and others: vectors live beside your existing data, with SQL or the engine's query language, existing backups, security and operations. (3) Dedicated open-source engines such as Qdrant, Milvus, Weaviate, Chroma and LanceDB: purpose-built for vector workloads with rich filtering, hybrid search and scaling features, which you run yourself or use as a hosted service. (4) Managed proprietary services such as Pinecone: you rent an API and the provider operates it. Features, limits and prices change fast, so verify current documentation for any product before deciding.

The four families

A map, not a ranking; examples are not exhaustive.

Family                         Examples                                   You get / you give up
library                        FAISS, hnswlib, ScaNN                      speed, control / persistence, filters, HA are yours
extension of a general DB      pgvector, Elasticsearch/OpenSearch, Mongo, Redis   one system, SQL, backups / may trail specialised engines at huge scale
dedicated open-source engine   Qdrant, Milvus, Weaviate, Chroma, LanceDB  rich vector features / one more system to run
managed service                Pinecone, hosted versions of the above     no operations / cost, lock-in, data leaves your network

Start with what you already run

A new database is a new on-call burden. Prove that your current stack cannot meet the measured need before adding another system.

Quick check: Which family lets you keep vectors beside existing relational data with SQL?

  • An extension such as pgvector
  • A bare ANN library
  • A CDN
  • A message queue
Answer

An extension such as pgvector — pgvector adds vector types and indexes to PostgreSQL.