现在我们来讲几个 ChromaDB 的重要核心概念。 首先ChromaDB 默认是非持久化存储模式。如果你直接用 chromadb.Client () 创建客户端所有数据只会存放在内存里。这就意味着一旦程序停止运行你存入的全部数据都会丢失。 这种模式很适合学习和做实验调试但绝对不能用于生产环境。如果想让 ChromaDB 实现持久化存储就要改用 PersistentClient 替代基础的 Client。你需要指定一个本地文件路径数据库相关文件都会保存在这个路径下。这样一来即便程序重启数据也不会消失你可以长期累积、扩充向量数据库里的内容。 除此之外我们还可以更换 ChromaDB 所使用的嵌入模型。它默认采用 all-MiniLM 模型但你可能会有更换模型的需求比如想要更好的语义匹配效果或是需要和你训练阶段使用的模型保持一致。 你可以接入 OpenAI 的向量嵌入模型甚至基于任意模型自定义专属嵌入转换函数。以 OpenAI 为例创建集合时新增名为 embedding_function 的参数传入 OpenAI 官方嵌入工具同时配置好你的 OpenAI API 密钥即可。ChromaDB 核心概念完整解读补充实操 区分要点一、两种客户端内存 Client vs 持久化 PersistentClient1.chromadb.Client()内存客户端非持久化存储位置仅内存无本地文件落地生命周期进程存活则数据存在程序退出、重启、服务崩溃后所有向量、文本、元数据全部清空丢失适用场景本地快速测试、Demo、教学实验、临时调试严禁线上生产使用极简示例python运行import chromadb # 内存模式重启即丢 client chromadb.Client()2.chromadb.PersistentClient(path本地文件夹路径)持久化客户端存储位置指定本地磁盘目录自动生成向量索引、元数据、集合配置文件生命周期数据永久落地磁盘程序关闭 / 重启后可重新加载完整库支持长期迭代新增数据适用场景本地私有化部署、离线知识库、生产单机向量检索服务极简示例python运行import chromadb # 持久化数据保存在 ./chroma_db 文件夹 client chromadb.PersistentClient(path./chroma_db)关键区分总结表格客户端类型存储介质重启数据生产可用性Client内存全部丢失❌ 禁止生产PersistentClient本地磁盘文件数据保留✅ 本地生产可用二、嵌入函数 embedding_function向量转换核心1. 默认嵌入模型Chroma 内置默认all-MiniLM-L6-v2轻量开源句向量模型无需额外 API、离线可用开箱即用。 创建集合不指定embedding_function会自动使用该模型python运行# 使用默认 all-MiniLM 嵌入 collection client.create_collection(namedemo)2. 更换嵌入模型的核心需求场景追求更高语义匹配精度开源大句向量、商用模型上下游模型对齐训练、业务侧使用同一款嵌入保证向量空间一致业务特殊需求多语言、长文本、专用领域法律 / 医疗向量调用商用 API 向量服务OpenAI、DashScope、Cohere 等3. 实操示例接入 OpenAI 嵌入模型依赖安装pip install openai chromadbpython运行import chromadb from chromadb.utils.embedding_functions import OpenAIEmbeddingFunction # 配置OpenAI嵌入函数填入API Key openai_ef OpenAIEmbeddingFunction( api_key你的OpenAI API密钥, model_nametext-embedding-ada-002 # 可选text-embedding-3-small/large ) # 创建集合时指定自定义嵌入函数 client chromadb.PersistentClient(./chroma_store) collection client.create_collection( nameknowledge_base, embedding_functionopenai_ef )4. 自定义嵌入函数完全自定义向量逻辑支持自行实现文本转向量的逻辑只需要实现__call__接收文本列表、返回二维向量数组适配私有训练模型、本地大模型等场景。三、补充延伸关键配套概念配套理解Collection 集合ChromaDB 的最小操作单元相当于传统数据库的「表」。同一个库可以创建多个独立集合每个集合可绑定专属嵌入模型隔离不同业务知识库。数据三要素存入集合必备documents原始文本片段embeddings文本对应的向量不传入时会通过 embedding_function 自动生成metadatas自定义标签分类、时间、来源等用于过滤检索检索逻辑 查询文本会先通过绑定的嵌入函数转为向量再在集合内计算余弦相似度返回最相似的文本片段。嵌入模型一旦切换旧向量会完全失效同一集合必须全程使用同一种嵌入函数。四、生产环境补充注意点单机持久化仅适用于本地离线业务高并发分布式场景需搭配 Chroma Server / 远程客户端使用商用嵌入 APIOpenAI存在网络、计费、延迟问题大规模离线知识库优先本地开源嵌入模型持久化目录建议单独管理定期备份避免磁盘损坏丢失向量库文件。