You need to enable JavaScript to run this app.
导航
向量库V2快速入门
最近更新时间:2025.11.20 16:04:17首次发布时间:2025.09.04 11:10:49
复制全文
我的收藏
有用
有用
无用
无用

以下最佳实践基于新版API V2,推荐使用此版本。

向量数据库 VikingDB 是构建于火山引擎的云基础设施之上的向量数据库系统,其核心功能涵盖了对机器学习模型产生的海量向量数据进行生产、存储、索引以及分析等操作。
在本指南里,我们会引导您在短短几分钟内迅速完成首个向量库的开通、配置工作,让您能够在我们的配置页面走完数据集创建、索引创建以及检索查询的全部流程。


开通向量库

分为以下三个步骤:

  1. 注册火山引擎账号。
  2. 完成实名认证。
  3. 开通向量数据库服务。

注册账号

  1. 进入 火山引擎官网,单击页面右上角的【立即注册】。
  2. 根据要求完整填写表单后即可完成注册,更多详情参考 火山引擎账号注册

实名认证

  1. 使用已注册的火山引擎账号登录 火山引擎官网
  2. 单击右上角账号名下拉框中的【账号管理】进入对应页面。
  3. 单击左侧导航中的【实名认证】,根据实际情况选择个人或者企业,并填写对应表单或上传相关材料完成实名认证,更多详情参考 实名认证

Image

开通向量数据库

登录 火山引擎控制台,找到 VikingDB,根据对应的提示按需开通 向量数据库服务。


配置向量库

第一步,创建数据集

创建数据集有两种方式:

  • 方式一:首页点击向量数据库,进入控制台的开始使用页面,单击页面上方教程栏第一步中的创建数据集
  • 方式二:首页点击向量数据库,进入控制台。在控制台左侧导航栏单击数据集,进入数据集页面,再点击左上方创建数据集

Image

Image

  1. 您可以通过对图文、视频数据的向量化直接导入已有向量两种方式创建数据集。在选择创建方式时,您可以根据数据准备的情况选择:
  • “已有向量数据” 适用于以下场景:
    • 您已经在外部完成了文本或图像等数据的向量化处理,并拥有可直接写入的向量数据。
    • 您的原始多模态数据(如图片视频)无需存储在向量库关联的对象存储TOS中,而是通过实时调用向量化服务(如 embeddingV2 API),然后仅将向量结果写入数据集。
  • ”从向量化开始“ 适用于以下场景:
    • 您尚未对数据进行向量化处理,系统会根据您配置的模型对文本、图像等字段自动进行向量化。
      本例中我们使用从向量化开始的方法创建数据集。

Image
Image
(“已有向量”写入向量,“从向量化开始”写入原始数据)

  1. 创建数据集页面填写相关参数,包括数据集基础信息、向量配置和数据库内字段。参照右图示例完成具体配置。
  2. 填写完成后单击右下角提交,​完成数据集创建流程。
(示例)

注意

  1. 如果需要添加稀疏向量字段,必须配置稠密向量字段,即稀疏向量不能单独出现。
  2. 用于向量化的字段不用填写在其他字段中;若其他字段中存在的其他 textimagevideo类型字段仅作为存储数据用途,不会用于向量化,字段名称也不能与向量化字段重复。

数据集配置项目

编号

参数名称

参数说明

1

基础信息(必填)

  • 名称为必填,别名和描述为选填

2

向量信息(必填)

  • 配置向量字段(已有向量字段)或用于向量化的字段(从向量化开始)。

3

字段配置(选填)

  • 配置非向量字段或用于向量化的字段。
  • 字段名称:使用英文字母、数字、下划线_,并以英文字母开头,不能重复。
  • 字段类型:在下拉列表选择字段类型,可选值:string、bool、list、list、int64、float32、text、image、video。
  • 默认:当字段类型不是 text、image、video时,可输入默认值。若未填写,且在数据写入时字段数据缺失,将按系统默认设置填写。

4

主键(必填)

  • 主键用于唯一标识一行数据
  • 可选择自动生成主键或从其他字段中的 string/int64 类型字段中选择一个作为主键

5

费用细则与创建数据集

  • 如果配置了向量化模型,将展示模型费用信息
  • 离线存储资源费用将在索引创建后根据存储数据量开始计费

第二步,创建索引
  1. 创建索引页面有三种进入方式:
    • 方式一:在左侧导航栏单击快速使用,单击页面上方教程栏第二步中的创建索引
    • 方式二:在左侧导航栏单击索引,进入索引页面。单击索引列表页面左上角的创建索引,进入创建索引页面。
    • 方式三:在左侧导航栏单击数据集,进入数据集页面。选择想要创建索引的数据集,单击对应数据集卡片右上角"..."按钮下的创建索引

Image
Image
Image

  1. 创建索引页面填写相关参数,包括索引基础信息和具体的索引配置
  2. 填写完成后单击右下角提交,​完成索引创建流程。

Image

第三步,写入数据
  1. 创建完数据集后,你可以根据弹出的写入数据指引向数据集中写入数据。
  2. 数据集页面,你也可以点击对应数据集卡片的写入数据按钮找到这个弹窗。

Image

数据写入现在支持在线写入、本地数据导入、从TOS添加和单条数据插入四种形式(目前视频只支持在线写入)。

点击【写入数据】进入写入页面

  1. 在线写入
    • 同步写入
    • 异步写入
  2. 本地数据导入
  3. 从TOS添加
  4. 单条数据插入

Image

第一类:在线写入

  • 同步写入

