// the find
philippgille/chromem-go
Embeddable vector database for Go with Chroma-like interface and zero third-party dependencies. In-memory with optional persistence.
chromem-go is an embedded vector database for Go — no separate process, no CGO, zero third-party dependencies. It fills a real gap: before this, every Go vector search option either required CGO bindings to C++ libraries or running an external server. Good fit for CLI tools, single-binary apps, or local LLM workflows where you want RAG without infrastructure.
1. Zero CGO and zero third-party deps is a genuine achievement — pure Go means cross-compilation works, static binaries work, no cgo toolchain headaches. 2. Multithreaded document ingestion via AddConcurrently() actually uses Go's concurrency model correctly rather than bolting on goroutines as an afterthought. 3. Persistence model (per-document gob files + optional gzip/AES-GCM export) is simple enough to reason about and backup-friendly. 4. Embedding provider coverage is solid — OpenAI, Ollama, Cohere, Mistral, Jina, Vertex AI, plus a plain EmbeddingFunc interface so you can plug anything in.
1. Exhaustive nearest-neighbor search only — no ANN index (HNSW is on the roadmap but not shipped). At 100k documents you're at 40ms per query, which is fine for small apps but means this doesn't scale past maybe 500k docs before it becomes awkward. 2. Metadata filtering is limited: exact match only, no range queries, no $and/$or operators. Real-world RAG pipelines almost always need more than this. 3. Still in beta with explicit breaking-change warnings before v1.0 — the gob persistence format could change and leave you with unreadable files. 4. No update or delete for individual documents in a collection (per the README, this will be added 'in the future') — any document correction requires dropping and rebuilding the collection.