Chroma私有化:本地部署完整方案
嵌入向量(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: bridge
services:
chroma-server:
image: chromadb/chroma:latest
container_name: chroma-server
volumes:
- chroma-data:/data
environment:
- CHROMA_PERSIST_DIRECTORY=/data
ports:
- "8000:8000"
restart: unless-stopped
networks:
- chroma-net
volumes:
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:latest
environment:
- CHROMA_NODE_ID=node1
- CHROMA_CLUSTER_MODE=true
- CHROMA_PEERS=node2:8000,node3:8000
networks:
- chroma-cluster
chroma-node2:
image: chromadb/chroma:latest
environment:
- CHROMA_NODE_ID=node2
- CHROMA_CLUSTER_MODE=true
- CHROMA_PEERS=node1:8000,node3:8000
networks:
- chroma-cluster
chroma-node3:
image: chromadb/chroma:latest
environment:
- CHROMA_NODE_ID=node3
- CHROMA_CLUSTER_MODE=true
- CHROMA_PEERS=node1:8000,node2:8000
networks:
- 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 ]; then
echo "Chroma服务正常"
exit 0
else
echo "Chroma服务异常,状态码: $STATUS"
exit 1
fi
作者:一毛
本博客所有文章仅用于学习、研究和交流目的,欢迎非商业性质转载。
不管遇到了什么烦心事,都不要自己为难自己;无论今天发生多么糟糕的事,都不应该感到悲伤。记住一句话:越努力,越幸运。