ChromaDB Python教程:最简单的向量数据库
Chroma是对新手最友好的向量数据库(28.9k星)。
💡 你将学到
Chroma是对新手最友好的向量数据库(28.9k星)。
📜 目录
ChromaDB 教程 Python 2026:最适合初学者的向量数据库
Chroma 是一个开源向量数据库,主打简单易用(GitHub 28,900 星,Apache-2.0 协议)。它的杀手级特性:嵌入(embedding)全自动处理。你只需输入文本,它会自动完成嵌入和存储,搜索时也直接用文本查询。无需单独搭建嵌入流水线。
第 1 步:安装
pip install chromadb
第 2 步:创建集合并添加文档
import chromadb
client = chromadb.Client() # 内存模式;如需持久化保存,请使用 PersistentClient
collection = client.create_collection("docs")
collection.add(
documents=[
"埃菲尔铁塔在巴黎。",
"Python 是一种编程语言。",
"巴黎是法国的首都。"
],
ids=["doc1", "doc2", "doc3"]
)
Chroma 会使用默认嵌入函数(all-MiniLM-L6-v2,384 维模型)自动为文档生成嵌入。无需 API 密钥。
第 3 步:搜索
results = collection.query(
query_texts=["法国的首都是哪里?"],
n_results=2
)
print(results["documents"])
# [['巴黎是法国的首都。', '埃菲尔铁塔在巴黎。']]
这就是语义搜索——"法国的首都"能匹配包含"巴黎"的文档,即使查询中没有出现完全相同的字词。
第 4 步:持久化存储
client = chromadb.PersistentClient(path="./chroma_data")
第 5 步:使用自定义嵌入(获得更高质量的结果)
from chromadb.utils.embedding_functions import OllamaEmbeddingFunction
ef = OllamaEmbeddingFunction(model_name="nomic-embed-text", url="http://localhost:11434/api/embeddings")
collection = client.create_collection("docs", embedding_function=ef)
三步 RAG 模式
- 添加文档(自动嵌入)
- 用问题查询(返回 top-k 文本块)
- 将文本块 + 问题一起交给 LLM 生成答案
常见问题
Chroma 和 FAISS 有什么区别? FAISS 是一个库(不支持持久化,无元数据);Chroma 是一个数据库(支持持久化、元数据过滤、API 简单)。做应用用 Chroma,做研究用 FAISS。
Chroma 可以用于生产环境吗? 可以,适合中等规模场景(百万级向量);它是 LangChain 教程中的默认向量存储。超大规模场景建议考虑 Qdrant 或 Milvus。
需要 Docker 吗? 不需要——可以直接在进程内运行,也可以作为本地服务器启动。Docker 只是可选方案。
相关文章
❓ 常见问题
Chroma 和 FAISS 有什么区别?
FAISS 是一个库(不支持持久化,无元数据);Chroma 是一个数据库(支持持久化、元数据过滤、API 简单)。做应用用 Chroma,做研究用 FAISS。
Chroma 可以用于生产环境吗?
可以,适合中等规模场景(百万级向量);它是 LangChain 教程中的默认向量存储。超大规模场景建议考虑 Qdrant 或 Milvus。
需要 Docker 吗?
不需要——可以直接在进程内运行,也可以作为本地服务器启动。Docker 只是可选方案。
本站文章由编辑人工撰写,收录的工具均经过实测或公开资料核验。文中链接指向工具官网或 GitHub 仓库,仅作信息参考,不构成付费推广。
