chromem-go

Go 项目内嵌向量数据库,零依赖实现本地语义搜索

chromem-go 是一个为 Go 语言设计的嵌入式向量数据库,提供与 Chroma 类似的接口,且零第三方依赖。它主要解决 Go 开发者在构建 AI 应用时需要轻量级、可嵌入的向量存储与检索的问题。核心能力包括:在内存中存储向量,支持可选的持久化;提供简单的 API 进行向量的添加、查询和删除;支持余弦相似度等向量检索算法;可与 OpenAI、Cohere 等 embedding 模型集成。该库适合需要快速集成向量搜索功能的中小型项目,无需部署外部数据库服务。

开源 free 搜索知识
访问官网 ↗ GitHub ↗ 文档 ↗
GitHub 星标 ★ 1059
维护状态 较活跃
是否开源
定价模式 free

项目数据

分类搜索知识
开发团队philippgille
所属国家
官网地址
定价模式free
价格说明开源项目,完全免费,可自行部署使用,无付费版本。
访问状态
是否开源
开源协议MPL-2.0
主要语言Go
技术栈/模型chroma,chromadb,cosine-similarity,embedded,embeddings,go,golang,in-memory,llm,llms,nearest-neighbor,rag,retrieval-augmented-generation,vector-database,vector-search
GitHub 星标★ 1059
30天Star增速
HF 下载量
上线时间2023-12-24 00:00:00
最近更新2026-09-22 00:00:00
维护状态较活跃
中文支持
访问方式
移动端支持
综合评分
收录时间2026-08-09
浏览次数2

使用教程

难度:入门 约 10 分钟 部署方式:库/依赖 5 步

环境要求

  • 已安装 Go 工具链,终端可直接执行 go 命令(README 未指定最低版本)
  • 使用 OpenAI 嵌入时需准备 OPENAI_API_KEY 环境变量
  • 若改用 Ollama 本地嵌入模型,需本地已运行 Ollama 服务
  • 无需另行部署 Chroma 或其他外部数据库服务

安装与启动步骤

  1. 1初始化 Go 模块

    为项目创建 go.mod,作为后续拉取依赖的基础;已有模块可跳过此步。

    go mod init your-module-name
  2. 2安装 chromem-go

    README 给出的唯一安装命令,直接拉取最新版本作为项目依赖。

    go get github.com/philippgille/chromem-go@latest
  3. 3配置嵌入密钥

    示例中 CreateCollection 传 nil 表示使用 OpenAI 嵌入,必须设置该环境变量。

    export OPENAI_API_KEY=sk-xxxxxxxx
  4. 4编写最小示例

    把 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. 5运行示例程序

    运行后会调用嵌入模型并做相似度检索,首次运行需联网访问嵌入接口。

    go run main.go

关键配置

配置项必填说明示例
OPENAI_API_KEYCreateCollection 传 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。

注意事项

  • 本库定位是简洁与常见场景的性能,不以百万级文档规模或功能数量为目标。
  • 官方 README 的基准数据:中端 2020 款 Intel 笔记本 CPU 上查询 1000 条约 0.3 ms,100000 条约 40 ms。
  • 它既不是连接 Chroma 的客户端,也不是 Chroma 的 Go 重写,而是一个独立的数据库。
  • README 的 minimal 示例需要联网调用嵌入模型,离线场景请改用 Ollama 等本地嵌入函数。

核心亮点

  • 零第三方依赖,降低部署和依赖管理复杂度
  • API 设计类似 Chroma,上手快,迁移成本低
  • 支持内存模式与持久化,灵活适配不同场景

不足之处

  • 功能相对精简,缺少高级索引和过滤能力
  • 文档和社区生态尚在早期,可参考资源有限

适用场景

  • 构建 Go 编写的 AI 聊天机器人,需要本地知识库检索
  • 在边缘设备或离线环境中运行向量搜索功能
  • 快速原型验证,避免引入重型数据库服务

替代项目

weaviate、qdrant、milvus

项目介绍

chromem-go 是基础设施领域的开源项目,由 philippgille 开发,2023 年首次发布。

在全站 13,014 个收录项目中,它的 GitHub 星标数(1,059)位列前 30%,在基础设施分类中处于中上游。

项目保持着较活跃的维护节奏,最近一次代码更新于 2026-09-22。完全免费,可自行部署使用,无付费版本。

它主要面向的使用场景是:构建Go编写的AI聊天机器人,需要本地知识库检索。同类可对比的替代方案包括 weaviate、qdrant、milvus。

上一篇:neo4j-graphrag-python

下一篇:MyScaleDB

同类项目推荐

freebuff-proxy 开源

聚合多账号,一键接入 OpenAI 兼容 API,轻松管理会话。

Multi-account OpenAI-compatible gateway for coding models. Pooled keys, session life···

★ 213 2026-08-20
microduck 开源

用 Rust 造一只会走路的桌面小鸭,快速上手双足机器人。

A Tiny biped duck robot

★ 8684 2026-09-10
soperator 开源

用 Kubernetes 原生方式运行 Slurm,简化 HPC 集群管理。

Run Slurm in Kubernetes

★ 439 2026-08-10
ollama 开源

一条命令本地跑起大模型,免费、私密、不卡顿

Get up and running with Kimi, GLM, MiniMax, DeepSeek, gpt-oss, Qwen, Gemma and other···

★ 181484 2026-08-09