news 2026/4/24 23:22:19

Chroma 向量数据库详解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Chroma 向量数据库详解

一、Chroma 是什么?

  • 轻量级向量数据库(专门存文本、图片、音频的向量)
  • 主打:简单、开箱即用、本地优先
  • 不需要复杂配置,Python 几行就能跑
  • 自动做 embedding(文本转向量),不用自己写模型

适用场景:

  • RAG 知识库(给大模型做检索)
  • 文档相似搜索
  • 问答系统、本地知识库

二、核心概念

  1. Client:客户端,连接 Chroma
  2. Collection:集合,相当于 “表”,用来存一批数据
  3. Embedding:文本 → 高维向量,Chroma 自动生成
  4. Document:你存的原始文本(必须
  5. Metadata:元数据,用于过滤 (可选,但非常有用
  6. ID:每条数据唯一标识(必须

三、python中安装chromadb

pip install chromadb

四、基础使用(最常用流程)

1. 创建 / 连接客户端

(1) 本地持久化(数据存在文件夹里,不会丢):

import chromadb

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

(2) 内存版(程序关了数据就没):

client = chromadb.Client()

2. 创建集合

collection=client.get_or_create_collection(name='infos')

3. 添加数据(存向量)

collection.add( documents=[ "小明喜欢吃苹果", "小红喜欢在公园跑步", "机器学习是人工智能的一种" ], #文字内容,可以是句子、段落、文章。 metadatas=[ {"topic": "饮食"}, {"topic": "运动"}, {"topic": "技术"} ], #给数据打标签,用于过滤搜索 ids=["id1", "id2", "id3"] # 必须唯一 )

只要传文档 + ID + 元数据,剩下的 Chroma 自动搞定:

  1. document => 文档(文字)
  2. ids=> ID(唯一标识)
  3. metadatas=> 元数据(标签 / 过滤用)
  4. 向量(自动生成,不用你管)

4. 相似度搜索(最核心功能)

results = collection.query( query_texts="我热爱运动", n_results=2 ) print(results)

5. 带条件过滤搜索

results = collection.query( query_texts="技术", n_results=2, where={"topic": "技术"} )

6. 查看数据

# 查看所有 collection.get() # 预览前2条 collection.peek(2) # 列出所有集合 client.list_collections()

7. 删除数据

collection.delete(ids=["id1"])

8. 删除集合

client.delete_collection("infos")

五、Chroma 存储结构

chroma_db/

chroma.sqlite3 # 文档、ID、元数据

chroma-embeddings.parquet # 向量

index/ # 向量索引

  • 重启程序数据依然存在
  • 复制整个文件夹就能备份

如果要打开 ChromaDB 的文件

  1. 找到你的chroma.sqlite3(在./chroma/或你自定义的目录);
  2. 用 DB Browser → “打开数据库” → 选中这个文件 → 就能看到所有集合、元数据。

可以使用可视化-DB Browser for SQLite(免费),直接给你官方、安全、64 位免安装版(ZIP)链接,下完解压就能用:Windows 64 位 便携版(推荐)

https://sqlitebrowser.org/dl/

六、高级知识点

1. 向量怎么来的?

Chroma 默认使用all-MiniLM-L6-v2模型自动把文本转 384 维向量。你也可以换:

  • HuggingFace 模型
  • 自己的 embedding 函数
  • OpenAI / 百度千帆 等接

2. 支持三种模式

  • 本地持久化(最常用)
  • 内存模式
  • 服务端模式(chroma run --path ./data)

3. 支持的查询方式

  • 文本查询query_texts
  • 向量查询query_embeddings
  • 元数据过滤where
  • 混合检索

4. 适合什么规模?

  • 小~中规模:几千~几十万条非常舒服
  • 超大规模(百万以上)建议用 Qdrant / Milvus

七、典型 RAG 流程(最实用)

  1. 把文档切分(分块)
  2. 存入 Chroma
  3. 用户提问 → 检索相似文档
  4. 把文档丢给大模型回答

八、常见问题

  1. 找不到 chroma.sqlite3?用的是内存 Client,换成 PersistentClient。

  2. ID 重复报错?ID 必须唯一,不能重复 add。

  3. 如何清空数据?删除集合或删除整个 chroma 文件夹。

总之:

Chroma = 轻量向量库 + 自动 embedding + 简单 API

适合做本地知识库、RAG 快速原型,Python 开箱即用。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/24 23:21:24

带你了解知识付费的未来发展趋势!

知识付费的未来发展趋势如何?也许是因为去年那次疫情,让很多人知道,原来教育除了线下外,还有线上教育;原来知识除了可以学习以外,也可以通过知识付费的方式来获得收益。那么到底知识付费是什么?…

作者头像 李华
网站建设 2026/4/24 23:21:23

高精度光波长测量首选:日本横河光波长计AQ6150,深圳优峰技术专业供应与解决方案

在光通信、激光器研发、传感及精密测量领域,波长的精准测量是保障系统性能、验证器件参数的核心环节。面对高速、高精度、高稳定性的测试需求,一款权威、可靠的波长测量仪器至关重要。今天,我们将聚焦于行业标杆级产品——日本横河光波长计AQ…

作者头像 李华
网站建设 2026/4/24 23:19:23

避开宠物用药误区:新研发有效成分的科学选择指南

对铲屎官而言,宠物生病时选药往往手足无措,不少人陷入 “人药通用”“越贵越好” 的误区。从兽医药理学核心理论来看,宠物与人类的生理差异、药物代谢机制不同,用药需兼顾针对性与安全性。近年来,宠物医药领域的新研发…

作者头像 李华
网站建设 2026/4/24 23:15:03

HiveWE:现代化魔兽争霸III地图编辑器架构与技术实现

HiveWE:现代化魔兽争霸III地图编辑器架构与技术实现 【免费下载链接】HiveWE A Warcraft III world editor. 项目地址: https://gitcode.com/gh_mirrors/hi/HiveWE HiveWE作为专注于魔兽争霸III地图编辑器、Warcraft III地形编辑和可视化路径编辑系统的现代化…

作者头像 李华