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

打印 上一主题 下一主题

主题 974|帖子 974|积分 2922

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



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



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

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


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

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


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

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


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


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



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

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

知者何南

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表