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:开源免费/轻量级
  • 商业方案:托管服务/大规模
相关推荐
阿杰学AI2 天前
AI核心知识129—大语言模型之 向量数据库(简洁且通俗易懂版)
数据库·人工智能·ai·语言模型·自然语言处理·向量数据库·vector database
庄小焱4 天前
【AI模型】——RAG索引构建与优化
人工智能·ai·向量数据库·ai大模型·rag·rag索引·索引构建与优化
正在走向自律7 天前
从0到1构建企业级RAG系统:基于LangChain+向量数据库的完整实战
langchain·向量数据库·rag·企业级架构
QC·Rex9 天前
向量数据库对比与实战:从原理到生产落地
数据库·人工智能·向量数据库
weisian15110 天前
进阶篇-LangChain篇-10--向量数据库选型指南:本地FAISS, Chroma与云原生方案
数据库·langchain·faiss·向量数据库·chroma
AI精钢10 天前
OpenClaw 本地内存检索与 node-llama-cpp 的依赖关系深度解析
llama·向量数据库·内存检索·openclaw·node-llama-cpp·本地 ai
QC·Rex11 天前
向量数据库架构与应用实战:从原理到生产部署
向量数据库·rag·相似度搜索·hnsw 算法·ai 基础设施
@atweiwei12 天前
langchainrust:Rust 版 LangChain 框架(LLM+Agent+RAG)
开发语言·rust·langchain·agent·向量数据库·rag
深念Y13 天前
从字典到向量:索引技术的演进
向量·es·索引·倒排索引·向量数据库·字典·倒排文件索引
码码哈哈0.013 天前
RAG 向量存储原理总结
ai·向量数据库