chromem-go

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

开源 🏷️完全免费 🔧 仅开源项目,无在线服务,需自行部署 搜索知识 🍴 复刻 79 🐛 待处理 22 👀 关注 12
GitHub ↗
GitHub 星标 ★ 1076
维护状态 维护中
是否开源 开源
定价模式 🏷️完全免费 开源项目,完全免费,可自行部署使用,无付费版本。

项目预览

chromem-go 项目界面预览图
图片来源:GitHub 官方仓库名片

项目数据

分类搜索知识
开发团队philippgille
定价模式🏷️完全免费
价格说明开源项目,完全免费,可自行部署使用,无付费版本。
访问状态🔧 仅开源项目,无在线服务,需自行部署
是否开源是
开源协议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 星标★ 1076
上线时间2023-12-24 00:00:00
代码更新2026-09-06
仓库体积372 KB
本站数据更新2026-11-09
维护状态维护中
收录时间2026-08-09
浏览次数3

项目介绍

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

Star 增长趋势

本站每日记录该项目 GitHub 星标变化,观测越久曲线越完整

数据来源:GitHub API 逐日快照 · 收录于 2026-08-09 · 当前星标 ★ 1076

使用教程

难度:入门 约 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\nSimilarity: %v\nContent: %v\n", res[0].ID, res[0].Similarity, res[0].Content)
    }
  5. 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。

注意事项

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

核心亮点

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

不足之处

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

适用场景

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

替代项目

weaviate、qdrant、milvus

上一篇:neo4j-graphrag-python

下一篇:MyScaleDB

同类项目推荐

doubao2api 开源

把豆包变成 OpenAI 接口,免费多模态调用

Reverse-engineered Doubao (豆包) API → OpenAI-compatible REST service. Free multimo···

★ 315 2026-08-09
clewdr 开源

一个入口统一转发多家大模型 API,高并发低延迟

High Performance LLM Reverse Proxy

★ 1305 2026-09-16
agentplay 开源

把编码代理的会话回放成地图和时间线

Replay your coding agent sessions as a map and a timeline

★ 356 2026-10-24
code-on-incus 开源

给每个 AI 代理一个独立沙箱,自动防威胁

Give the agent a machine. Just not yours. Each AI coding agent gets its own isolated···

★ 779 2026-08-09
pyseekdb 开源

用 Python 轻松连接 OceanBase,高效实现向量检索

A unified python SDK supports OceanBase or OceanBase seekdb, more efficient and easy···

★ 62 2026-08-09
persistent-ai-memory 开源

给AI装上本地长期记忆,让对话不再失忆

A persistent local memory for AI, LLMs, or Copilot in VS Code.

★ 235 2026-08-09
mempalace 开源

给 AI 装上永久记忆,告别每次对话都失忆

The best-benchmarked open-source AI memory system. And it's free.

★ 60482 2026-08-09
moltstream 开源

让 AI 智能体像真人一样开直播,实时推送内容

Agent-native streaming infrastructure. The streaming runtime built for non-human bro···

★ 64 2026-08-09
gpt-load 开源

把多个 AI 账号聚合成一个入口,自动轮换防封省额度

Self-hosted AI gateway for multi-channel, multi-credential setups — API keys and su···

★ 7203 2026-10-17