ChromaDB知识速览

ChromaDB知识速览

文章目录


核心定位

是什么

  • 开源向量数据库
  • AI原生设计
  • 嵌入式/客户端/服务器模式
  • 大模型应用首选向量存储

核心特点

  • 简单易用(pip install即用)
  • 多语言支持(Python/JS/Java等)
  • 多种部署模式
  • 与LangChain/LlamaIndex深度集成

核心概念

Collection(集合)

  • 相当于关系型数据库的"表"
  • 存储向量+元数据+文档
  • 需指定名称和嵌入函数

Embedding(嵌入)

  • 文本→向量的转换
  • 支持内置模型或自定义
  • 默认使用all-MiniLM-L6-v2

Document(文档)

  • 原始文本内容
  • 可选:id/metadata/embedding

Metadata(元数据)

  • 键值对形式的附加信息
  • 用于过滤和筛选
  • 支持:字符串/整数/浮点数/布尔值

部署模式

内存模式(Ephemeral)

  • 数据仅存内存
  • 重启丢失
  • 适合测试/演示

本地持久化(Persistent)

  • 数据保存本地磁盘
  • SQLite存储元数据
  • 生产环境推荐

客户端-服务器模式

  • Chroma服务端独立部署
  • 多客户端远程连接
  • 支持Docker/K8s

云端托管(Chroma Cloud)

  • 全托管SaaS服务
  • 自动扩缩容
  • 企业级特性

核心操作

数据管理

  • 创建集合
    • client.create_collection(name="docs")
  • 添加数据
    • collection.add(ids, documents, metadatas, embeddings)
  • 更新数据
    • collection.update() / upsert()
  • 删除数据
    • collection.delete(ids) / 按条件删除

向量检索

  • 相似度搜索
    • collection.query(query_embeddings, n_results=5)
  • 文本搜索(自动嵌入)
    • collection.query(query_texts=["查询文本"])
  • 元数据过滤
    • where={"category": "tech"}
  • 多条件组合
    • $and / $or / $gt / $lt

高级功能

  • 分页查询
  • 结果去重
  • 距离度量(cosine/l2/ip)
  • 集合复制/修改

集成生态

LLM框架

  • LangChain
    • Chroma.from_documents()
    • Chroma.as_retriever()
  • LlamaIndex
    • ChromaVectorStore
  • Haystack

嵌入模型

  • OpenAI(text-embedding-ada-002)
  • HuggingFace(Sentence Transformers)
  • Cohere
  • 自定义嵌入函数

数据源

  • 文件加载(PDF/TXT/MD)
  • 网页爬取
  • 数据库同步

典型应用场景

RAG(检索增强生成)

  • 文档向量化存储
  • 语义相似度检索
  • 结合LLM生成回答

语义搜索

  • 替代传统关键词搜索
  • 理解查询意图
  • 多语言支持

推荐系统

  • 基于内容相似推荐
  • 用户兴趣向量匹配

去重/聚类

  • 相似文档检测
  • 数据清洗

关键代码示例

快速开始

python

import chromadb

client = chromadb.Client()

collection = client.create_collection("my_collection")

collection.add(documents=["Hello world"], ids=["id1"])

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

持久化配置

python

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

元数据过滤查询

python

collection.query(

query_texts=["AI技术"],

where={"category": "technology", "year": {"$gte": 2023}},

n_results=3

)

与LangChain集成

python

from langchain.vectorstores import Chroma

from langchain.embeddings import OpenAIEmbeddings

vectorstore = Chroma.from_documents(

documents=docs,

embedding=OpenAIEmbeddings(),

persist_directory="./chroma_db"

)

retriever = vectorstore.as_retriever(search_kwargs={"k": 4})

性能优化

索引策略

  • HNSW(默认近似最近邻)
  • 权衡:速度 vs 召回率

配置调优

  • hnsw:space(距离度量)
  • hnsw:construction_ef
  • hnsw:search_ef

批量操作

  • 批量添加提升写入性能
  • 推荐批次:100-1000条

注意事项

限制

  • 单集合最大约100万条(推荐)
  • 元数据过滤字段需预先规划
  • 不支持复杂事务

最佳实践

  • 合理设计Collection粒度
  • 元数据字段建立索引
  • 定期备份持久化目录
  • 生产环境使用服务器模式

对比其他向量库

vs FAISS

  • Chroma:持久化+元数据+易用
  • FAISS:纯内存+高性能

vs Pinecone/Milvus

  • Chroma:开源免费/轻量级
  • 商业方案:托管服务/大规模
相关推荐
s1mple“”7 小时前
大厂Java面试实录:从Spring Boot到AI技术的医疗健康场景深度解析
spring boot·redis·微服务·kafka·向量数据库·java面试·ai技术
s1mple“”10 小时前
大厂Java面试实录:从Spring Boot到AI技术的在线教育场景深度解析
spring boot·redis·微服务·kafka·向量数据库·java面试·ai技术
fuquxiaoguang1 天前
Qdrant:为AI构建的高性能向量搜索引擎
人工智能·向量数据库
IT 行者2 天前
Redis 8.0 向量库:大模型知识库开发的新选择
数据库·redis·缓存·大模型·aigc·向量数据库·rag
Java后端的Ai之路5 天前
Milvus 向量数据库从入门到精通:AI 时代的“记忆中枢“实战指南(建议收藏!)
数据库·人工智能·milvus·向量数据库·rag
云和数据.ChenGuang8 天前
AI向量数据库chromadb的swagger-ui的运行使用教程
大数据·数据库·人工智能·ui·向量数据库·向量计算
胡少侠712 天前
RAG 向量持久化:用 ChromaDB 替换内存存储,支持 Metadata 溯源
ai·agent·rag·chromadb
core51214 天前
深入浅出 Milvus 向量数据库:从核心原理到 Python 实战指南
数据库·python·milvus·向量数据库·语义检索
深念Y15 天前
RAG系统的“记忆幽灵”,记忆更新怎么办
数据库·ai·agent·文档·向量数据库·rag·知识检索
最初的↘那颗心16 天前
Spring AI 生产避坑指南与 RAG 内存向量库实战
大模型·向量数据库·rag·spring ai·生产实践