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

向量数据库VikingDB

复制全文
下载 pdf
Nodejs SDK
安装与client初始化
复制全文
下载 pdf
安装与client初始化

向量数据库 Viking DB 支持通过 Nodejs SDK 操作数据库。在使用 Nodejs SDK 之前,需要先完成安装 SDK 和 初始化 SDK 步骤。

前提条件
  1. 已通过 注册账号及开通服务 操作完成注册账号及开通服务。
  2. 获取安全凭证。Access Key(访问密钥)是访问火山引擎服务的安全凭证,包含Access Key ID(简称为AK)和Secret Access Key(简称为SK)两部分。可登录火山引擎控制台并前往【密钥管理】查看当前账号的 AK / SK,更多详情请参考 Access Key(密钥)管理

Image

安装 SDK

说明

推荐使用 pnpm 管理依赖,请使用 Node version >= 12。

说明

为了获得准确的类型推导,强烈建议您使用 TypeScript 进行开发,SDK 会提供完整的类型定义和自动补全。以下 demo 均使用 TypeScript 进行书写。

$ # 请安装大于等于 1.19.0 版本的 sdk
$ pnpm add @volcengine/openapi

初始化 SDK

地区(region)根据实际情况配置,华北:cn-beijing,华东:cn-shanghai,柔佛:ap-southeast-1。

说明

代码中 Your ak 及 Your sk 需要分别替换为您的 AK 及 SK,Your region替换为您使用的域名和地区。

import { vikingdb } from '@volcengine/openapi'

const vikingdbService = new vikingdb.VikingdbService({
  ak: 'Your ak',
  sk: 'Your sk',
  region: 'Your region',
})

角色扮演请求

如果是进行角色扮演请求,需要先通过 AssumeRole 获取临时的 aksk 和 sessionToken。 AssumeRole 具体看文档 https://www.volcengine.com/docs/6257/86374。

import { sts, vikingdb } from '@volcengine/openapi'  

const stsService = new sts.StsService({     
  RoleTrn: 'trn:iam::{accountId}:role/{roleName}',     
  RoleSessionName: 'TempSessionName', 
}) 

const { Result } = await stsService.AssumeRole() 

if (!Result.Credentials) {     
  return 
} 

const vikingdbService = new vikingdb.VikingdbService({     
  ak: Result.Credentials.AccessKeyId,     
  sk: Result.Credentials.SecretAccessKey,     
  sessionToken: Result.Credentials.SessionToken 
})

额外说明

类型

SDK 提供完整的类型定义,向量数据库所有元素均收敛在 vikingdb 命名空间下。其中部分公共类型直接放置在 vikingdb 命名空间下,如:vikingdb.FieldType,其余对应模块的类型均放置在对应模块的命名空间下,如: vikingdb.collection.CreateCollectionRequestvikingdb.index.IndexTypevikingdb.search.SearchResponse

响应

所有 SDK 返回值均为继承与 VikingdbResponse 的实例,调用方可以通过字段 OriginalRequestLogid 获取原始请求 body 以及请求日志 ID。
当 SDK 调用发生异常时,如果是 SDK 内部错误(即还未发出请求)时,SDK 会对外抛出错误 VikingdbError,错误实例上会有字段 CodeMessage 表示错误的标识符和信息;如果是 API 抛出的错误,SDK 会对外抛出错误 VikingdbRequestError,它继承与 VikingdbError,错误实例上会同时有 OriginalRequstLogid

import { vikingdb } from '@volcengine/openapi'

declare const service: vikingdb.VikingdbService // 替换为你初始化好的实例

try {
  const response = await service.collection.CreateCollection({
    CollectionName: 'test_collection_1',
    Description: 'collection_description', // optional
    CollectionAliases: ['collection_alias_1', 'collection_alias_2'], // optional
    Fields: [
      { FieldName: 'Id', FieldType: vikingdb.FieldType.Int64, IsPrimary: true }, // 主键字段
      { FieldName: 'Name', FieldType: vikingdb.FieldType.String, DefaultValue: 'Hello world'/* optional */ }, // 标量字段
      { FieldName: 'DenseVector', FieldType: vikingdb.FieldType.DenseVector, Dim: 4 }, // 稠密向量字段
      { FieldName: 'SparseVector', FieldType: vikingdb.FieldType.SparseVector }, // 稀疏向量字段
      { FieldName: 'Text', FieldType: vikingdb.FieldType.Text, PipelineName: 'text_bge_m3', /* optional */ }, // 文本字段
    ]
  })
  console.log(response.OriginalRequest) // 请求 API body
  console.log(response.Logid) // 请求日志 id
} catch(e) {
  if (e instanceof vikingdb.VikingdbRequestError) {
    // 请求异常
    console.log(e.Code) // 后端错误码
    console.log(e.Message) // 后端错误信息
    console.log(e.OriginalRequest) // 请求 API body
    console.log(e.Logid) // 请求日志 id
  } else if (e instanceof vikingdb.VikingdbError) {
    console.log(e.Code) // SDK 错误码
    console.log(e.Message) // SDK 错误信息
  }
}

精度

受限于 JavaScript 语言的精度限制,SDK 在处理数据时可能会导致 int64 类型和 float32 类型数据的精度存在不准确的情况。

最近更新时间:2025.09.30 16:06:34
这个页面对您有帮助吗?
有用
有用
无用
无用