ChromaDB Python教程:最简单的向量数据库

📘 教程 2026-08-01 约 5 分钟阅读

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 模式

  1. 添加文档(自动嵌入)
  2. 用问题查询(返回 top-k 文本块)
  3. 将文本块 + 问题一起交给 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 只是可选方案。

相关文章
2026-07-16
AI Agent用户反馈闭环:让Agent越用越聪明
2026-07-19
AI Agent规模化策略:从1个用户到100万用户
2026-07-19
LoRA微调实战:最省显存的模型训练方法

本站文章由编辑人工撰写,收录的工具均经过实测或公开资料核验。文中链接指向工具官网或 GitHub 仓库,仅作信息参考,不构成付费推广。

💬 评论 (0)

暂无评论,来说两句吧~

登录后评论