An embeddable vector database for Go with a Chroma-like interface, enabling RAG and semantic search without external dependencies.
chromem-go is an embeddable vector database library for Go that provides a Chroma-like interface for storing and querying document embeddings. It enables developers to add retrieval augmented generation (RAG), semantic search, and other embeddings-based features directly into their Go applications without requiring a separate database server. The library focuses on simplicity, performance, and zero third-party dependencies, making it ideal for integrating AI-powered search and recommendation capabilities.
Go developers building applications that require local vector database functionality, such as those implementing RAG systems, semantic search, recommendation engines, or classification tasks without relying on external services.
Developers choose chromem-go for its embeddability, eliminating the complexity of managing a separate vector database server, and its zero-dependency design that ensures lightweight integration. Its Chroma-like API offers familiarity, while performance optimizations and support for multiple embedding providers make it a versatile choice for production use cases.
Embeddable vector database for Go with Chroma-like interface and zero third-party dependencies. In-memory with optional persistence.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Runs entirely within your Go application, eliminating the need for a separate database server, similar to SQLite for vector data, which simplifies deployment and maintenance.
No external libraries are required, ensuring lightweight integration without version conflicts, as highlighted in the README's focus on simplicity.
Leverages Go's concurrency for fast document addition and querying, with benchmarks showing queries on 100,000 documents in ~40 ms on mid-range hardware.
Supports multiple hosted and local embedding services like OpenAI, Azure OpenAI, and Ollama, with a custom interface for easy integration of other models.
Offers in-memory operation with optional disk persistence using gob encoding and gzip compression, allowing for data durability without external storage.
The project is in beta and may introduce breaking changes before v1.0.0, as warned in the README, making it risky for production use without careful versioning.
Relies on exhaustive nearest neighbor search without approximate indices, which can be slow for very large datasets compared to databases with HNSW or IVFFlat support.
Only supports simple document and metadata filters like contains and exact matches, lacking advanced operators such as AND/OR, which are still on the roadmap.
chromem-go is an open-source alternative to the following products:
Pinecone is a vector database service designed for machine learning applications, enabling efficient storage and retrieval of high-dimensional vector embeddings.
Chroma is an open-source AI-native embedding database and vector store designed for building applications with large language models, enabling semantic search and retrieval-augmented generation.
Qdrant is a vector similarity search engine and vector database designed for machine learning applications, enabling efficient storage and retrieval of high-dimensional vectors.
Weaviate is an open-source vector database that enables semantic search through machine learning models, storing data objects and vectors for similarity-based retrieval.