pyobvector Python SDK 接口说明
pyobvector 是 seekdb 向量存储功能的 python SDK,它提供两种使用模式:
-
pymilvus 兼容模式:使用 MilvusLikeClient 对象操作数据库,提供与轻量级 MilvusClient 兼容的常用接口。
-
SQLAlchemy 扩展模式:使用 ObVecClient 对象操作数据库,提供关系型数据库的 python SDK 扩展。
本文分别介绍了这两种模式下的使用接口与示例。
MilvusLikeClient
构造函数
def __init__(
self,
uri: str = "127.0.0.1:2881",
user: str = "root@test",
password: str = "",
db_name: str = "test",
**kwargs,
)
collection 相关接口
| API 接口 | 参数描述 | 示例 |
|---|---|---|
def create_schema(self, **kwargs) -> CollectionSchema: |
| |
def create_collection(self,collection_name: str,dimension: Optional[int] = None,primary_field_name: str = "id",id_type: Union[DataType, str] = DataType.INT64,vector_field_name: str = "vector", metric_type: str = "l2", auto_id: bool = False, timeout: Optional[float] = None, schema: Optional[CollectionSchema] = None, # Used for custom setup index_params: Optional[IndexParams] = None, # Used for custom setup max_length: int = 16384, **kwargs, ) | 创建一个表:
| client.create_collection( collection_name=test_collection_name, schema=schema, index_params=idx_params, ) |
def get_collection_stats( self, collection_name: str, timeout: Optional[float] = None # pylint: disable=unused-argument ) -> Dict: | 获取表的记录数量
| |
def has_collection(self, collection_name: str, timeout: Optional[float] = None) -> bool | 判断表是否存在
| |
def drop_collection(self, collection_name: str) -> None | 删除表
| |
def load_table(self, collection_name: str,) | 读取表元数据到 SQLAlchemy 元数据缓存
|
CollectionSchema & FieldSchema
MilvusLikeClient 通过 CollectionSchema 描述一个表的模式定义,一个 CollectionSchema 包含多个 FieldSchema, FieldSchema 描述一个表的列模式。
通过 MilvusLikeClient 的 create_schema 创建 CollectionSchema
def __init__(
self,
fields: Optional[List[FieldSchema]] = None,
partitions: Optional[ObPartition] = None,
description: str = "", # ignored in oceanbase
**kwargs,
)
参数说明如下:
-
fields:一组可选的 FieldSchema。
-
partitions:分区规则(详见使用 ObPartition 定义分区规则章节)。
-
description:与 Milvus 兼容用,在 seekdb 中暂无实际作用。
创建 FieldSchema 并注册到 CollectionSchema
def add_field(self, field_name: str, datatype: DataType, **kwargs)
-
field_name:列名称。
-
datatype:列数据类型(支持的数据类型请参见兼容性说明)。
-
kwargs:其他参数用于配置列属性,如下:
def __init__(
self,
name: str,
dtype: DataType,
description: str = "",
is_primary: bool = False,
auto_id: bool = False,
nullable: bool = False,
**kwargs,
)参数说明如下:
-
is_primary:是否是主键。
-
auto_id:是否是自增列。
-
nullable:是否允许为空。
-
使用示例
schema = self.client.create_schema()
schema.add_field(field_name="id", datatype=DataType.INT64, is_primary=True)
schema.add_field(field_name="title", datatype=DataType.VARCHAR, max_length=512)
schema.add_field(
field_name="title_vector", datatype=DataType.FLOAT_VECTOR, dim=768
)
schema.add_field(field_name="link", datatype=DataType.VARCHAR, max_length=512)
schema.add_field(field_name="reading_time", datatype=DataType.INT64)
schema.add_field(
field_name="publication", datatype=DataType.VARCHAR, max_length=512
)
schema.add_field(field_name="claps", datatype=DataType.INT64)
schema.add_field(field_name="responses", datatype=DataType.INT64)
self.client.create_collection(
collection_name="medium_articles_2020", schema=schema
)