camel.storages.vectordb_storages 包

本页内容

camel.storages.vectordb_storages 包#

子模块#

camel.storages.vectordb_storages.base 模块#

class camel.storages.vectordb_storages.base.BaseVectorStorage[来源]#

基类: ABC

向量存储系统的抽象基类。

abstract add(records: List[VectorRecord], **kwargs: Any) None[来源]#

将向量记录列表保存到存储中。

Parameters:
  • records (List[VectorRecord]) – 要保存的向量记录列表。

  • **kwargs (Any) – 额外的关键字参数。

Raises:

RuntimeError – 如果在保存过程中出现错误。

abstract clear() None[来源]#

从存储中移除所有向量。

abstract property client: Any#

提供对底层向量数据库客户端的访问。

abstract delete(ids: List[str], **kwargs: Any) None[来源]#

从存储中删除由ID标识的向量列表。

Parameters:
  • ids (List[str]) – 待删除向量的唯一标识符列表。

  • **kwargs (Any) – 额外的关键字参数。

Raises:

RuntimeError – 如果在删除过程中出现错误。

get_payloads_by_vector(vector: List[float], top_k: int) List[Dict[str, Any]][来源]#

返回与给定向量最接近的前k个向量记录的有效载荷。

此函数是BaseVectorStorage.query的一个封装。

Parameters:
  • vector (List[float]) – 搜索向量。

  • top_k (int) – 返回最相似向量的数量。

Returns:

检索到的向量载荷列表

基于与查询向量的相似性从存储中获取。

Return type:

列表[列表[字典[str, 任意类型]]]

abstract load() None[来源]#

加载托管在云服务上的集合。

abstract query(query: VectorDBQuery, **kwargs: Any) List[VectorDBQueryResult][来源]#

基于提供的查询在存储中搜索相似向量。

Parameters:
  • query (VectorDBQuery) – 包含搜索向量和要检索的相似向量数量的查询对象。

  • **kwargs (Any) – 额外的关键字参数。

Returns:

从存储中检索到的向量列表

基于与查询向量的相似性。

Return type:

列表[VectorDBQueryResult]

abstract status() VectorDBStatus[来源]#

返回向量数据库的状态。

Returns:

向量数据库状态。

Return type:

VectorDBStatus

class camel.storages.vectordb_storages.base.VectorDBQuery(query_vector: List[float], top_k: int)[来源]#

基类:BaseModel

表示对向量数据库的查询。

query_vector#

查询向量的数值表示。

Type:

浮点数列表

top_k#

从数据库中检索的相似向量的最大数量。(默认值: 1)

Type:

整数,可选

model_config: ClassVar[ConfigDict] = {}#

模型的配置,应该是一个符合[ConfigDict][pydantic.config.ConfigDict]的字典。

query_vector: List[float]#

查询向量的数值表示。

top_k: int#

从数据库中检索的顶部相似向量的数量。

class camel.storages.vectordb_storages.base.VectorDBQueryResult(*, record: VectorRecord, similarity: float)[来源]#

基类:BaseModel

封装了对向量数据库进行查询的结果。

record#

目标向量记录。

Type:

VectorRecord

similarity#

查询向量与记录之间的相似度得分。

Type:

浮点数

classmethod create(similarity: float, vector: List[float], id: str, payload: Dict[str, Any] | None = None) VectorDBQueryResult[来源]#

一个用于构建VectorDBQueryResult实例的类方法。

model_config: ClassVar[ConfigDict] = {}#

模型的配置,应该是一个符合[ConfigDict][pydantic.config.ConfigDict]的字典。

record: VectorRecord#
similarity: float#
class camel.storages.vectordb_storages.base.VectorDBStatus(*, vector_dim: int, vector_count: int)[来源]#

基类:BaseModel

向量数据库状态。

vector_dim#

存储向量的维度。

Type:

int

vector_count#

存储向量的数量。

Type:

int

