If you're building local RAG on Windows, start here: the three vector databases that run on native Windows with a single command are Qdrant, Chroma, and LanceDB. Qdrant gives you a standalone server (there's an official prebuilt Windows binary), Chroma is the fastest pip install to first vector, and LanceDB is an embedded store that lives inside your app with no server at all. All three are Apache-2.0 and need no C++ compiler. The catch worth knowing before you pick: the most popular option by a wide margin — Milvus — does not ship a native Windows server at all.
Here's the whole decision in one screen:
- Want a real server, no Docker? → Qdrant. Download the official
qdrant-...windows-msvc.zip, unzip, run the executable. - Want the fastest start in a notebook? → Chroma.
pip install chromadb. Prebuilt wheel, no compiler. - Want zero server, embedded in your app? → LanceDB.
pip install lancedb. Also a prebuilt wheel. - Already run Postgres? → pgvector, but budget for an MSVC compile (or run Postgres in Docker).
- Reaching for Milvus or Weaviate because they're famous? → Both are Docker/WSL on Windows. Only the pip-embedded Milvus Lite runs natively, and officially only on Python 3.10.
The non-obvious part: popularity points the wrong way here#
Rank these by GitHub stars and the order is Milvus (~46k) > Qdrant (~35k) > Chroma (~29.5k) > Weaviate (~17k) > LanceDB (~11.6k). If you pick by popularity — the default move — you land on Milvus, and on native Windows that's the one choice that doesn't give you what you came for. The full Milvus server is built for Linux/macOS and deployed via Docker or Kubernetes; there is no native Windows server build. You can run Milvus Lite, the embedded pip package — pip install -U pymilvus[milvus-lite] — but its official CI only covers Windows on Python 3.10, and it leans on compatible wheels for dependencies like pyarrow and faiss-cpu. It's supported, but it's the narrow door, not the front door.
Weaviate (~17k) is the same story: the documented Windows path is Docker Desktop or WSL. Its embedded mode exists but is flagged experimental and evaluation-only. So the two "obvious," heaviest, best-known tools are precisely the ones that make you leave native Windows. For a solo builder on a Windows laptop who wants to run and move on, the lighter, less-starred options win — which is the same lesson as the broader Chroma vs Weaviate vs Milvus trade-off, just sharpened by the OS.
Qdrant: the standalone server that doesn't need Docker#
Qdrant is the one to reach for when you want a real server process — something other tools and other machines on your network can query — without standing up Docker. The trap is that Qdrant's README only shows the Docker quickstart, so most people assume Docker is required. It isn't: every Qdrant release ships an official prebuilt Windows binary, qdrant-x86_64-pc-windows-msvc.zip, right next to the Linux and macOS builds. Download it, unzip, run the executable, and you have a Qdrant server on localhost:6333 — one file, no container, no WSL.
The Python client is a separate, easy win: pip install qdrant-client is pure Python with no OS constraints, so it works on Windows regardless of where the server runs. Qdrant has also added Qdrant Edge, an in-process embedded mode you can initialize from Python or Rust if you don't want a separate server at all. It's Apache-2.0 and written in Rust, which is exactly why the single-binary story works.
Chroma and LanceDB: pip install and you're done#
If you don't need a shared server, these two are the shortest path on Windows, and both are the kind of embedded store a local RAG stack actually wants.
Chroma carries the one piece of Windows history worth clearing up. In the 0.4.x days (2023–2024), pip install chromadb often died with "Microsoft Visual C++ 14.0 or greater is required" because pip had to compile chroma-hnswlib, a C++ dependency, from source. That's fixed. Chroma's 1.x line rewrote the core in Rust and demoted chroma-hnswlib to an optional dev extra, so today a plain pip install chromadb pulls a prebuilt win_amd64 wheel — no Visual C++, no build step. If you still hit that error, you're on an old pin.
LanceDB is the most frictionless of all: pip install lancedb ships a prebuilt Windows wheel, it's embedded and in-process (no server to run or supervise), and you're writing vectors in a couple of lines. A few optional extras — historically the full-text-search add-on — have been awkward on Windows, but the core store isn't. For an app that ships with its index rather than connecting to one, this is the default.
The two honorable mentions, with asterisks#
pgvector is the right answer if you already run Postgres on Windows and want vectors sitting next to your relational data. But there's no pip install: the official Windows path is to open the x64 Native Tools Command Prompt for VS and build the extension with nmake /F Makefile.win, then CREATE EXTENSION vector;. If compiling against Postgres headers isn't your idea of a good afternoon, run Postgres in Docker (or use conda-forge) instead. Depth on the Postgres-native options lives in the pgvector vs pgvectorscale vs pgai breakdown.
FAISS (pip install faiss-cpu) installs cleanly on native Windows via prebuilt wheels and is excellent at raw similarity search — but it's a library, not a database: no server, no built-in persistence or metadata layer, and faiss-gpu is Linux-only, so there's no GPU acceleration on Windows. Use it as the index inside something, not as the store itself.
So what do you actually install?#
Match the tool to the shape, not the star count:
- Standalone server, no Docker → Qdrant's Windows binary.
- Fastest prototype →
pip install chromadb. - Embedded in your app, zero server →
pip install lancedb. - Vectors beside your Postgres data → pgvector (bring a compiler or Docker).
- Just an index, wired into your own code →
pip install faiss-cpu.
The through-line: on native Windows, the right vector database is the light one that installs, not the famous one that makes you boot Docker first. Popularity was measuring a different race.
Star counts, versions, and install paths are current as of October 9, 2026 and drift over time — confirm against each project's own docs before you commit a build to one.



