---
title: "chromem-go"
type: "tool"
slug: "philippgille-chromem-go"
canonical_url: "https://www.graphcanon.com/tools/philippgille-chromem-go"
github_url: "https://github.com/philippgille/chromem-go"
homepage_url: null
stars: 1025
forks: 70
primary_language: "Go"
license: "MPL-2.0"
categories: ["vector-databases", "data-retrieval"]
tags: ["chroma", "go", "vector-database", "embeddable", "llm", "rag", "retrieval-augmented-generation", "golang"]
updated_at: "2026-07-07T18:48:08.884045+00:00"
---

# chromem-go

> Embeddable vector database for Go with Chroma-like interface and zero third-party dependencies.

chromem-go is a lightweight, embeddable vector database written in Go that provides an interface reminiscent of Chromadb. It supports in-memory operations and optional persistence to disk, ideal for adding retrieval-augmented generation features directly into Go applications without requiring external databases. Targeted towards simplicity and performance in common use cases.

## Facts

- Repository: https://github.com/philippgille/chromem-go
- Stars: 1,025 · Forks: 70 · Open issues: 17 · Watchers: 12
- Primary language: Go
- License: MPL-2.0
- Last pushed: 2026-05-17T18:00:12+00:00

## Categories

- [Vector Databases](/categories/vector-databases.md)
- [Data & Retrieval](/categories/data-retrieval.md)

## Tags

chroma, go, vector-database, embeddable, llm, rag, retrieval-augmented-generation, golang

## Related tools

- [transformers](/tools/huggingface-transformers.md) - 🤗 Transformers: the model-definition framework for state-of-the-art machine learning models (★ 162,347)
- [langflow](/tools/langflow-ai-langflow.md) - Langflow is a powerful platform for building and deploying AI-powered agents and workflows. (★ 151,298)
- [firecrawl](/tools/firecrawl-firecrawl.md) - The API to search, scrape, and interact with the web at scale. (★ 147,117)
- [PaddleOCR](/tools/paddlepaddle-paddleocr.md) - PaddleOCR: A powerful OCR toolkit for transforming PDFs/images into structured data (★ 84,919)
- [graphify](/tools/graphify-labs-graphify.md) - AI coding assistant skill that transforms various file types into a queryable knowledge graph (★ 79,371)
- [worldmonitor](/tools/koala73-worldmonitor.md) - Real-time global intelligence dashboard. (★ 61,516)
- [llm-app](/tools/pathwaycom-llm-app.md) - Ready-to-run cloud templates for RAG, AI pipelines, and enterprise search with live data. (★ 59,097)
- [meilisearch](/tools/meilisearch-meilisearch.md) - Meilisearch is a lightning-fast search engine API that brings AI-powered hybrid search to your sites and applications. (★ 58,448)

## README (excerpt)

```text
# chromem-go






Embeddable vector database for Go with Chroma-like interface and zero third-party dependencies. In-memory with optional persistence.

Because `chromem-go` is embeddable it enables you to add retrieval augmented generation (RAG) and similar embeddings-based features into your Go app *without having to run a separate database*. Like when using SQLite instead of PostgreSQL/MySQL/etc.

It's *not* a library to connect to Chroma and also not a reimplementation of it in Go. It's a database on its own.

The focus is not scale (millions of documents) or number of features, but simplicity and performance for the most common use cases. On a mid-range 2020 Intel laptop CPU you can query 1,000 documents in 0.3 ms and 100,000 documents in 40 ms, with very few and small memory allocations. See [Benchmarks](#benchmarks) for details.

> ⚠️ The project is in beta, under heavy construction, and may introduce breaking changes in releases before `v1.0.0`. All changes are documented in the [`CHANGELOG`](./CHANGELOG.md).

## Contents

1. [Use cases](#use-cases)
2. [Interface](#interface)
3. [Features + Roadmap](#features)
4. [Installation](#installation)
5. [Usage](#usage)
6. [Benchmarks](#benchmarks)
7. [Development](#development)
8. [Motivation](#motivation)
9. [Related projects](#related-projects)

## Use cases

With a vector database you can do various things:

- Retrieval augmented generation (RAG), question answering (Q&A)
- Text and code search
- Recommendation systems
- Classification
- Clustering

Let's look at the RAG use case in more detail:

### RAG

The knowledge of large language models (LLMs) - even the ones with 30 billion, 70 billion parameters and more - is limited. They don't know anything about what happened after their training ended, they don't know anything about data they were not trained with (like your company's intranet, Jira / bug tracker, wiki or other kinds of knowledge bases), and even the data they *do* know they often can't reproduce it *exactly*, but start to *hallucinate* instead.

Fine-tuning an LLM can help a bit, but it's more meant to improve the LLMs reasoning about specific topics, or reproduce the style of written text or code. Fine-tuning does *not* add knowledge *1:1* into the model. Details are lost or mixed up. And knowledge cutoff (about anything that happened after the fine-tuning) isn't solved either.

=> A vector database can act as the up-to-date, precise knowledge for LLMs:

1. You store relevant documents that you want the LLM to know in the database.
2. The database stores the *embeddings* alongside the documents, which you can either provide or can be created by specific "embedding models" like OpenAI's `text-embedding-3-small`.
   - `chromem-go` can do this for you and supports multiple embedding providers and models out-of-the-box.
3. Later, when you want to talk to the LLM, you first send the question to the vector DB to find *similar*/*related* content. This is called "nearest neighbor search".
4. In the question to the LLM, you provide this content alongside your question.
5. The LLM can take this up-to-date precise content into account when answering.

Check out the [example code](examples) to see it in action!

## Interface

Our original inspiration was the [Chroma](https://www.trychroma.com/) interface, whose core API is the following (taken from their [README](https://github.com/chroma-core/chroma/blob/0.4.21/README.md)):

<details><summary>Chroma core interface</summary>

```python
import chromadb
# setup Chroma in-memory, for easy prototyping. Can add persistence easily!
client = chromadb.Client()

# Create collection. get_collection, get_or_create_collection, delete_collection also available!
collection = client.create_collection("all-my-documents")

# Add docs to the collection. Can also update and delete. Row-based API coming soon!
collection.add(
    documents=["This is document1", "This is document2"], # we handle tokenization, embedding, and indexing automatic
```

---

**Machine-readable endpoints**

- JSON: [`/api/graphcanon/tools/philippgille-chromem-go`](/api/graphcanon/tools/philippgille-chromem-go)
- LLM index: [/llms.txt](/llms.txt)
- Full corpus: [/llms-full.txt](/llms-full.txt)

_GraphCanon - The knowledge graph for AI development. https://www.graphcanon.com/_
