chromem-go 是基础设施领域的开源项目,由 philippgille 开发,2023 年首次发布。
在全站 13,014 个收录项目中,它的 GitHub 星标数(1,059)位列前 30%,在基础设施分类中处于中上游。
项目保持着较活跃的维护节奏,最近一次代码更新于 2026-09-22。完全免费,可自行部署使用,无付费版本。
它主要面向的使用场景是:构建Go编写的AI聊天机器人,需要本地知识库检索。同类可对比的替代方案包括 weaviate、qdrant、milvus。

Go 项目内嵌向量数据库,零依赖实现本地语义搜索
chromem-go 是一个为 Go 语言设计的嵌入式向量数据库,提供与 Chroma 类似的接口,且零第三方依赖。它主要解决 Go 开发者在构建 AI 应用时需要轻量级、可嵌入的向量存储与检索的问题。核心能力包括:在内存中存储向量,支持可选的持久化;提供简单的 API 进行向量的添加、查询和删除;支持余弦相似度等向量检索算法;可与 OpenAI、Cohere 等 embedding 模型集成。该库适合需要快速集成向量搜索功能的中小型项目,无需部署外部数据库服务。
1初始化 Go 模块
为项目创建 go.mod,作为后续拉取依赖的基础;已有模块可跳过此步。
go mod init your-module-name2安装 chromem-go
README 给出的唯一安装命令,直接拉取最新版本作为项目依赖。
go get github.com/philippgille/chromem-go@latest3配置嵌入密钥
示例中 CreateCollection 传 nil 表示使用 OpenAI 嵌入,必须设置该环境变量。
export OPENAI_API_KEY=sk-xxxxxxxx4编写最小示例
把 README 的 minimal 示例保存为 main.go,创建集合、写入文档并查询。
package main
import (
"context"
"fmt"
"runtime"
"github.com/philippgille/chromem-go"
)
func main() {
ctx := context.Background()
db := chromem.NewDB()
// Passing nil as embedding function leads to OpenAI being used and requires
// "OPENAI_API_KEY" env var to be set. Other providers are supported as well.
// For example pass `chromem.NewEmbeddingFuncOllama(...)` to use Ollama.
c, err := db.CreateCollection("knowledge-base", nil, nil)
if err != nil {
panic(err)
}
err = c.AddDocuments(ctx, []chromem.Document{
{
ID: "1",
Content: "The sky is blue because of Rayleigh scattering.",
},
{
ID: "2",
Content: "Leaves are green because chlorophyll absorbs red and blue light.",
},
}, runtime.NumCPU())
if err != nil {
panic(err)
}
res, err := c.Query(ctx, "Why is the sky blue?", 1, nil, nil)
if err != nil {
panic(err)
}
fmt.Printf("ID: %v
Similarity: %v
Content: %v
", res[0].ID, res[0].Similarity, res[0].Content)
}5运行示例程序
运行后会调用嵌入模型并做相似度检索,首次运行需联网访问嵌入接口。
go run main.go| 配置项 | 必填 | 说明 | 示例 |
|---|---|---|---|
OPENAI_API_KEY | 是 | CreateCollection 传 nil 时使用 OpenAI 嵌入,需该变量鉴权 | sk-xxxxxxxx |
程序输出 ID: 1、Similarity 约为 0.6833369、Content 为 The sky is blue because of Rayleigh scattering. 即成功。
Q:必须用 OpenAI 做嵌入吗?
A:不是。CreateCollection 传 nil 才走 OpenAI;也可以传入 chromem.NewEmbeddingFuncOllama(...) 使用本地 Ollama 嵌入模型,示例代码目录中两种方式都有。
Q:需要像 Chroma 一样单独启动数据库服务吗?
A:不需要。chromem-go 是可嵌入的向量数据库,直接在 Go 进程内使用内存存储,类似用 SQLite 而不是 PostgreSQL。
Q:数据会持久化吗?
A:默认在内存中,项目说明中标注为 in-memory with optional persistence,持久化是可选项,需自行按接口启用。
Q:可以用于生产环境吗?
A:项目处于 beta 且仍在大量开发中,v1.0.0 之前可能引入破坏性变更,变更记录见仓库 CHANGELOG。
weaviate、qdrant、milvus
chromem-go 是基础设施领域的开源项目,由 philippgille 开发,2023 年首次发布。
在全站 13,014 个收录项目中,它的 GitHub 星标数(1,059)位列前 30%,在基础设施分类中处于中上游。
项目保持着较活跃的维护节奏,最近一次代码更新于 2026-09-22。完全免费,可自行部署使用,无付费版本。
它主要面向的使用场景是:构建Go编写的AI聊天机器人,需要本地知识库检索。同类可对比的替代方案包括 weaviate、qdrant、milvus。
下一篇:MyScaleDB
freebuff-proxy
开源
聚合多账号,一键接入 OpenAI 兼容 API,轻松管理会话。
Multi-account OpenAI-compatible gateway for coding models. Pooled keys, session life···
microduck
开源
用 Rust 造一只会走路的桌面小鸭,快速上手双足机器人。
A Tiny biped duck robot
soperator
开源
用 Kubernetes 原生方式运行 Slurm,简化 HPC 集群管理。
Run Slurm in Kubernetes
ollama
开源
一条命令本地跑起大模型,免费、私密、不卡顿
Get up and running with Kimi, GLM, MiniMax, DeepSeek, gpt-oss, Qwen, Gemma and other···