知者何南 发表于 2025-3-23 02:30:22

【向量数据库】chroma 向量数据库使用教程

以下是 Chroma 向量数据库的使用教程:
安装



[*] 使用 Python 的 pip 包管理器安装 Chroma:
bash复制
pip install chromadb
[*] 如果只需要使用 Chroma 的客户端功能,可以安装轻量级的客户端库:
bash复制
pip install chromadb-client
初始化客户端



[*] 本地恒久化客户端:将数据保存到本地指定路径,并在启动时主动加载。
Python复制
import chromadb
client = chromadb.PersistentClient(path="/path/to/save/to")
[*] HTTP 客户端:毗连到运行中的 Chroma 服务器。
Python复制
chroma_client = chromadb.HttpClient(host='localhost', port=8000)
创建集合

集合是 Chroma 中存储数据的根本单元。可以通过以下代码创建集合:
Python复制
collection = client.create_collection(name="my_collection")

[*] 集合名称有以下限制:长度 3 到 63 个字符,开头和结尾只能是小写字母或数字,不能包罗两个一连的点,不能是有效的 IP 地址。
[*] 可以通过 embedding_function 参数指定嵌入函数,若不指定则使用默认的 all-MiniLM-L6-v2 模型。
[*] 也可以通过 metadata 参数自界说嵌入空间的距离方法,例如:
Python复制
collection = client.create_collection(
    name="collection_name",
    metadata={"hnsw:space": "cosine"}# 使用余弦相似度
)
添加数据

向集合中添加数据时,需要提供以下内容:


[*] ids:唯一标识。
[*] documents:数据本体,通常是文本。若未提供 embeddings,Chroma 会主动从 documents 天生嵌入向量。
[*] metadatas(可选):数据的额外描述,可用于后续的过滤查询。
[*] embeddings(可选):手动传入的嵌入向量。
示例代码:
Python复制
collection.add(
    documents=["This is a document about engineer", "This is a document about steak"],
    metadatas=[{"source": "doc1"}, {"source": "doc2"}],
    ids=["id1", "id2"]
) 查询数据

可以通过嵌入向量或文本举行查询。以下是两种查询方式的示例:


[*] 基于嵌入向量查询:
Python复制
results = collection.query(
    query_embeddings=[],
    n_results=2# 返回最相关的 2 个结果
)
[*] 基于文本查询:Chroma 会主动将文本转换为嵌入向量举行查询。
Python复制
results = collection.query(
    query_texts=["Which food is the best?"],
    n_results=2
)
查询结果是一个字典,包罗以下字段:


[*] ids:匹配到的数据的 ID。
[*] documents:匹配到的数据内容。
[*] metadatas:匹配到的数据的元数据。
[*] distances:查询向量与匹配向量之间的距离。
其他操作



[*] 更新数据:
Python复制
collection.update(
    ids=["id1", "id2"],
    documents=["Updated document 1", "Updated document 2"]
)
[*] 删除数据:
Python复制
collection.delete(ids=["id1"])
[*] 过滤查询:可以通过元数据或文档内容举行过滤查询。
Python复制
results = collection.query(
    query_embeddings=[],
    n_results=2,
    where={"source": "doc1"}# 按元数据过滤
)
[*] 指定返回字段:在查询时可以通过 include 参数指定返回的字段,例如:
Python复制
results = collection.query(
    query_embeddings=[],
    include=["documents", "metadatas"]
)

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 【向量数据库】chroma 向量数据库使用教程