pgVector is great and so is FAISS, but those are just a subset of what you get from Milvus. If all you need to do is RAG over 50Mb of documents then pick the right tool for the job. I use Chroma for a lot of projects.<p>Then, what if you want hybrid search, or different IVF variants, or disk-based search, or horizontal scaling, or something that leverages SIMD, or sparse vectors? Milvus is great.
You can do hybrid search in Postgres.<p>Shameless plug: <a href="https://github.com/jankovicsandras/plpgsql_bm25" rel="nofollow">https://github.com/jankovicsandras/plpgsql_bm25</a> BM25 search implemented in PL/pgSQL ( Unlicense / Public domain )<p>The repo includes plpgsql_bm25rrf.sql : PL/pgSQL function for hybrid search ( plpgsql_bm25 + pgvector ) with Reciprocal Rank Fusion; and Jupyter notebook examples.
You start by underselling what can be done with Postgres and then follow up with the upper end of requirements that most projects won't need. My argument is exactly what you conveniently left out: The big bulk between the two.
How does Milvus compare to OpenSearch/ElasticSearch for hybrid search?