使用 “Chroma” 连接器(预览版)

警告

语义内核向量存储功能处于预览状态,可能需要进行重大更改的改进在发布前的某些有限情况下仍可能发生。

不支持

不支持。

概述

Chroma Vector Store 连接器可用于访问和管理 Chroma 中的数据。 连接器具有以下特征。

功能区域 支持
集合映射到 Chroma 系列
支持的键属性类型 字符串
支持的数据属性类型 所有类型
支持的向量属性类型
  • list[float]
  • list[int]
  • ndarray
支持的索引类型
  • HNSW
支持的距离函数
  • 余弦相似性
  • DotProductSimilarity
  • 欧几里得平方距离
支持的过滤器语句
  • AnyTagEqualTo
  • EqualTo
支持记录中的多个向量
是否支持Filterable? 是的
是否支持FullTextSearchable? 是的

局限性

显著的 Chroma 连接器功能限制。

功能区域 解决方法
客户端-服务器模式 使用 client.HttpClient 将结果传递给 client 参数,目前不支持 AsyncHttpClient。
Chroma Cloud 目前还不清楚,因为 Chroma Cloud 仍在个人预览版中

入门指南

将 Chroma Vector Store 连接器依赖项添加到项目。

pip install semantic-kernel[chroma]

然后,可以创建向量存储。

from semantic_kernel.connectors.memory.chroma import ChromaStore

store = ChromaStore()

或者,如果要更好地控制客户端构造,还可以传入自己的 mongodb 客户端:

from chromadb import Client
from semantic_kernel.connectors.memory.chroma import ChromaStore

client = Client(...)
store = ChromaStore(client=client)

还可以直接创建集合,而无需通过商店。

from semantic_kernel.connectors.memory.chroma import ChromaCollection

# `hotel` is a class created with the @vectorstoremodel decorator
collection = ChromaCollection(
    collection_name="my_collection",
    data_model_type=hotel
)

序列化

Chroma 客户端以表格形式返回 getsearch 结果,这意味着在字典中返回 3 到 5 个列表,列表包括“键”、“文档”、“嵌入”,以及可选的“元数据”和“距离”。 语义内核 Chroma 连接器会自动将其转换为 dict 对象列表,然后分析回数据模型。

从此格式直接序列化为类似数据帧的结构在性能方面可能非常有趣,因为这样操作可以节省大量的重新生成数据结构。 即使使用容器模式,也需自行指定此项。有关此概念的更多详细信息,请参阅 序列化文档

不支持

不支持。