嵌入向量(vector embedding)是表示任何类型数据的 A.I 原生方式,使它们非常适合与各种 A.I 驱动的工具和算法一起使用。 它们可以表示文本、图像,很快还可以表示音频和视频。 有许多创建嵌入的选项,无论是在本地使用已安装的库,还是通过调用 API。
Chroma 是一个用于构建带有嵌入向量的 AI 应用程序的数据库。 它内置了入门所需的一切,并可在你的机器上运行。
部署模式 | 适用场景 | 核心优势 | 复杂度 |
---|---|---|---|
单机Docker部署 | 开发测试、小型应用 | 快速启动、资源占用少 | ⭐ |
多节点集群部署 | 生产环境、高可用 | 水平扩展、负载均衡 | ⭐⭐⭐ |
Docker单机部署方案
# 创建部署目录
mkdir -p chroma-deployment
cd chroma-deployment# 创建docker-compose.yml文件
cat > docker-compose.yml << 'EOF'
version: '3.9'networks:chroma-net:driver: bridgeservices:chroma-server:image: chromadb/chroma:latestcontainer_name: chroma-servervolumes:- chroma-data:/dataenvironment:- CHROMA_PERSIST_DIRECTORY=/dataports:- "8000:8000"restart: unless-stoppednetworks:- chroma-netvolumes:chroma-data:driver: local
EOF# 启动服务
docker-compose up -d# 验证服务状态
docker-compose logs -f
curl http://localhost:8000/api/v2/heartbeat
高级配置选项
environment:- CHROMA_PERSIST_DIRECTORY=/data- CHROMA_MAX_CONNECTIONS=100- CHROMA_WORKER_THREADS=4- CHROMA_EMBEDDING_BATCH_SIZE=32- CHROMA_INDEX_BATCH_SIZE=1000
生产环境部署架构
高可用配置
# 多节点docker-compose配置示例
services:chroma-node1:image: chromadb/chroma:latestenvironment:- CHROMA_NODE_ID=node1- CHROMA_CLUSTER_MODE=true- CHROMA_PEERS=node2:8000,node3:8000networks:- chroma-clusterchroma-node2:image: chromadb/chroma:latestenvironment:- CHROMA_NODE_ID=node2- CHROMA_CLUSTER_MODE=true- CHROMA_PEERS=node1:8000,node3:8000networks:- chroma-clusterchroma-node3:image: chromadb/chroma:latestenvironment:- CHROMA_NODE_ID=node3- CHROMA_CLUSTER_MODE=true- CHROMA_PEERS=node1:8000,node2:8000networks:- chroma-cluster
监控检查配置
# 健康检查脚本
#!/bin/bash
HEARTBEAT_URL="http://localhost:8000/api/v2/heartbeat"
STATUS=$(curl -s -o /dev/null -w "%{http_code}" $HEARTBEAT_URL)if [ $STATUS -eq 200 ]; thenecho "Chroma服务正常"exit 0
elseecho "Chroma服务异常,状态码: $STATUS"exit 1
fi