TipChromaDB 是目前最流行的开源向量数据库之一,专为 AI 和嵌入应用设计,支持内存和持久化两种模式。
ChromaDB 简介
ChromaDB 是一个开源的向量数据库,专注于为 AI 应用提供高效的向量存储和检索能力。
核心特性
| 特性 | 说明 |
|---|---|
| 轻量级 | 可嵌入应用,也可独立部署 |
| 多语言支持 | Python、JavaScript、Java 等 |
| 多种部署模式 | 内存模式、持久化模式、服务端模式 |
| 元数据过滤 | 支持丰富的查询过滤条件 |
Windows 安装
方式一:Docker 部署(推荐)
# 1. 拉取镜像docker pull chromadb/chroma:latest
# 2. 创建数据目录mkdir C:\chroma-data
# 3. 运行容器docker run -d ` --name chroma-server ` -p 8000:8000 ` -v C:\chroma-data:/chroma/chroma ` --restart always ` chromadb/chroma:latest方式二:Python 客户端安装
# 安装 Python 包pip install chromadb
# 验证安装python -c "import chromadb; print(chromadb.__version__)"Linux 安装
Docker 部署
# 1. 创建数据目录mkdir -p ~/chroma-data
# 2. 使用 Docker Composecat > docker-compose.yml << 'EOF'version: '3.9'services: chroma: image: chromadb/chroma:latest ports: - "8000:8000" volumes: - ~/chroma-data:/chroma/chroma environment: - IS_PERSISTENT=TRUE - PERSIST_DIRECTORY=/chroma/chroma - ANONYMIZED_TELEMETRY=FALSE restart: unless-stoppedEOF
# 3. 启动服务docker-compose up -d裸机安装
# Ubuntu/Debianpip install chromadb
# 或使用 condaconda install -c conda-forge chromadb
# 验证chroma run --host localhost --port 8000验证安装
使用 curl 测试 API
# 检查服务状态curl http://localhost:8000/api/v1/heartbeat
# 创建集合curl -X POST http://localhost:8000/api/v1/collections \ -H "Content-Type: application/json" \ -d '{"name": "test-collection", "metadata": {"hnsw:space": "cosine"}}'
# 查看集合列表curl http://localhost:8000/api/v1/collectionsPython 客户端验证
import chromadb
# 连接客户端client = chromadb.HttpClient(host="localhost", port=8000)
# 创建集合collection = client.create_collection(name="demo")
# 添加文档collection.add( documents=["Hello ChromaDB", "This is a test"], ids=["doc1", "doc2"], metadatas=[{"source": "test"}, {"source": "test"}])
# 查询results = collection.query( query_texts=["test document"], n_results=2)print(results)配置优化
持久化配置
import chromadb
# 持久化模式(本地存储)client = chromadb.PersistentClient(path="./chroma_db")
# 内存模式(数据不保存)client = chromadb.Client()服务端配置
# docker-compose.yml 环境变量environment: - IS_PERSISTENT=TRUE - PERSIST_DIRECTORY=/chroma/chroma - ANONYMIZED_TELEMETRY=FALSE - ALLOW_RESET=TRUE - CHROMA_SERVER_HOST=0.0.0.0 - CHROMA_SERVER_HTTP_PORT=8000常见问题
端口被占用
# 查找占用 8000 端口的进程# Windowsnetstat -ano | findstr :8000taskkill /PID <PID> /F
# Linuxlsof -i :8000kill -9 <PID>权限问题(Linux)
# 修改数据目录权限sudo chown -R $USER:$USER ~/chroma-data防火墙配置
# 开放 8000 端口(Linux)sudo firewall-cmd --permanent --add-port=8000/tcpsudo firewall-cmd --reload
# 或者使用 ufwsudo ufw allow 8000/tcp与 Spring AI 集成
Maven 依赖
<dependency> <groupId>org.springframework.ai</groupId> <artifactId>spring-ai-chroma-store-spring-boot-starter</artifactId></dependency>配置
spring: ai: vectorstore: chroma: client: host: http://localhost port: 8000 collection-name: knowledge-base initialize-schema: true总结
ChromaDB 的安装部署相对简单,Docker 方式适合生产环境,Python 客户端适合开发和测试。
Note生产环境建议使用 Docker 部署,并配置数据持久化和定期备份。
参考链接: