DEV Community

Dan Dascalescu
Dan Dascalescu

Posted on

How to choose a vector database: Pinecone, Weaviate, MongoDB Atlas, SemaDB

While building a RAG application to search through my extensive public bookmarks collection (~15,000+ items collected since 2006), I looked in more or less detail at some of the available vector database solutions:

  • Pinecone - a SaaS offering that only stores vectors
  • Weaviate - an open-source vector DB with optional cloud hosting
  • SemaDB - a new entrant in the space, open-source
  • MongoDB Atlas - a mature document-oriented database that has added vector search in June 2023
  • Milvus - open source + cloud offering by Zilliz
  • Vespa, Qdrant, Chroma, Vald, FAISS (a vector search engine, not a database)

My requirements were flexible, but looking at the entire landscape helped narrow them down. When comparing a relatively large number of offerings, some choices become clearer, and the search space can be rapidly reduced. For example if two products seem largely similar but one doesn't have an important feature you (may) need, it's easy to pick the other one.

Thus, my requirements were refined to:

  • Open source, to avoid vendor lock-in. This disqualified Pinecone.
  • Single source of truth for the documents (bookmarks) and the vectors. This further disqualified Pinecone, which is centered around vectors and regards "metadata" as a secondary object associated with the vectors
  • Mature. This disqualified SemaDB, though it's a highly promising solution, and one of the only two that supports nested documents (the other one being MongoDB). Take a look at SemaDB's powerful search capabilities!
  • Notably, performance wasn't a goal, given the small dataset size

Also when comparing a large number of offerings, it's easy to dismiss products on more "superficial" grounds. For instance, Milvus presents with shoddy English in its documentation, and relatively scary complexity, and it's not clear what it would bring over Weaviate, so Weaviate wins.

That leaves us with Weaviate and MongoDB Atlas. It's unclear if Atlas vector search can be run on-prem, or if MongoDB's cloud offering must be used. I've asked their documentation AI this very question, but it replied that it doesn't know. It didn't even point to Creating local Atlas deployments. That page says "You should use local deployments for testing and development only."

While Atlas does have a free tier, Weaviate can be run on-prem, with a single binary even. Looks like we have a pretty clear winner.

Of course, Weaviate isn't without its problems. The TypeScript and Python clients aren't fully crystallized (both moved very recently moved to new major versions that deprecate the previous ones), documentation on running Weaviate on-prem without Docker is mysteriously lacking, and issues that have relatively simple fixes take a long time to get resolved.

Top comments (0)