model_config: ClassVar[ConfigDict] = {}#

模型的配置,应该是一个符合[ConfigDict][pydantic.config.ConfigDict]的字典。

vector_count: int#
vector_dim: int#
class camel.storages.vectordb_storages.base.VectorRecord(*, vector: ~typing.List[float], id: str = <factory>, payload: ~typing.Dict[str, ~typing.Any] | None = None)[来源]#

基类:BaseModel

封装了关于向量唯一标识符及其有效载荷的信息,主要用作保存到向量存储时的数据传输对象。

vector#

向量的数值表示。

Type:

浮点数列表

id#

向量的唯一标识符。如果未提供,将分配一个随机uuid。

Type:

字符串, 可选

payload#

与向量相关的任何额外元数据或信息。(默认: None)

Type:

可选[字典[str, 任意类型]], 可选

id: str#
model_config: ClassVar[ConfigDict] = {}#

模型的配置,应该是一个符合[ConfigDict][pydantic.config.ConfigDict]的字典。

payload: Dict[str, Any] | None#
vector: List[float]#

camel.storages.vectordb_storages.milvus 模块#

class camel.storages.vectordb_storages.milvus.MilvusStorage(vector_dim: int, url_and_api_key: Tuple[str, str], collection_name: str | None = None, **kwargs: Any)[来源]#

基础类: BaseVectorStorage

一个实现BaseVectorStorage的类,用于与云原生向量搜索引擎Milvus进行交互。

关于Milvus的详细信息可在以下链接获取: Milvus

Parameters:
  • vector_dim (int) – 存储向量的维度。

  • url_and_api_key (Tuple[str, str]) – 包含用于连接远程Milvus实例的URL和API密钥的元组。 URL对应Milvus的uri概念,通常是"endpoint:port"。 API密钥对应Milvus的token概念,对于自托管实例是"username:pwd", 对于Zilliz Cloud(全托管Milvus)则是API密钥。

  • collection_name (Optional[str], optional) – Milvus中集合的名称。如果未提供,则设置为当前时间的ISO格式。(默认: None)

  • **kwargs (Any) – 用于初始化MilvusClient的额外关键字参数。

Raises:

ImportError – 如果未安装pymilvus包。

add(records: List[VectorRecord], **kwargs) None[来源]#

将向量列表添加到指定的集合中。

Parameters:
  • records (List[VectorRecord]) - 要添加的向量列表。

  • **kwargs (Any) – 传递给插入操作的额外关键字参数。

Raises:

RuntimeError - 如果在添加过程中出现错误。

clear() None[来源]#

从Milvus集合中移除所有向量。此方法会删除现有集合并使用相同的模式重新创建它,从而有效移除所有存储的向量。

property client: Any#

提供对Milvus客户端的直接访问。此属性允许直接与Milvus客户端交互,用于执行MilvusStorage类未涵盖的操作。

Returns:

Milvus客户端实例。

Return type:

任何

delete(ids: List[str], **kwargs: Any) None[来源]#

从存储中删除由ID标识的向量列表。如果不确定ID,可以先查询集合以获取相应的数据。

Parameters:
  • ids (List[str]) – 待删除向量的唯一标识符列表。

  • **kwargs (Any) – 传递给删除操作的额外关键字参数。

Raises:

RuntimeError – 如果在删除过程中出现错误。

load() None[来源]#

加载托管在云服务上的集合。

query(query: VectorDBQuery, **kwargs: Any) List[VectorDBQueryResult][来源]#

基于提供的查询在存储中搜索相似向量。

Parameters:
  • query (VectorDBQuery) – 包含搜索向量和要检索的相似向量数量的查询对象。

  • **kwargs (Any) – 传递给搜索的额外关键字参数。

Returns:

从存储中检索到的向量列表

基于与查询向量的相似性。

Return type:

列表[VectorDBQueryResult]

status() VectorDBStatus[来源]#