适用于在线服务数据实时写入生效场景,提供流式写入接口
写入数据:​在写入数据时请根据选择**“从向量化开始”​“已有向量数据”​**来决定上传时需要写入的参数。

写入示例:
请创建数据集、填入数据集名称、aksk、字段名、json文件地址

'''
> uv run --env-file .env python main.py
'''

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

def main() -> None:
    client = HTTPClient(
        ak=os.environ.get("VIKINGDB_AK"),
        sk=os.environ.get("VIKINGDB_SK"),
        host=os.environ.get("VIKINGDB_HOST"),  # https://www.volcengine.com/docs/84313/1792715
        region=os.environ.get("VIKINGDB_REGION"),
    )

    req_method = "POST"
    collection_name = os.environ.get("VIKINGDB_COLLECTION")
    index_name = os.environ.get("VIKINGDB_INDEX")

    upsert_body = {
        "collection_name": collection_name,
        "data": [{"text": "hello world"}],
    }
    upsert_resp = client.do_req(
        req_method=req_method,
        req_path="/api/vikingdb/data/upsert",
        req_params=None,
        req_body=upsert_body,
    )
    print(f"[upsert status={upsert_resp.status_code} body={upsert_resp.text}]\n===")

    search_body = {
        "collection_name": collection_name,
        "index_name": index_name,
        "limit": 1,
    }
    search_resp = client.do_req(
        req_method=req_method,
        req_path="/api/vikingdb/data/search/random",
        req_params=None,
        req_body=search_body,
    )
    print(f"[search status={search_resp.status_code} body={search_resp.text}]")

class HTTPClient:
    def __init__(self, ak: str, sk: str, host: str, region: str):
        self.ak = ak
        self.sk = sk
        self.host = host
        self.region = region

    def prepare_request(self, method: str, path: str, params=None, data=None) -> Request:
        r = Request()
        r.set_schema("https")            # ensure 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", self.region)
        SignerV4.sign(r, credentials)
        return r

    def do_req(self, req_method: str, req_path: str, 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="{}://{}{}".format(req.schema, self.host, req.path),  # use the schema set above
            headers=req.headers,
            data=req.body,
            timeout=10000,
        )

if __name__ == "__main__":
    main()
  • 异步写入

完成初始化的基础上,对于已有向量数据的数据集,您可以使用在线异步写入的方式写入数据。通过设置 async 参数为true。

说明

异步写入可以提供比同步写入大10倍的写入带宽,适用于更大规模数据量级的实时更新场景。

第二类:本地数据导入

说明

支持图片文本,视频暂时不支持本地写入,正在努力更新

适用于首次建库,一次性大批量离线数据上传场景,提供大批量处理能力,速度更快。

  1. 直接导入json/parquet格式文档
  2. 选择是否忽略失败数据,若开启,单条数据写入失败,则跳过本条数据继续写入任务。

注意

本地数据导入时,如果您需要上传多模态信息,也请上传tos地址。

第三类:​从TOS导入

说明

支持图片文本,视频暂时不支持从TOS导入,正在努力更新

  1. TOS 服务开通及授权
    • TOS 服务开通
    • 授权 VikingDB 访问
      • 授权 VikingDB 服务可以访问您的 TOS 权限。去授权

若需要上传多模态数据,请先将图片上传至TOS,并将图片的tos存储路径传入"image"字段。

{"animal_image": "tos://best-practice-pic-search-tos/pic_search_1000_images/0009fc27d9.jpg"}
  1. 选择json/parquet格式文档的TOS桶

Image

具体执行逻辑可参考如下流程图。详见【向量库】多模态搜索最佳实践
Image

第四类:​单条数据插入

此外,你还可以在数据集详情页面插入单条数据

  1. 数据集页面点击您想要写入数据的数据集卡片进入数据集详情页面,点击右上角插入数据按钮。
  2. 在弹出的插入数据弹窗内输入对应的字段值后,点击插入按钮即可完成数据插入。

Image

Image

(插入一条视频数据)

写入数据后,您可以在数据集详情页面通过主键对数据进行查询

Image

第四步,检索查询
  1. 索引列表页面操作列,单击指定索引的检索测试按钮,进入检索测试页面。

Image

  1. 检索测试页会根据您的数据集配置给出对应的测试方法。

    • 您可以输入查询向量限制(Top-K)子索引进行检索测试
    • 如果您按照上面的示例配置,在创建数据集时配置了向量化模型,您可以在输入框中输入文本来进行端到端的文本检索。
    • 检索测试将会有dense_weight参数,用于控制混合检索中稠密向量的权重。
  2. 点击查询后,页面右侧会按照输入的查询向量检索出相似的 K 个向量,查询结果默认按照 score 从高到低排序。

  3. 如果您创建了直接导入向量的数据集,且包含了稠密向量和稀疏向量的混合索引,您需要同时输入稠密向量和稀疏向量进行检索。

Image

(配置了图文向量化模型可直接进行多模态检索)

Image

(配置了视频向量化模型可直接进行视频检索)

Image

(稠密向量和稀疏向量的混合检索)

此外,我们在开始使用页面还为您准备了探索指南,您可以根据需要按照指引深入探索VikingDB向量数据库:

  • 快速入门:​了解如何开始使用并快速创建您的向量数据库。
  • 最佳实践:​学习在多模态搜索、多模态标注等高频场景下向量数据库最佳实践,帮助找到符合您场景的使用方式。
  • 常见问题:​解答您在使用过程中遇到的常见问题,提供解决方案和建议。
  • API参考:​查阅 API 的详细文档,包括 API、示例代码和集成指南,帮助您高效开发。

Image