基础概念与安装 #

核心概念 #

在开始使用 Chroma 之前,让我们先了解几个核心概念。

向量嵌入(Vector Embedding) #

text
┌─────────────────────────────────────────────────────────────┐
│                    向量嵌入                                  │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  定义:                                                      │
│  将文本、图像等数据转换为高维向量表示                        │
│                                                             │
│  示例:                                                      │
│  "苹果" → [0.1, 0.5, -0.3, 0.8, ...]                       │
│  "iPhone" → [0.12, 0.48, -0.28, 0.82, ...]                 │
│                                                             │
│  特点:                                                      │
│  - 语义相似的文本,向量也相似                                │
│  - 可以计算向量之间的相似度                                  │
│  - 是 AI 理解文本的基础                                      │
│                                                             │
│  常见模型:                                                  │
│  - OpenAI text-embedding-ada-002                            │
│  - Sentence Transformers                                    │
│  - Cohere Embeddings                                        │
│                                                             │
└─────────────────────────────────────────────────────────────┘

集合(Collection) #

text
┌─────────────────────────────────────────────────────────────┐
│                    集合                                      │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  定义:                                                      │
│  Chroma 中存储数据的基本单位,类似于数据库中的"表"           │
│                                                             │
│  特点:                                                      │
│  - 每个集合有自己的嵌入函数                                  │
│  - 可以存储文档、向量、元数据                                │
│  - 支持增删改查操作                                          │
│                                                             │
│  示例:                                                      │
│  ┌─────────────────────────────────────────┐               │
│  │  Collection: documents                   │               │
│  ├─────────────────────────────────────────┤               │
│  │  id: "doc1"                              │               │
│  │  document: "Python 是编程语言"           │               │
│  │  embedding: [0.1, 0.2, ...]              │               │
│  │  metadata: {"source": "web"}             │               │
│  └─────────────────────────────────────────┘               │
│                                                             │
└─────────────────────────────────────────────────────────────┘

文档(Document) #

text
┌─────────────────────────────────────────────────────────────┐
│                    文档                                      │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  定义:                                                      │
│  存储在集合中的基本数据单元                                  │
│                                                             │
│  组成部分:                                                  │
│  - id: 唯一标识符                                           │
│  - document: 文本内容(可选)                                │
│  - embedding: 向量嵌入(可选,可自动生成)                   │
│  - metadata: 元数据(可选)                                  │
│                                                             │
│  示例:                                                      │
│  {                                                          │
│    "id": "doc1",                                            │
│    "document": "Python 是一种流行的编程语言",               │
│    "embedding": [0.1, 0.2, -0.3, ...],                      │
│    "metadata": {                                            │
│      "source": "wikipedia",                                 │
│      "category": "programming",                             │
│      "date": "2024-01-01"                                   │
│    }                                                        │
│  }                                                          │
│                                                             │
└─────────────────────────────────────────────────────────────┘

元数据(Metadata) #

text
┌─────────────────────────────────────────────────────────────┐
│                    元数据                                    │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  定义:                                                      │
│  附加在文档上的结构化信息,用于过滤和分类                    │
│                                                             │
│  支持的类型:                                                │
│  - 字符串 (string)                                          │
│  - 整数 (int)                                               │
│  - 浮点数 (float)                                           │
│  - 布尔值 (bool)                                            │
│                                                             │
│  用途:                                                      │
│  - 过滤查询结果                                              │
│  - 分类和组织文档                                            │
│  - 存储额外信息                                              │
│                                                             │
│  示例:                                                      │
│  {                                                          │
│    "source": "web",           # 字符串                      │
│    "page": 42,                # 整数                        │
│    "score": 0.95,             # 浮点数                      │
│    "published": true          # 布尔值                      │
│  }                                                          │
│                                                             │
└─────────────────────────────────────────────────────────────┘

相似性搜索 #

text
┌─────────────────────────────────────────────────────────────┐
│                    相似性搜索                                │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  定义:                                                      │
│  根据向量相似度找到最相关的文档                              │
│                                                             │
│  常用距离度量:                                              │
│  - 余弦相似度 (Cosine Similarity) - 默认                    │
│  - 欧几里得距离 (L2)                                         │
│  - 内积 (Inner Product)                                      │
│                                                             │
│  工作原理:                                                  │
│  1. 将查询文本转换为向量                                     │
│  2. 计算与所有文档向量的相似度                               │
│  3. 返回相似度最高的 N 个结果                                │
│                                                             │
│  示例:                                                      │
│  查询: "编程语言"                                            │
│  结果:                                                       │
│  1. "Python 是编程语言" (相似度: 0.95)                      │
│  2. "JavaScript 用于网页" (相似度: 0.87)                    │
│  3. "Java 是面向对象语言" (相似度: 0.82)                    │
│                                                             │
└─────────────────────────────────────────────────────────────┘

系统要求 #

硬件要求 #