获取Milvus集合的当前状态。此方法提供有关集合的信息,包括其向量维度和存储的向量总数。

Returns:

一个包含有关

集合状态信息的对象。

Return type:

VectorDBStatus

camel.storages.vectordb_storages.qdrant 模块#

class camel.storages.vectordb_storages.tidb.EnumEncoder(*, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, sort_keys=False, indent=None, separators=None, default=None)[来源]#

基类: JSONEncoder

default(obj)[来源]#

在子类中实现此方法,使其返回o的可序列化对象,或调用基类实现(以引发TypeError)。

例如,为了支持任意迭代器,您可以这样实现默认值:

def default(self, o):
    try:
        iterable = iter(o)
    except TypeError:
        pass
    else:
        return list(iterable)
    # Let the base class default method raise the TypeError
    return JSONEncoder.default(self, o)
class camel.storages.vectordb_storages.tidb.TiDBStorage(vector_dim: int, collection_name: str | None = None, url_and_api_key: Tuple[str, str] | str | None = None, **kwargs: Any)[来源]#

基础类: BaseVectorStorage

一个实现BaseVectorStorage用于与TiDB交互的实现。

关于TiDB的详细信息可在以下链接获取: TiDB Vector Search

Parameters:
  • vector_dim (int) – 存储向量的维度。

  • url_and_api_key (Optional[Union[Tuple[str, str], str]]) –

    一个元组

    包含用于连接TiDB集群的数据库URL和API密钥。URL格式应为:

    "mysql+pymysql://:@:/"。 TiDB不会使用API密钥,但保留此定义以实现接口兼容性。

  • collection_name (可选[str]) – 集合名称。 该集合名称将作为TiDB中的表名使用。如果未提供,则设置为当前时间的iso格式。

  • **kwargs (Any) – 用于初始化TiDB连接的其他关键字参数。

Raises:

ImportError – 如果未安装 pytidb 包。

add(records: List[VectorRecord], **kwargs) None[来源]#

将向量列表添加到指定表中。

Parameters:
  • records (List[VectorRecord]) - 要添加的向量列表。

  • **kwargs (Any) – 传递给插入操作的额外关键字参数。

Raises:

RuntimeError - 如果在添加过程中出现错误。

clear() None[来源]#

从TiDB表中移除所有向量。此方法会删除现有表,然后使用相同的模式重新创建它,以有效移除所有存储的向量。

property client: TiDBClient#

提供对TiDB客户端的直接访问。

Returns:

TiDB客户端实例。

Return type:

任何

delete(ids: List[str], **kwargs: Any) None[来源]#

从存储中删除由ID标识的向量列表。

Parameters:
  • ids (List[str]) – 待删除向量的唯一标识符列表。

  • **kwargs (Any) – 传递给删除操作的额外关键字参数。

Raises:

RuntimeError – 如果在删除过程中出现错误。

load() None[来源]#

加载托管在云服务上的集合。

query(query: VectorDBQuery, **kwargs: Any) List[VectorDBQueryResult][来源]#

基于提供的查询在存储中搜索相似向量。

Parameters:
  • query (VectorDBQuery) – 包含搜索向量和要检索的相似向量数量的查询对象。

  • **kwargs (Any) – 传递给搜索的额外关键字参数。

Returns:

从存储中检索到的向量列表

基于与查询向量的相似性。

Return type:

列表[VectorDBQueryResult]

status() VectorDBStatus[来源]#

获取TiDB表的当前状态。

Returns:

一个包含有关

表状态信息的对象。

Return type:

VectorDBStatus

camel.storages.vectordb_storages.tidb 模块#

class camel.storages.vectordb_storages.qdrant.QdrantStorage(vector_dim: int, collection_name: str | None = None, url_and_api_key: Tuple[str, str] | None = None, path: str | None = None, distance: VectorDistance = VectorDistance.COSINE, delete_collection_on_del: bool = False, **kwargs: Any)[来源]#

