检索服务的数据库管理层支持对管理的数据库进行增加、删除、查询及保存操作。本文介绍各操作接口的详细信息,包括输入参数、输出参数及调用示例。

背景信息

服务部署后,数据库接口支持对数据库进行增加、删除、查询及保存操作,具体的接口列表如下:

初始化(init)

通过初始化接口设置OSS后端的存储和检索,您需要提前开通OSS服务,并提供相关配置(包括AccessKey ID,、AccessKey Secret、Endpoint及Buckets)。初始化接口的详细信息如下:
  • 输入参数说明
    参数 是否必选 描述 示例值 类型
    root_path 注册数据和特征的OSS存储地址。 "oss://ev-retrieval-data/xxx/" STRING
    oss_io_config OSS的相关配置。您需要保证该配置可以访问到root_path,且具有写权限。该参数的取值格式为oss_io_config = dict(ak_id='<yourAccessKeyId>',ak_secret='<yourAccessKeySecret>',hosts='<yourHost>',buckets=['<yourBucket>']),您需要将如下字段替换为实际值,其他部分使用上述的固定值:
    • <yourAccessKeyId>:阿里云账号的AccessKey ID。
    • <yourAccessKeySecret>:阿里云账号的AccessKey Secret。
    • <yourHost>:您OSS地域的Endpoint。OSS地域与Endpoint的对应关系,请参见公共云下OSS Region和Endpoint对照表
    • <yourBucket>:您创建的OSS存储空间(Bucket)的名称。
    oss_io_config = dict(ak_id='xxx',ak_secret='xxxx',hosts='oss-cn-zhangjiakou.aliyuncs.com',buckets=['ev-retrieval-data'])
    DICT
  • 输出参数说明
    参数 描述 示例值 类型
    status 请求是否成功,取值包括:
    • true:请求成功。
    • false:请求失败。
    true BOOL
    info 请求成功后返回执行内容的相关提示。 init db success. STRING
    error_code 请求失败时,返回的错误码。 None INT
    error_msg 请求失败时,返回的错误信息。 None STRING
  • 示例
    以下为Python代码调用接口的示例。
    import requests, json
    our_oss_io_config = dict(ak_id='xxxxxx', 
                    ak_secret='xxxxxx', 
                    hosts='oss-cn-hangzhou.aliyuncs.com', 
                    buckets='pai-vision-data-hz')
    
    datas = json.dumps({
            "input": {   
                "function_name": "init",
                "function_params": {
                    "root_path": "oss://pai-vision-data-hz/xxx",
                    "oss_io_config" : our_oss_io_config,
                }}
            })
    head = {"Authorization": "XXXX"} #服务部署成功后,PAI-EAS返回的Token密钥。
    hosts = "xxxxxx/test"  #服务部署成功后,PAI-EAS返回的服务地址。
    r = requests.post(hosts, data=datas, headers=head)

添加特征数据库(add)

您可以指定数据库名称,通过该接口添加特征数据库。以下介绍该接口的参数说明及调用示例:
  • 输入参数说明
    参数 是否必选 描述 示例值 类型
    database_name 待添加的检索数据库名称。 "" STRING
    feature_dim_dict 特征维度。 {} DICT
    feature_distance_dict 特征距离函数,取值包括:
    • SquaredEuclidean:平方欧式距离。
    • Cosine:余弦距离。
    {} DICT
  • 输出参数说明
    参数 描述 示例值 类型
    status 数据库是否添加成功,取值包括:
    • true:添加成功。
    • false:添加失败。
    true BOOL
    name 添加成功后,返回数据库名称。 "test" STRING
    info 状态提示。例如重复添加数据库,接口返回提示信息。 "" STRING
    error_code 请求失败时,返回的错误码。 None INT
    error_msg 请求失败时,返回的错误信息。 None STRING
  • 示例
    以下为Python代码调用接口的示例。
    import requests, json
    
    datas = json.dumps({
                "input": {
                    "function_name": "add",
                    "function_params": {
                        "database_name": "test_0428",
                        "feature_dim_dict": {"feature": 2},
                                            "feature_distance_dict": {"feature":"Cosine"},
                    },
                }})
    head = {"Authorization": "XXXX"} #服务部署成功后,PAI-EAS返回的Token密钥。
    hosts = "xxxxxx/test"  #服务部署成功后,PAI-EAS返回的服务地址。
    r = requests.post(hosts, data=datas, headers=head)