text
┌─────────────────────────────────────────────────────────────┐
│                    硬件要求                                  │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  最低配置:                                                  │
│  - CPU: 双核处理器                                          │
│  - 内存: 4 GB RAM                                           │
│  - 存储: 1 GB 可用空间                                       │
│                                                             │
│  推荐配置:                                                  │
│  - CPU: 四核或更多                                          │
│  - 内存: 8 GB RAM 或更多                                    │
│  - 存储: SSD,10 GB 可用空间                                │
│                                                             │
│  生产环境:                                                  │
│  - CPU: 八核或更多                                          │
│  - 内存: 16 GB RAM 或更多                                   │
│  - 存储: SSD,100 GB 可用空间                               │
│                                                             │
└─────────────────────────────────────────────────────────────┘

软件要求 #

text
┌─────────────────────────────────────────────────────────────┐
│                    软件要求                                  │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  操作系统:                                                  │
│  - macOS 10.15+                                             │
│  - Windows 10+                                              │
│  - Linux (Ubuntu 18.04+, CentOS 7+)                         │
│                                                             │
│  Python 版本:                                               │
│  - Python 3.8+                                              │
│  - 推荐 Python 3.10 或 3.11                                 │
│                                                             │
│  依赖项:                                                    │
│  - pip (Python 包管理器)                                    │
│  - 虚拟环境工具 (venv, conda)                               │
│                                                             │
└─────────────────────────────────────────────────────────────┘

安装方法 #

方法一:pip 安装(推荐) #

bash
# 基础安装
pip install chromadb

# 安装特定版本
pip install chromadb==0.4.22

# 升级到最新版本
pip install --upgrade chromadb

方法二:使用虚拟环境 #

bash
# 创建虚拟环境
python -m venv chroma-env

# 激活虚拟环境
# macOS/Linux
source chroma-env/bin/activate

# Windows
chroma-env\Scripts\activate

# 安装 Chroma
pip install chromadb

方法三:使用 conda #

bash
# 创建 conda 环境
conda create -n chroma-env python=3.10

# 激活环境
conda activate chroma-env

# 安装 Chroma
pip install chromadb

方法四:从源码安装 #

bash
# 克隆仓库
git clone https://github.com/chroma-core/chroma.git
cd chroma

# 安装依赖
pip install -e .

安装验证 #

验证安装 #

python
import chromadb

print(chromadb.__version__)

运行测试 #

python
import chromadb

client = chromadb.Client()

collection = client.create_collection("test")

collection.add(
    documents=["测试文档"],
    ids=["test1"]
)

results = collection.query(
    query_texts=["测试"],
    n_results=1
)

print(results)

print("Chroma 安装成功!")

可选依赖 #

嵌入函数依赖 #

bash
# Sentence Transformers
pip install chromadb sentence-transformers

# OpenAI Embeddings
pip install chromadb openai

# Cohere Embeddings
pip install chromadb cohere

# Google PaLM Embeddings
pip install chromadb google-generativeai

开发依赖 #

bash
# 安装开发工具
pip install chromadb[dev]

# 包含:
# - pytest (测试)
# - black (代码格式化)
# - mypy (类型检查)
# - pre-commit (Git hooks)

环境配置 #

配置环境变量 #

bash
# .env 文件
CHROMA_HOST=localhost
CHROMA_PORT=8000
OPENAI_API_KEY=your-api-key
COHERE_API_KEY=your-api-key

Python 代码配置 #

python
import os
from dotenv import load_dotenv

load_dotenv()

import chromadb

client = chromadb.HttpClient(
    host=os.getenv("CHROMA_HOST", "localhost"),
    port=int(os.getenv("CHROMA_PORT", 8000))
)

客户端模式 #

内存模式 #

python
import chromadb

client = chromadb.Client()

# 数据存储在内存中,程序结束后丢失

持久化模式 #

python
import chromadb

client = chromadb.PersistentClient(path="./chroma_db")

# 数据持久化到磁盘

服务器模式 #

python
import chromadb

client = chromadb.HttpClient(
    host="localhost",
    port=8000
)

# 连接到 Chroma 服务器

异步客户端 #

python
import chromadb

client = await chromadb.AsyncHttpClient(
    host="localhost",
    port=8000
)

# 异步操作

常见问题 #

问题 1:安装失败 #

bash
# 解决方案:升级 pip
pip install --upgrade pip

# 解决方案:使用国内镜像
pip install chromadb -i https://pypi.tuna.tsinghua.edu.cn/simple

问题 2:依赖冲突 #

bash
# 解决方案:使用虚拟环境
python -m venv fresh-env
source fresh-env/bin/activate
pip install chromadb

问题 3:SQLite 版本问题 #

bash
# Chroma 需要 SQLite 3.35+
# 检查 SQLite 版本
python -c "import sqlite3; print(sqlite3.sqlite_version)"

# 如果版本过低,升级 SQLite 或使用其他存储后端

问题 4:内存不足 #

python
# 解决方案:使用持久化存储
client = chromadb.PersistentClient(path="./chroma_db")

# 或使用服务器模式
client = chromadb.HttpClient(host="localhost", port=8000)

下一步 #

现在你已经完成了 Chroma 的安装和配置,接下来学习 快速开始,编写你的第一个 Chroma 程序!

最后更新:2026-04-04