基础类: BaseVectorStorage

一个实现BaseVectorStorage用于与向量搜索引擎Qdrant交互的类。

关于Qdrant的详细信息可在以下链接获取: Qdrant

Parameters:
  • vector_dim (int) – 存储向量的维度。

  • collection_name (可选[str], optional) – Qdrant中集合的名称。如果未提供,则设置为当前时间的ISO格式。(默认: None)

  • url_and_api_key (Optional[Tuple[str, str]], optional) – 包含用于连接远程Qdrant实例的URL和API密钥的元组。 (默认值: None)

  • path (可选[str], 可选) – 用于初始化本地Qdrant客户端的目录路径。(默认: None)

  • distance (VectorDistance, optional) – 用于向量比较的距离度量标准(默认:VectorDistance.COSINE

  • delete_collection_on_del (bool, optional) – 标志位,用于确定在对象销毁时是否应删除集合。 (默认值: False)

  • **kwargs (Any) – 用于初始化QdrantClient的额外关键字参数。

注意事项

  • 如果提供了url_and_api_key,它将优先使用,客户端将尝试通过URL端点连接到远程Qdrant实例。

  • 如果未提供url_and_api_key但给出了path,客户端将使用本地路径来初始化Qdrant。

  • 如果既没有提供url_and_api_key也没有提供path,客户端将使用内存存储(“:memory:”)进行初始化。

add(records: List[VectorRecord], **kwargs) None[来源]#

将向量列表添加到指定的集合中。

Parameters:
  • vectors (List[VectorRecord]) - 要添加的向量列表。

  • **kwargs (Any) – 额外的关键字参数。

Raises:

RuntimeError - 如果在添加过程中出现错误。

clear() None[来源]#

从存储中移除所有向量。

property client: QdrantClient#

提供对底层向量数据库客户端的访问。

close_client(**kwargs)[来源]#

关闭与Qdrant存储的客户端连接。

delete(ids: List[str] | None = None, payload_filter: Dict[str, Any] | None = None, **kwargs: Any) None[来源]#

根据ID或payload过滤器从集合中删除点。

Parameters:
  • ids (Optional[List[str]], optional) – 要删除的向量的唯一标识符列表。

  • payload_filter (Optional[Dict[str, Any]], optional) – 用于筛选要删除符合特定条件的点的负载过滤器。如果提供了ids,除非明确组合使用,否则将忽略payload_filter

  • **kwargs (Any) – 传递给QdrantClient.delete的额外关键字参数。

示例

>>> # Delete points with IDs "1", "2", and "3"
>>> storage.delete(ids=["1", "2", "3"])
>>> # Delete points with payload filter
>>> storage.delete(payload_filter={"name": "Alice"})
Raises:
  • ValueError – 如果既没有提供ids也没有提供payload_filter

  • RuntimeError – 如果在删除过程中出现错误。

注意事项

  • 如果提供了ids参数,将直接删除这些ID对应的点

    此时会忽略payload_filter参数。

  • 如果未提供ids但提供了payload_filter,则

    符合payload_filter的点将被删除。

delete_collection() None[来源]#

删除Qdrant存储中的整个集合。

load() None[来源]#

加载托管在云服务上的集合。

query(query: VectorDBQuery, filter_conditions: Dict[str, Any] | None = None, **kwargs: Any) List[VectorDBQueryResult][来源]#

基于提供的查询在存储中搜索相似向量。

Parameters:
  • query (VectorDBQuery) – 包含搜索向量和要检索的相似向量数量的查询对象。

  • filter_conditions (Optional[Dict[str, Any]], optional) – 一个字典,用于指定过滤查询结果的条件。

  • **kwargs (Any) – 额外的关键字参数。

Returns:

从存储中检索到的向量列表

基于与查询向量的相似性。

Return type:

列表[VectorDBQueryResult]

status() VectorDBStatus[来源]#

返回向量数据库的状态。

Returns:

向量数据库状态。

Return type:

VectorDBStatus

update_payload(ids: List[str], payload: Dict[str, Any], **kwargs: Any) None[来源]#

更新由ID标识的向量的有效载荷。

Parameters:
  • ids (List[str]) – 待更新向量的唯一标识符列表。

  • payload (Dict[str, Any]) - 要更新的有效载荷列表。

  • **kwargs (Any) – 额外的关键字参数。

Raises:

RuntimeError – 如果在更新过程中出现错误。

模块内容#

class camel.storages.vectordb_storages.BaseVectorStorage[来源]#

基类: ABC

向量存储系统的抽象基类。

abstract add(records: List[VectorRecord], **kwargs: Any) None[来源]#

将向量记录列表保存到存储中。

Parameters:
  • records (List[VectorRecord]) – 要保存的向量记录列表。

  • **kwargs (Any) – 额外的关键字参数。

Raises:

RuntimeError – 如果在保存过程中出现错误。

abstract clear() None[来源]#

从存储中移除所有向量。

abstract property client: Any#

提供对底层向量数据库客户端的访问。

abstract delete(ids: List[str], **kwargs: Any) None[来源]#

从存储中删除由ID标识的向量列表。

Parameters:
  • ids (List[str]) – 待删除向量的唯一标识符列表。

  • **kwargs (Any) – 额外的关键字参数。

Raises:

RuntimeError – 如果在删除过程中出现错误。

get_payloads_by_vector(vector: List[float], top_k: int) List[Dict[str, Any]][来源]#

返回与给定向量最接近的前k个向量记录的有效载荷。

此函数是BaseVectorStorage.query的一个封装。

Parameters:
  • vector (List[float]) – 搜索向量。

  • top_k (int) – 返回最相似向量的数量。

Returns:

检索到的向量载荷列表

基于与查询向量的相似性从存储中获取。

Return type:

列表[列表[字典[str, 任意类型]]]

abstract load() None[来源]#

加载托管在云服务上的集合。

abstract query(query: VectorDBQuery, **kwargs: Any) List[VectorDBQueryResult][来源]#

基于提供的查询在存储中搜索相似向量。

Parameters:
  • query (VectorDBQuery) – 包含搜索向量和要检索的相似向量数量的查询对象。

  • **kwargs (Any) – 额外的关键字参数。

Returns:

从存储中检索到的向量列表

基于与查询向量的相似性。

Return type:

列表[VectorDBQueryResult]

abstract status() VectorDBStatus[来源]#

返回向量数据库的状态。

Returns:

向量数据库状态。

Return type:

VectorDBStatus

class camel.storages.vectordb_storages.MilvusStorage(vector_dim: int, url_and_api_key: Tuple[str, str], collection_name: str | None = None, **kwargs: Any)[来源]#

基础类: BaseVectorStorage

一个实现BaseVectorStorage的类,用于与云原生向量搜索引擎Milvus进行交互。

关于Milvus的详细信息可在以下链接获取: Milvus

Parameters:
  • vector_dim (int) – 存储向量的维度。

  • url_and_api_key (Tuple[str, str]) – 包含用于连接远程Milvus实例的URL和API密钥的元组。 URL对应Milvus的uri概念,通常是"endpoint:port"。 API密钥对应Milvus的token概念,对于自托管实例是"username:pwd", 对于Zilliz Cloud(全托管Milvus)则是API密钥。

  • collection_name (Optional[str], optional) – Milvus中集合的名称。如果未提供,则设置为当前时间的ISO格式。(默认: None)

  • **kwargs (Any) – 用于初始化MilvusClient的额外关键字参数。

Raises:

ImportError – 如果未安装pymilvus包。

add(records: List[VectorRecord], **kwargs) None[来源]#

将向量列表添加到指定的集合中。

Parameters:
  • records (List[VectorRecord]) - 要添加的向量列表。

  • **kwargs (Any) – 传递给插入操作的额外关键字参数。

Raises:

RuntimeError - 如果在添加过程中出现错误。

clear() None[来源]#

从Milvus集合中移除所有向量。此方法会删除现有集合并使用相同的模式重新创建它,从而有效移除所有存储的向量。

property client: Any#

提供对Milvus客户端的直接访问。此属性允许直接与Milvus客户端交互,用于执行MilvusStorage类未涵盖的操作。

Returns:

Milvus客户端实例。

Return type:

任何

delete(ids: List[str], **kwargs: Any) None[来源]#

从存储中删除由ID标识的向量列表。如果不确定ID,可以先查询集合以获取相应的数据。

Parameters:
  • ids (List[str]) – 待删除向量的唯一标识符列表。

  • **kwargs (Any) – 传递给删除操作的额外关键字参数。

Raises:

RuntimeError – 如果在删除过程中出现错误。

load() None[来源]#

加载托管在云服务上的集合。

query(query: VectorDBQuery, **kwargs: Any) List[VectorDBQueryResult][来源]#

基于提供的查询在存储中搜索相似向量。

Parameters:
  • query (VectorDBQuery) – 包含搜索向量和要检索的相似向量数量的查询对象。

  • **kwargs (Any) – 传递给搜索的额外关键字参数。

Returns:

从存储中检索到的向量列表

基于与查询向量的相似性。

Return type:

列表[VectorDBQueryResult]

status() VectorDBStatus[来源]#

获取Milvus集合的当前状态。此方法提供有关集合的信息,包括其向量维度和存储的向量总数。

Returns:

一个包含有关

集合状态信息的对象。

Return type:

VectorDBStatus

class camel.storages.vectordb_storages.QdrantStorage(vector_dim: int, collection_name: str | None = None, url_and_api_key: Tuple[str, str] | None = None, path: str | None = None, distance: VectorDistance = VectorDistance.COSINE, delete_collection_on_del: bool = False, **kwargs: Any)[来源]#

基础类: BaseVectorStorage

一个实现BaseVectorStorage用于与向量搜索引擎Qdrant交互的类。

关于Qdrant的详细信息可在以下链接获取: Qdrant

Parameters:
  • vector_dim (int) – 存储向量的维度。

  • collection_name (可选[str], optional) – Qdrant中集合的名称。如果未提供,则设置为当前时间的ISO格式。(默认: None)

  • url_and_api_key (Optional[Tuple[str, str]], optional) – 包含用于连接远程Qdrant实例的URL和API密钥的元组。 (默认值: None)

  • path (可选[str], 可选) – 用于初始化本地Qdrant客户端的目录路径。(默认: None)

  • distance (VectorDistance, optional) – 用于向量比较的距离度量标准(默认:VectorDistance.COSINE

  • delete_collection_on_del (bool, optional) – 标志位,用于确定在对象销毁时是否应删除集合。 (默认值: False)

  • **kwargs (Any) – 用于初始化QdrantClient的额外关键字参数。

注意事项

  • 如果提供了url_and_api_key,它将优先使用,客户端将尝试通过URL端点连接到远程Qdrant实例。

  • 如果未提供url_and_api_key但给出了path,客户端将使用本地路径来初始化Qdrant。

  • 如果既没有提供url_and_api_key也没有提供path,客户端将使用内存存储(“:memory:”)进行初始化。

add(records: List[VectorRecord], **kwargs) None[来源]#

将向量列表添加到指定的集合中。

Parameters:
  • vectors (List[VectorRecord]) - 要添加的向量列表。

  • **kwargs (Any) – 额外的关键字参数。

Raises:

RuntimeError - 如果在添加过程中出现错误。

clear() None[来源]#

从存储中移除所有向量。

property client: QdrantClient#

提供对底层向量数据库客户端的访问。

close_client(**kwargs)[来源]#

关闭与Qdrant存储的客户端连接。

delete(ids: List[str] | None = None, payload_filter: Dict[str, Any] | None = None, **kwargs: Any) None[来源]#

根据ID或有效载荷过滤器从集合中删除点。

Parameters:
  • ids (Optional[List[str]], optional) – 待删除向量的唯一标识符列表。

  • payload_filter (可选[Dict[str, Any]], 可选) - 用于 删除符合特定条件点的负载过滤器。如果 提供了ids,除非明确组合使用, 否则payload_filter将被忽略。

  • **kwargs (Any) – 传递给QdrantClient.delete的额外关键字参数。

示例

>>> # Delete points with IDs "1", "2", and "3"
>>> storage.delete(ids=["1", "2", "3"])
>>> # Delete points with payload filter
>>> storage.delete(payload_filter={"name": "Alice"})
Raises:
  • ValueError – 如果既没有提供ids也没有提供payload_filter

  • RuntimeError – 如果在删除过程中出现错误。

注意事项

  • 如果提供了ids参数,将直接删除这些ID对应的点

    此时会忽略payload_filter参数。

  • 如果未提供ids但提供了payload_filter,则

    符合payload_filter的点将被删除。

delete_collection() None[来源]#

删除Qdrant存储中的整个集合。

load() None[来源]#

加载托管在云服务上的集合。

query(query: VectorDBQuery, filter_conditions: Dict[str, Any] | None = None, **kwargs: Any) List[VectorDBQueryResult][来源]#

基于提供的查询在存储中搜索相似向量。

Parameters:
  • query (VectorDBQuery) – 包含搜索向量和要检索的相似向量数量的查询对象。

  • filter_conditions (Optional[Dict[str, Any]], optional) – 一个字典,用于指定筛选查询结果的条件。

  • **kwargs (Any) – 额外的关键字参数。

Returns:

从存储中检索到的向量列表

基于与查询向量的相似性。

Return type:

列表[VectorDBQueryResult]

status() VectorDBStatus[来源]#

返回向量数据库的状态。

Returns:

向量数据库状态。

Return type:

VectorDBStatus

update_payload(ids: List[str], payload: Dict[str, Any], **kwargs: Any) None[来源]#

更新由ID标识的向量的有效载荷。

Parameters:
  • ids (List[str]) – 待更新向量的唯一标识符列表。

  • payload (Dict[str, Any]) – 待更新的payload列表。

  • **kwargs (Any) – 额外的关键字参数。

Raises:

RuntimeError – 如果在更新过程中出现错误。

class camel.storages.vectordb_storages.TiDBStorage(vector_dim: int, collection_name: str | None = None, url_and_api_key: Tuple[str, str] | str | None = None, **kwargs: Any)[来源]#

基础类: BaseVectorStorage

一个实现BaseVectorStorage用于与TiDB交互的实现。

关于TiDB的详细信息可在以下链接获取: TiDB Vector Search

Parameters:
  • vector_dim (int) – 存储向量的维度。

  • url_and_api_key (Optional[Union[Tuple[str, str], str]]) –

    一个元组

    包含用于连接TiDB集群的数据库URL和API密钥。URL格式应为:

    "mysql+pymysql://:@:/"。 TiDB不会使用API密钥,但保留此定义以实现接口兼容性。

  • collection_name (可选[str]) – 集合名称。 该集合名称将作为TiDB中的表名使用。如果未提供,则设置为当前时间的iso格式。

  • **kwargs (Any) – 用于初始化TiDB连接的其他关键字参数。

Raises:

ImportError – 如果未安装 pytidb 包。

add(records: List[VectorRecord], **kwargs) None[来源]#

将向量列表添加到指定表中。

Parameters:
  • records (List[VectorRecord]) - 要添加的向量列表。

  • **kwargs (Any) – 传递给插入操作的额外关键字参数。

Raises:

RuntimeError - 如果在添加过程中出现错误。

clear() None[来源]#

从TiDB表中移除所有向量。此方法会删除现有表,然后使用相同的模式重新创建它,以有效移除所有存储的向量。

property client: TiDBClient#

提供对TiDB客户端的直接访问。

Returns:

TiDB客户端实例。

Return type:

任何

delete(ids: List[str], **kwargs: Any) None[来源]#

从存储中删除由ID标识的向量列表。

Parameters:
  • ids (List[str]) – 待删除向量的唯一标识符列表。

  • **kwargs (Any) – 传递给删除操作的额外关键字参数。

Raises:

RuntimeError – 如果在删除过程中出现错误。

load() None[来源]#

加载托管在云服务上的集合。

query(query: VectorDBQuery, **kwargs: Any) List[VectorDBQueryResult][来源]#

基于提供的查询在存储中搜索相似向量。

Parameters:
  • query (VectorDBQuery) – 包含搜索向量和要检索的相似向量数量的查询对象。

  • **kwargs (Any) – 传递给搜索的额外关键字参数。

Returns:

从存储中检索到的向量列表

基于与查询向量的相似性。

Return type:

列表[VectorDBQueryResult]

status() VectorDBStatus[来源]#

获取TiDB表的当前状态。

Returns:

一个包含有关

表状态信息的对象。

Return type:

VectorDBStatus

class camel.storages.vectordb_storages.VectorDBQuery(query_vector: List[float], top_k: int)[来源]#

基类:BaseModel

表示对向量数据库的查询。

query_vector#

查询向量的数值表示。

Type:

浮点数列表

top_k#

从数据库中检索的相似向量的最大数量。(默认值: 1)

Type:

整数,可选

model_config: ClassVar[ConfigDict] = {}#

模型的配置,应该是一个符合[ConfigDict][pydantic.config.ConfigDict]的字典。

query_vector: List[float]#

查询向量的数值表示。

top_k: int#

从数据库中检索的顶部相似向量的数量。

class camel.storages.vectordb_storages.VectorDBQueryResult(*, record: VectorRecord, similarity: float)[来源]#

基类:BaseModel

封装了对向量数据库进行查询的结果。

record#

目标向量记录。

Type:

VectorRecord

similarity#

查询向量与记录之间的相似度得分。

Type:

浮点数

classmethod create(similarity: float, vector: List[float], id: str, payload: Dict[str, Any] | None = None) VectorDBQueryResult[来源]#

一个用于构建VectorDBQueryResult实例的类方法。

model_config: ClassVar[ConfigDict] = {}#

模型的配置,应该是一个符合[ConfigDict][pydantic.config.ConfigDict]的字典。

record: VectorRecord#
similarity: float#
class camel.storages.vectordb_storages.VectorDBStatus(*, vector_dim: int, vector_count: int)[来源]#

基类:BaseModel

向量数据库状态。

vector_dim#

存储向量的维度。

Type:

int

vector_count#

存储向量的数量。

Type:

int

model_config: ClassVar[ConfigDict] = {}#

模型的配置,应该是一个符合[ConfigDict][pydantic.config.ConfigDict]的字典。

vector_count: int#
vector_dim: int#
class camel.storages.vectordb_storages.VectorRecord(*, vector: ~typing.List[float], id: str = <factory>, payload: ~typing.Dict[str, ~typing.Any] | None = None)[来源]#

基类:BaseModel

封装了关于向量唯一标识符及其有效载荷的信息,主要用作保存到向量存储时的数据传输对象。

vector#

向量的数值表示。

Type:

浮点数列表

id#

向量的唯一标识符。如果未提供,将分配一个随机uuid。

Type:

字符串, 可选

payload#

与向量相关的任何额外元数据或信息。(默认: None)

Type:

可选[字典[str, 任意类型]], 可选

id: str#
model_config: ClassVar[ConfigDict] = {}#

模型的配置,应该是一个符合[ConfigDict][pydantic.config.ConfigDict]的字典。

payload: Dict[str, Any] | None#
vector: List[float]#