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:开源免费/轻量级
  • 商业方案:托管服务/大规模
相关推荐
x_lrong1 天前
LangChain&Redis记忆
数据库·redis·langchain·向量数据库
java1234_小锋15 天前
嵌入模型与Chroma向量数据库 - Chroma安装与简单应用实例 - AI大模型应用开发必备知识
人工智能·向量数据库·chroma
java1234_小锋18 天前
嵌入模型与Chroma向量数据库 - Qwen3嵌入模型使用 - AI大模型应用开发必备知识
人工智能·向量数据库·chroma
长路 ㅤ   18 天前
Milvus系列之02、Spring+Milvus实现RAG检索增强
向量数据库·apache tika·langchain4j·知识库构建·hanlp分词
长路 ㅤ   19 天前
dify系列之01、快速本地一键搭建dify
向量数据库·llmops·知识库管理·docker容器化·dify部署
java1234_小锋19 天前
嵌入模型与Chroma向量数据库 - 嵌入模型与向量数据库简介 - AI大模型应用开发必备知识
人工智能·向量数据库·chroma
马克Markorg19 天前
SpringBoot + LangChain4j 打造企业级 RAG 智能知识库,多工具集成方案
spring boot·向量数据库·rag·qdrant·langchain4j·增强知识检索库
长路 ㅤ   21 天前
长路的AI领域技术博客汇总文档
向量数据库·大模型部署·langchain4j·智能体agent·ai后端技术
Hoking1 个月前
milvus向量数据库介绍与部署(docker-compose)
人工智能·milvus·向量数据库