You need to enable JavaScript to run this app.
文档中心
向量数据库VikingDB

向量数据库VikingDB

复制全文
数据面API
数据面API调用流程
复制全文
数据面API调用流程

概述

该文档是对数据面API请求过程的概述,在使用 API 接口前,需先做好以下准备工作。
同时介绍响应体的公共参数,供用户在调用时参考。

调用流程

1. 账号注册与服务开通

通过 注册账号及开通服务 页面操作,完成注册账号及开通服务。

2. 构造鉴权

向量库支持使用API Key 或AK、SK两种方式构造签名进行鉴权

2.1 API Key 鉴权 (推荐)

我们推荐您使用创建API Key的方式,调用火山引擎向量数据库 VikingDB。

API Key 的获取

在向量库控制台进入 API Key 页面,点击 创建 API Key 即可生成新的 Key。
Image
Image
创建时需配置以下内容:

  • API Key 名称:用于区分不同用途的 Key。
  • 可访问的数据集范围:可选择当前项目下的一个或多个数据集授予访问权限。

Image

注意

API Key 只会在创建时显示一次,请务必妥善保存。若丢失需重新创建。

Image

API Key 的权限管理 #

您可以随时在控制台调整 Key 的访问范围:

  • 为现有 Key 新增更多数据库访问权限
  • 移除指定数据库的访问权限
  • 删除 Key

API Key 的鉴权代码 #

"""
pip3 install volcengine
"""
import os

from volcengine.base.Request import Request
import requests, json

class ClientForDataApi:
    def __init__(self, api_key=None, host=None):
        """
        初始化ClientForDataApi类
        :param api_key: VikingDB的API Key
        :param host: VikingDB的API Host
        """
        if not api_key or not host:
            raise ValueError("api_key and host are required")
        self.api_key = api_key
        self.host = host

    def prepare_request(self, method, path, params=None, data=None):
        r = Request()
        r.set_shema("https")
        r.set_method(method)
        r.set_connection_timeout(10)
        r.set_socket_timeout(10)
        mheaders = {
            'Accept': 'application/json',
            'Content-Type': 'application/json',
            'Host': self.host,
            'Authorization': f'Bearer {self.api_key}',
        }
        r.set_headers(mheaders)
        if params:
            r.set_query(params)
        r.set_host(self.host)
        r.set_path(path)
        if data is not None:
            r.set_body(json.dumps(data))
        return r

    def do_req(self, req_method, req_path, req_params, req_body):
        req = self.prepare_request(method=req_method, path=req_path, params=req_params, data=req_body)
        return requests.request(method=req.method, url="https://{}{}".format(self.host, req.path),
                                  headers=req.headers, data=req.body, timeout=10000)

if __name__ == '__main__':
    client = ClientForDataApi(
        api_key=os.environ.get("API_KEY", "*"),  # 替换为您的 api_key,或通过环境变量 API_KEY 传入
        host="api-vikingdb.vikingdb.cn-beijing.volces.com",  # 替换为您所在的域名
    )
    req_method = "POST"
    req_params = None
    req_path = "/api/vikingdb/data/fetch_in_collection"  # 替换为当前操作url
    req_body = {
        "collection_name": "my_collection",  # 替换为当前参数
        'ids': [1, 2, -1]
    }
    result = client.do_req(req_method=req_method, req_path=req_path, req_params=req_params, req_body=req_body)
    print("req http status code: ", result.status_code)
    print("req result: 
", result.text)

2.2. AK/SK 密钥获取

在调用火山引擎向量数据库 VikingDB 的各个能力之前,确保您已生成访问密钥 Access Key。
Access Key 包括 Access Key ID(简称为 AK) 和 Access Key Secret(简称为 SK)。其中,AK用于标识用户,SK用于验证用户的密钥,请您妥善保管。
AK/SK 密钥获取方式如下,更多详情请参考 Access Key(密钥)管理

  1. 单击右上角账号名下拉框中的【密钥管理】进入对应页面。
  2. 单击【新建密钥】按钮,可获取 AK/SK,可以此为凭证调用上述已接入应用的接口。

Image

注意

安全起见,建议新建子账户,并使用子账户的 AK/SK。

签名生成

签名是什么?
签名是API请求中的一串经过计算得到的编码字符串,它用于身份认证和防止数据被篡改。
签名获取了就能一直用吗?
签名不像ak、sk,每个请求的签名都是独立且临时的,一个签名只能用于一次特定的请求,不能长期固定使用。
在下面调用示例中prepare_request即为鉴权函数。
调用示例(以Python为例)
调用在数据集中点查的接口示例
说明:运行该示例请填入ak sk、host、action和body,其中action和body见接口文档。

"""
pip3 install volcengine
"""
import os

from volcengine.auth.SignerV4 import SignerV4
from volcengine.Credentials import Credentials
from volcengine.base.Request import Request
import requests, json

class ClientForDataApi:
    def __init__(self, ak, sk, host):
        self.ak = ak
        self.sk = sk
        self.host = host

    def prepare_request(self, method, path, params=None, data=None):
        r = Request()
        r.set_shema("https")
        r.set_method(method)
        r.set_connection_timeout(10)
        r.set_socket_timeout(10)
        mheaders = {
            'Accept': 'application/json',
            'Content-Type': 'application/json',
            'Host': self.host,
        }
        r.set_headers(mheaders)
        if params:
            r.set_query(params)
        r.set_host(self.host)
        r.set_path(path)
        if data is not None:
            r.set_body(json.dumps(data))
        credentials = Credentials(self.ak, self.sk, 'vikingdb', 'cn-beijing')
        SignerV4.sign(r, credentials)
        return r
        
    def do_req(self, req_method, req_path, req_params, req_body):
        req = self.prepare_request(method=req_method, path=req_path, params=req_params, data=req_body)
        return requests.request(method=req.method, url="http://{}{}".format(self.host, req.path),
                                  headers=req.headers, data=req.body, timeout=10000)

if __name__ == '__main__':
    client = ClientForDataApi(
        ak = "*",#替换为您的ak
        sk = "*",#替换为您的sk
        host = "api-vikingdb.vikingdb.cn-beijing.volces.com",#替换为您所在的域名
    )
    req_method = "POST"
    req_params = None
    req_path = "/api/vikingdb/data/fetch_in_collection"#替换为当前操作url
    req_body = {
        "collection_name": "my_collection", #替换为当前参数
        'ids': [1, 2, -1]
    }
    result = client.do_req(req_method=req_method, req_path=req_path, req_params=req_params, req_body=req_body)
    print("req http status code: ", result.status_code)
    print("req result: 
", result.text)

支持的域名和Region

详见:地域和访问域名(Endpoint)

Region名称

域名

cn-beijing

api-vikingdb.vikingdb.cn-beijing.volces.com

cn-shanghai

api-vikingdb.vikingdb.cn-shanghai.volces.com

cn-guangzhou

api-vikingdb.vikingdb.cn-guangzhou.volces.com

响应体公共参数介绍

参数名

类型

说明

request_id

string

请求id

code

string

操作状态码。成功则为"Success",否则为错误码短语。遵循"Xxx"或"Xxx.Yyy"格式。

message

string

操作执行信息。成功则为"The API call was executed successfully.",否则为错误信息。遵循完整的英文语句表达。

result

map

如果操作没有结果或不需要结果,则返回的 result = null

最近更新时间:2026.03.10 14:12:55
这个页面对您有帮助吗?
有用
有用
无用
无用