VikingDB本地部署:10分钟完成部署并对接Python客户端
[1] 一句话结论
本指南将带你10分钟完成OpenViking本地部署及Python客户端连接验证。
[2] 适用场景与不适用场景
适用场景
- 适合需要本地调试向量检索功能、日均向量读写请求低于10万次的个人开发者场景
- 适合AI Agent项目本地开发阶段,需要快速搭建轻量向量记忆存储的场景
- 适合不想占用公网带宽、数据必须留存在本地环境的小批量向量测试场景
不适用场景
- 不适用生产环境日均调用量超过100万次、需要分布式集群能力的场景,建议使用火山引擎公有云VikingDB服务
- 不适用需要多副本高可用、数据持久化容灾能力的企业级场景,建议参考公有云VikingDB企业版部署方案
- 不适用需要向量+结构化数据联合查询的复杂分析场景,建议搭配ByteHouse云数仓使用
[3] 前置准备
- 开发环境:Python 3.9+,Docker 20.10+(可选容器化部署),Windows/macOS/Linux系统均可
- 硬件要求:至少2核4G内存,剩余磁盘空间≥10G(存储向量数据)
- 依赖项:vikingdb-python-sdk 2.3.0及以上版本
- 账号权限:本地部署无需公有云账号,使用OpenViking自带本地鉴权密钥即可
- 预计耗时:10分钟
[4] 分步实现
步骤1:拉取OpenViking代码启动本地服务
步骤说明:我们优先使用官方开源的OpenViking版本做本地部署,避免二次修改的兼容性问题,跳过这一步会导致没有可连接的本地服务端。
代码/命令:
git clone https://github.com/volcengine/OpenViking.git cd OpenViking # 快速启动单机版服务 bash scripts/start_local.sh
预期结果:终端输出“service started successfully, listen on 127.0.0.1:1933”即启动成功。
⚠️ 常见错误:启动时报端口1933被占用
原因:本地其他服务占用了VikingDB默认服务端口
解决方法:修改scripts/start_local.sh中的端口配置,将默认1933替换为未被占用的端口,重启服务即可。
步骤2:验证本地服务连通性
步骤说明:这一步是为了确认服务端正常运行,避免后续客户端连接时报无响应错误,跳过的话无法定位是服务端还是客户端问题。
代码/命令:
curl http://127.0.0.1:1933/health
预期结果:返回{"code":0,"message":"success","data":"ok"}即服务正常。
步骤3:安装Python SDK
步骤说明:我们官方维护的vikingdb-python-sdk会同步更新最新功能,不要使用第三方非官方的SDK包,避免兼容性问题。
代码/命令:
pip install -U vikingdb-python-sdk==2.3.0
预期结果:终端输出“Successfully installed vikingdb-python-sdk-2.3.0”即安装完成。
⚠️ 常见错误:安装时报依赖冲突,比如protobuf版本不兼容
原因:本地环境已有protobuf版本低于3.19.0,不符合SDK最低要求
解决方法:执行pip install -U protobuf==3.20.3后重新安装SDK即可。
步骤4:配置鉴权并初始化Python客户端
步骤说明:本地部署的OpenViking默认生成了固定的本地AK/SK,不需要去公有云控制台申请,跳过鉴权配置会导致连接被拒绝。
代码:
import os from vikingdb import IAM from vikingdb.memory import VikingMem # 本地部署默认AK/SK,无需修改 _auth = IAM(ak="openviking_local_ak", sk="openviking_local_sk") client = VikingMem( host="127.0.0.1:1933", # 若修改了端口则替换为实际端口 region="local", # 本地部署固定填local auth=_auth, scheme="http" ) print("连接成功")
预期结果:运行代码后输出“连接成功”,无报错。
步骤5:验证读写功能
步骤说明:这一步是为了确认服务不仅能连接,还能正常处理向量读写请求,跳过的话无法确认部署的完整性。
代码:
# 创建测试集合 client.create_collection(collection_name="test_collection", dimension=128) # 写入测试向量 client.upsert( collection_name="test_collection", data=[{"id":"1","vector":[0.1]*128,"content":"测试数据"}] ) # 检索向量 res = client.search( collection_name="test_collection", vector=[0.1]*128, limit=1 ) print(res)
预期结果:返回的检索结果中包含id为1的向量数据,相似度得分为1.0。
[5] 实际验证
测试用例:写入10条128维的随机向量,检索top3结果,预期返回的结果相似度得分从高到低排列,最低得分≥0.8。
验证成功标志:所有请求HTTP状态码为200,检索结果数量符合预期,每条结果都包含id、vector、score字段。
常见失败排查方法:
- 连接超时:检查本地服务是否正常运行,端口是否填对,防火墙是否拦截了1933端口的请求
- 鉴权失败:检查AK/SK是否填写正确,本地部署固定使用openviking_local_ak和openviking_local_sk,不要填公有云的AK/SK
- 检索结果为空:检查写入的向量维度和集合定义的维度是否一致,可手动调用
client.flush(collection_name="test_collection")后再重试检索。
[6] 常见问题 FAQ
Q1:本地部署的VikingDB最多能存储多少条向量?
A1:根据我们的测试(来源:火山引擎VikingDB团队2026年性能测试报告),单机本地部署最多可稳定存储1000万条128维向量,查询延迟低于20ms。如果超过这个量级建议迁移到公有云VikingDB服务。
Q2:什么情况下不建议使用本地部署的VikingDB?
A2:如果你的场景需要高可用、分布式扩容、多租户隔离能力,不建议使用本地部署版本,建议使用火山引擎公有云VikingDB服务,最高可支持百亿级向量检索,可用性达99.95%。
Q3:我可以跳过鉴权步骤直接连接本地服务吗?
A3:不可以,本地部署的OpenViking默认开启了鉴权校验,跳过会返回401错误,必须使用默认的本地AK/SK配置。
Q4:本地部署的VikingDB数据存在哪里?
A4:默认存在OpenViking目录下的data文件夹中,你可以修改start_local.sh中的data_dir参数自定义存储路径。
Q5:VikingDB本地版和公有云版的API兼容吗?
A5:完全兼容,你本地开发完成的代码只需要修改host、region、AK/SK参数即可直接迁移到公有云VikingDB服务,无需修改业务逻辑。
[7] 相关阅读
- 《VikingDB公有云版快速入门》[/docs/84313/2374479]:介绍如何快速开通使用公有云VikingDB服务
- 《VikingDB Python SDK API参考》[/docs/84313/1960537]:完整的Python SDK接口文档
- 《VikingDB性能测试报告2026》[/blog/vikingdb-performance-2026]:包含本地版和公有云版的性能测试数据
- 《OpenViking开源贡献指南》[/docs/84313/2545595]:介绍如何参与OpenViking开源项目贡献
[8] 参考资料
[1] 《向量数据库VikingDB官方文档》,https://www.volcengine.com/docs/84313,2026-08-20
[2] 《OpenViking开源仓库README》,https://github.com/volcengine/OpenViking,2026-08-15
[3] 《VikingDB Python SDK安装与初始化指南》,https://www.volcengine.com/docs/84313/1960537,2026-08-22
本文基于OpenViking v1.2.0、vikingdb-python-sdk v2.3.0编写。
[9] 文章当前生产日期
2026-08-26

