Chroma:为 AI 而生的开源向量数据库,RAG 系统的最简选择

Chroma:为 AI 而生的开源向量数据库,RAG 系统的最简选择

AI Agent

📖 简介

Chroma 是专为 AI 应用设计的开源向量数据库,embedding 存储和语义搜索的最简方案。pip install 一条命令即用,支持多种 embedding 模型,原生集成 LangChain/LlamaIndex。18k+ Stars,RAG 和小型 AI 应用的首选向量存储。

📝 详细介绍

AI 应用需要记忆

大模型本身没有"记忆"——每次对话都是独立的,它记不住你昨天说过什么。要让 AI 拥有长期记忆,需要把信息转化为向量(embedding)存储在专门数据库中,在需要时做语义检索。这就是向量数据库的用武之地。

现有的向量数据库(Pinecone、Weaviate、Milvus)功能强大,但配置复杂、运维成本高。对于个人开发者和中小型项目来说太重了。Chroma 的定位就是"最轻量、最易用的向量数据库"。

GitHub 数据

指标数据
Stars18,000+
主语言Python / Rust
开源协议Apache 2.0
最近更新2026 年 7 月
核心定位Embedding 数据库(不是通用向量 DB)

核心体验:极简到离谱

pip install chromadb

# 创建向量数据库
import chromadb
client = chromadb.Client()

# 创建集合
collection = client.create_collection(name="my_docs")

# 添加文档(自动 embedding)
collection.add(
    documents=["今天天气真好", "机器学习的核心是数据", "北京的秋天最美"],
    metadatas=[{"source": "diary"}, {"source": "book"}, {"source": "note"}],
    ids=["doc1", "doc2", "doc3"]
)

# 语义搜索
results = collection.query(
    query_texts=["北京的季节"],
    n_results=2
)
print(results)

是的,就这么简单——不需要配置、不需要部署 Docker、不需要写 schema。Chroma 会自动调用内置的 embedding 模型(all-MiniLM-L6-v2)将文本转为向量。

灵活的使用模式

模式一:内存模式(开发/原型)

# 数据存在内存中,重启即失
client = chromadb.Client()

模式二:持久化模式(个人/小团队)

# 数据存在磁盘,重启不丢失
client = chromadb.PersistentClient(path="./chroma_data")

模式三:客户端-服务端模式(生产环境)

# 启动服务端
chroma run --path /data/chroma --port 8000

# 客户端连接
client = chromadb.HttpClient(host="localhost", port=8000)

与 RAG 生态的集成

Chroma 与主流 AI 框架的集成非常丝滑:

LangChain 集成

from langchain_chroma import Chroma
from langchain_openai import OpenAIEmbeddings

vector_store = Chroma.from_documents(
    documents=documents,
    embedding=OpenAIEmbeddings(),
    persist_directory="./chroma_langchain"
)

retriever = vector_store.as_retriever(search_kwargs={"k": 3})

LlamaIndex 集成

from llama_index.core import VectorStoreIndex
from llama_index.vector_stores.chroma import ChromaVectorStore

vector_store = ChromaVectorStore(chroma_collection=collection)
index = VectorStoreIndex.from_documents(
    documents, vector_store=vector_store
)

高级功能

元数据过滤

支持在向量搜索的同时做结构化过滤:

collection.query(
    query_texts=["报告"],
    where={"category": "finance"},        # 等于
    where_document={"$contains": "季度"}  # 文档内容包含
)

多模态嵌入

不仅支持文本,还支持图像和音频的 embedding 存储和检索。你可以在同一个集合中混合存储不同类型的数据。

批量和更新

# 批量更新文档
collection.update(
    ids=["doc1"],
    documents=["修改后的内容"],
    metadatas=[{"source": "diary", "updated": True}]
)

# 删除
collection.delete(ids=["doc2"])

技术架构

Chroma 的核心是一个 Rust 编写的向量索引引擎(基于 HNSW 算法)加上 Python 封装层。Rust 保证了性能和内存安全,Python 提供了易用性。默认使用的 embedding 模型是 ONNX Runtime 运行,无需 GPU 也能快速推理。

Chroma 与通用向量数据库(如 Milvus、Weaviate)最大的区别在于:它不是一个分布式数据库,而是一个内嵌式的 embedding 存储。不是什么场景都需要分布式——对于个人知识库、原型验证、中小型 RAG 应用来说,Chroma 的简洁正是它的最大优势。

同类对比

方案部署难度API 简洁度分布式生态集成
Chroma★★★★★★★★★★★★★★★
Milvus★★★★★★★★★★★★★★
Weaviate★★★★★★★★★★★★★★★
Qdrant★★★★★★★★★★★★★★★
Pinecone(托管)★★★★★★★★★★★★★★★★★★

总结

Chroma 不做"大而全"——它专注于把 "embedding 存和查" 这件事做到极致简单。对于个人知识库、RAG 原型、教程 Demo 等场景,Chroma 是毫无疑问的最佳选择。推荐给:RAG 应用开发者、AI 产品原型设计者、个人知识库搭建者、学习向量检索的学生。

🚀

AI 项目推荐

AI Agent
标签
#向量数据库 #RAG #Embedding #语义搜索 #Chroma
浏览
👁️ 7
发布日期
2026-07-24