HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
philippgille
chromem-go
Go2024–2025
philippgille / chromem-go

chromem-go

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

3Distinct people
11Mentions
0Explicit recommenders
1.1KGitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

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

GitHub

Where it is used

No documented product use has been verified yet.

What people are saying

No recommendation phrase was found in the indexed comments.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

No other repository is repeatedly linked in the same discussions.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 5:04:57 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by month11 dated mentions

Observed mentions: 2024-01-12 21:27:13 UTC to 2025-07-20 00:12:24 UTC.

0122024-01-01 00:00:00 UTC to 2024-02-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 commentsJan 20242024-02-01 00:00:00 UTC to 2024-03-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2024-03-01 00:00:00 UTC to 2024-04-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2024-04-01 00:00:00 UTC to 2024-05-01 00:00:00 UTC (exclusive): 1 mentions; 1 submissions, 0 comments2024-05-01 00:00:00 UTC to 2024-06-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2024-06-01 00:00:00 UTC to 2024-07-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2024-07-01 00:00:00 UTC to 2024-08-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2024-08-01 00:00:00 UTC to 2024-09-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2024-09-01 00:00:00 UTC to 2024-10-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2024-10-01 00:00:00 UTC to 2024-11-01 00:00:00 UTC (exclusive): 2 mentions; 1 submissions, 1 commentsOct 20242024-11-01 00:00:00 UTC to 2024-12-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2024-12-01 00:00:00 UTC to 2025-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2025-01-01 00:00:00 UTC to 2025-02-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2025-02-01 00:00:00 UTC to 2025-03-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-03-01 00:00:00 UTC to 2025-04-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2025-04-01 00:00:00 UTC to 2025-05-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-05-01 00:00:00 UTC to 2025-06-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-06-01 00:00:00 UTC to 2025-07-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-07-01 00:00:00 UTC to 2025-08-01 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 commentsJul 2025

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
Jan 20242024-01-01 00:00:00 UTC2024-02-01 00:00:00 UTC101
Feb 20242024-02-01 00:00:00 UTC2024-03-01 00:00:00 UTC000
Mar 20242024-03-01 00:00:00 UTC2024-04-01 00:00:00 UTC000
Apr 20242024-04-01 00:00:00 UTC2024-05-01 00:00:00 UTC110
May 20242024-05-01 00:00:00 UTC2024-06-01 00:00:00 UTC101
Jun 20242024-06-01 00:00:00 UTC2024-07-01 00:00:00 UTC000
Jul 20242024-07-01 00:00:00 UTC2024-08-01 00:00:00 UTC000
Aug 20242024-08-01 00:00:00 UTC2024-09-01 00:00:00 UTC101
Sep 20242024-09-01 00:00:00 UTC2024-10-01 00:00:00 UTC000
Oct 20242024-10-01 00:00:00 UTC2024-11-01 00:00:00 UTC211
Nov 20242024-11-01 00:00:00 UTC2024-12-01 00:00:00 UTC000
Dec 20242024-12-01 00:00:00 UTC2025-01-01 00:00:00 UTC101
Jan 20252025-01-01 00:00:00 UTC2025-02-01 00:00:00 UTC101
Feb 20252025-02-01 00:00:00 UTC2025-03-01 00:00:00 UTC000
Mar 20252025-03-01 00:00:00 UTC2025-04-01 00:00:00 UTC101
Apr 20252025-04-01 00:00:00 UTC2025-05-01 00:00:00 UTC000
May 20252025-05-01 00:00:00 UTC2025-06-01 00:00:00 UTC000
Jun 20252025-06-01 00:00:00 UTC2025-07-01 00:00:00 UTC000
Jul 20252025-07-01 00:00:00 UTC2025-08-01 00:00:00 UTC202

What Hacker News says

11 sources
RAG isn't re-training. You can have vector embeddings of all AP news in a vector DB, then when prompted, find related news via similarity search, and add the most similar (and thus related) ones to the context. Here's some simple example code in Go, for RAG with 5000 arXiv paper abstracts: https://github.com/philippgille/chromem-go/tree/v0.7.0/examp... (full disclosure it's using a simple vector DB I wrote)
In Working with The Associated Press to provide fresh results for the Gemini app
For vector DBs running as server I think there's already a lot of choice (Qdrant, Chroma, Milvus, Weaviate, but also PostgreSQL with pgvector etc.). But as you said it was a fun learning experience for you, so that's great! When I needed a vector DB for Go I was looking for an embedded/in-process library that doesn't require CGO (there are CGO bindings to Faiss, Annoy, sqlite-vss etc) and didn't find a suitable one, so I built https://github.com/philippgille/chromem-go/ One feedback for your library: I noticed you have a top level directory `internals`. Is that a typo of `internal`? The latter has the special property of only being importable from the same module.
In I built a vector embedding database in Go for learning purposes

Show HN: Chromem-go – Embeddable vector database for Go

Hey HN! When I wanted to build a RAG app in Go end of last year, I was surprised about the lack of options for a simple, embeddable DB. - Pinecone is proprietary / hosted ony, Qdrant and Milvus not embeddable, Chroma only embeddable in Python and Weaviate only embeddable in Python or TS/JS. - SQLite with the sqlite-vss extension and DuckDB can only be used from Go with CGO. Same for the C++ libraries Faiss, Annoy and USearch. - Some of the LangChain-style Go libraries have a rudimentary implementation, but either lacking persistence, aren't performance optimized or just generally bring a ton of dependencies due to their nature of being an orchestration library and trying to support all kinds of LLMs and third party vector stores etc. This lead me to create chromem-go, which initially took inspiration from the simple Chroma interface, but
Read the rest
now deviating more from it: - Embeddable in Go. No need for running a separate server. (A.k.a. in-process) - Zero dependencies on third party libraries - Multi-threaded processing for adding and querying documents. After some performance optimizations in v0.5.0, a query on 100.000 documents runs in 40 ms on a 1st gen Framework Laptop (see benchmarks) - The DB can optionally create embeddings and offers convenience implementations for common providers (OpenAI, Cohere, Mistral, Jina, mixedbread, but also local Ollama and LocalAI) - Similarity search is exhaustive via cosine similarity. As mentioned above that's quick enough for 100k documents and probably more. HNSW or IVFFlat start to make sense when scaling to millions of documents, where you likely go with a client-server solution anyway. - Optional persistence, either per document, or a DB export/import with optional gzip compression and AES-GCM encryption The repo contains examples for semantic search over arXiv abstracts, as well as a simple RAG app for Wikipedia entries using the models "nomic-embed-text" and "gemma:2b" locally in Ollama [1]. I'm using the project at work for demoing a simple locally running semantic search over our company Jira and hopefully more soon. I think and hope it can be useful for some of you as well. Like the LLocalSearch "Perplexity clone" that was posted two days ago [2], which has a Go backend and probably doesn't need a Chroma instance running (as embeddings are created on the fly for search results and not in advance on a million documents). Shoutout to HN user @eliben whose blog post [3] motivated me to create the project. [1] https://github.com/philippgille/chromem-go/tree/v0.5.0/examp... [2] https://news.ycombinator.com/item?id=39923404 [3] https://eli.thegreenplace.net/2023/retrieval-augmented-gener...
3 points · Open discussion

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.