查询特征数据库(get)

您可以通过该接口查询当前服务下的所有特征数据库的信息,也可以指定数据库名称,查询特定数据库的信息。以下介绍该接口的调用示例及参数说明:
  • 输入参数说明
    参数 是否必选 描述 示例值 类型
    database_name 需要查询的检索数据库的名称。 "test" STRING
    verbose 返回的数据库信息是否包含详细信息,取值包括:
    • True:返回详细信息。
    • False:仅返回数据库包含的record _num数目。
    False BOOL
    get_all 是否查询服务的所有数据库,取值包括:
    • True:返回所有数据库信息,此时无需指定database_name
    • False:仅查询database_name指定的数据库信息。
    False BOOL
  • 输出参数说明
    参数 描述 示例值 Type
    success 请求是否成功,取值包括:
    • true:请求成功。
    • false:请求失败。
    true BOOL
    info 查询所有数据库,返回的内容列表。 [{"name": "test_0428", "status": true, "record_num": 0}] LIST
    error_code 请求失败时,返回的错误码。 None INT
    error_msg 请求失败时,返回的错误信息。 None STRING
  • 示例
    以下为Python代码调用接口的示例。
    import requests, json
    datas = json.dumps({
                "input": {
                    "function_name": "get",
                    "function_params": {
                        "database_name": "test_0428",
                        "get_all": False,
                        "verbose": False
                    },
                }})
    head = {"Authorization": "XXXX"} #服务部署成功后,PAI-EAS返回的Token密钥。
    hosts = "xxxxxx/test"  #服务部署成功后,PAI-EAS返回的服务地址。
    r = requests.post(hosts, data=datas, headers=head)

删除特征数据库(delete)

您可以指定数据库名称,通过该接口删除指定的特征数据库,以下介绍该接口的参数说明及调用示例:
  • 输入参数说明
    参数 是否必选 描述 示例值 类型
    database_name 待删除的检索数据库名称。 "test" STRING
  • 输出参数说明
    参数 描述 示例值 类型
    success 请求是否成功,取值包括:
    • true:请求成功。
    • false:请求失败。
    true BOOL
    status 删除是否成功,取值包括:
    • true:删除成功。
    • false:删除失败。
    true BOOL
    name 删除的数据库的名称。 "test" STRING
    info 状态提示。例如重复删除数据库,接口返回提示信息。 {"acknowledged": true} DICT/STRING
    error_code 请求失败时,返回的错误码。 None INT
    error_msg 请求失败时,返回的错误信息。 None STRING
  • 示例
    以下为Python代码调用接口的示例。
    import requests, json
    
    datas = json.dumps({
                "input": {
                    "function_name": "delete",
                    "function_params": {
                        "database_name": "test_0428",
                    },
                }})
    head = {"Authorization": "XXXX"} #服务部署成功后,PAI-EAS返回的Token密钥。
    hosts = "xxxxxx/test"  #服务部署成功后,PAI-EAS返回的服务地址。
    r = requests.post(hosts, data=datas, headers=head)

保存特征数据库(save)

对于OSS用户,每一个特征数据库需要在添加特征后手动保存,相关特征数据库会保存在初始化时设置的root_path中。以下介绍该接口的调用示例及参数说明:
  • 输入参数说明
    参数 是否必选 描述 示例值 类型
    database_name 待保存的检索数据库名称。

    如果不填写该参数,或填写的数据库不存在,则默认保存服务中所有的特征数据库。

    "test" STRING
  • 输出参数说明
    参数 描述 示例值 类型
    success 请求是否成功,取值包括:
    • true:请求成功。
    • false:请求失败。
    true BOOL
    info 保存是否成功,取值包括:
    • true:保存成功。
    • false:保存失败。
    true BOOL
    error_code 请求失败时,返回的错误码。 None INT
    error_msg 请求失败时,返回的错误信息。 None STRING
  • 示例
    以下为Python代码调用接口的示例。
    import requests, json
    
    datas = json.dumps({
                "input": {
                    "function_name": "save",
                    "function_params": {
                        "database_name": "test_0428",
                    },
                }})
    head = {"Authorization": "XXXX"} #服务部署成功后,PAI-EAS返回的Token密钥。
    hosts = "xxxxxx/test"  #服务部署成功后,PAI-EAS返回的服务地址。
    r = requests.post(hosts, data=datas, headers=head)