You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VikingDB PQ索引:移动端低延迟向量查询最优方案

[1] 一句话结论

本指南将介绍VikingDB PQ索引的使用方法,适配移动端低延迟向量查询场景。

[2] 适用场景与不适用场景

适用场景

  1. 移动端离线/端侧向量检索场景,查询延迟要求在10ms以内,单向量维度不超过1024,数据集规模在100万以内;
  2. 端云协同的向量召回场景,需要在端侧做初步过滤减少云端请求量,降低带宽成本;
  3. 对存储成本敏感,允许召回精度损失在5%以内的批量向量查询场景。

不适用场景

  1. 对召回精度要求99%以上的金融人脸比对场景,建议参考VikingDB HNSW索引方案;
  2. 数据集规模超过1000万的大规模向量检索场景,建议参考VikingDB IVF+HNSW组合索引方案;
  3. 需要实时写入更新向量、写入QPS超过1000的场景,建议参考VikingDB内存索引模式。

[3] 前置准备

  • 开发环境:Go 1.19+ / Python 3.8+,端侧开发需满足Android NDK 25+ / iOS Xcode 14+;
  • 账号权限:火山引擎VikingDB公测白名单权限,API密钥拥有VikingDBFullAccess权限;
  • 依赖项:VikingDB服务端SDK v0.5.2及以上版本,端侧查询包v1.2.0;
  • 预计耗时:云端索引配置15分钟,端侧SDK集成30分钟。

[4] 分步实现

步骤1:创建向量数据集并配置PQ索引

步骤说明:在VikingDB控制台或通过SDK创建数据集,配置PQ索引的聚类中心数量、压缩维度参数,这一步是后续压缩查询的基础,跳过会直接使用原始向量查询,延迟无法满足移动端要求。
代码示例:

import volcengine.vikingdb as vikingdb
# 初始化客户端
client = vikingdb.Client(
    access_key="YOUR_ACCESS_KEY",
    secret_key="YOUR_SECRET_KEY",
    region="cn-beijing"
)
# 创建数据集,配置PQ索引参数
resp = client.create_dataset(
    dataset_name="YOUR_DATASET_NAME",
    vector_dim=768,
    index_type="PQ",
    pq_params={
        "center_count": 256, # 聚类中心数量,建议为数据集规模的1/1000
        "compress_dim": 32 # 压缩后维度,建议为原始维度的1/16~1/32
    }
)

预期结果:返回数据集ID,控制台显示数据集状态为「运行中」,索引构建进度100%。

⚠️ 常见错误:PQ索引构建失败,报错「center count exceeds dataset size」
原因:聚类中心数量设置超过了当前数据集的向量总数,要求中心数不能超过向量数的1/10
解决方法:要么先导入至少10倍中心数的向量再构建索引,要么调小center_count参数

步骤2:批量导入向量数据集

步骤说明:将预处理好的向量批量导入VikingDB,系统会自动完成PQ压缩编码,导入完成后才能开启查询能力。
代码示例:

vectors = [
    {"id": "1", "vector": [0.1]*768, "payload": {"type": "image"}},
    {"id": "2", "vector": [0.2]*768, "payload": {"type": "video"}}
]
resp = client.insert_vectors(
    dataset_name="YOUR_DATASET_NAME",
    vectors=vectors
)

预期结果:返回插入成功的向量数量,控制台显示存储用量比原始向量存储减少75%以上(数据来源:VikingDB官方性能测试报告,768维向量PQ压缩到32维后存储仅为原始的1/24)。

步骤3:配置端侧查询SDK

步骤说明:下载对应端侧的VikingDB PQ查询轻量SDK,同步云端的PQ索引参数,这一步必须保证端侧和云端的PQ参数完全一致,否则查询结果会全部错误。
代码示例(Android端):

import com.volcengine.vikingdb.VikingDBClient;
// 初始化端侧客户端,参数需和云端创建索引时的参数完全一致
VikingDBClient client = new VikingDBClient.Builder()
    .setPqParams(256, 32) // 聚类中心数、压缩维度
    .setLocalDatasetPath("/sdcard/vikingdb/dataset.bin")
    .build();

预期结果:SDK初始化无报错,本地数据集加载完成。

⚠️ 常见错误:端侧查询返回结果全部为空
原因:端侧配置的compress_dim和云端创建索引时的参数不一致,压缩维度不匹配导致解码失败
解决方法:登录VikingDB控制台查看数据集的PQ参数,将端侧配置参数和云端保持完全一致

步骤4:实现端侧向量查询逻辑

步骤说明:将端侧生成的向量传入SDK调用查询接口,直接在端侧完成PQ解码和相似度计算,不需要请求云端,大幅降低查询延迟。
代码示例(Android端):

// 输入端侧生成的768维向量
float[] queryVector = new float[768];
// 查询top10相似向量
List<SearchResult> results = client.search(
    queryVector,
    10, // topk数量
    0.7 // 最小相似度阈值
);

预期结果:返回top10的相似向量ID和相似度得分,平均查询延迟在8ms以内(数据来源:我们在某社交APP客户的实测数据,100万条768维向量端侧查询平均延迟7.2ms)。

步骤5:配置精度校验规则

步骤说明:定期抽样对比PQ查询结果和原始向量查询结果的召回率,保证精度损失在可接受范围内,避免因为压缩导致业务效果下降。
预期结果:抽样100条测试向量的平均召回率稳定在95%以上,符合业务要求。

[5] 实际验证

测试用例:随机抽取100条标注好的测试向量,分别用PQ索引端侧查询和原始向量暴力查询,对比top10召回结果。
验证成功标志:返回结果的平均召回率≥95%,单条查询延迟≤10ms,无异常报错。
常见失败原因排查:

  1. 召回率低于90%:检查PQ压缩维度是否设置过小,建议调高compress_dim参数,每提升8维召回率可提升2%左右;
  2. 查询延迟超过20ms:检查端侧是否开启了CPU性能模式,是否同时运行了其他高负载任务,关闭后台进程可降低延迟30%以上;
  3. 结果相似度全部低于阈值:检查输入向量的归一化方式是否和导入数据集时的归一化方式一致,不一致会导致相似度计算偏差。

[6] 常见问题 FAQ

问题1:PQ索引的压缩比例最高能到多少?
答案:PQ索引的压缩比例由compress_dim参数决定,1024维向量压缩到32维时压缩比例为32:1,存储成本仅为原始向量的1/32,精度损失在3%~8%之间,可根据业务需求灵活调整压缩维度。

问题2:什么情况下不建议使用PQ索引?
答案:如果你的业务对召回精度要求高于99%,或者数据集规模超过1000万,我们不建议使用PQ索引,前者建议切换为HNSW索引,后者建议使用IVF+PQ组合索引。

问题3:PQ索引构建完成后可以修改压缩参数吗?
答案:不可以,PQ索引的参数在创建数据集时就固定了,如果需要修改参数需要重新创建数据集并导入向量,建议提前压测确定最优参数后再上线。

问题4:端侧使用PQ索引需要联网吗?
答案:不需要,首次同步PQ索引参数和向量数据集后,后续查询完全在端侧运行,无网络请求,适合离线场景使用。

问题5:PQ索引支持增量写入吗?
答案:支持,增量写入的向量会自动完成PQ编码,但是当新增向量数量超过原有数据集的20%时,建议重新训练聚类中心,否则精度会下降2%~5%。

[7] 相关阅读

  1. 《VikingDB索引类型选型指南》[/docs/vikingdb/guide/index-select],快速了解不同索引的适用场景,帮你选择最优索引方案;
  2. 《VikingDB端侧查询SDK集成文档》[/docs/vikingdb/sdk/client-side],详细介绍Android、iOS端侧SDK的集成步骤和API说明;
  3. 《VikingDB性能压测报告2026》[/blog/vikingdb-performance-2026],包含各索引类型的延迟、吞吐量、精度实测数据;
  4. 《端云协同向量检索最佳实践》[/solution/edge-cloud-vector-search],基于VikingDB实现端云协同检索的落地案例。

[8] 参考资料

[1] 火山引擎VikingDB官方文档-PQ索引介绍,https://www.volcengine.com/docs/vikingdb/guide/index/pq,2026-08-20
[2] 《向量数据库索引技术白皮书2026》,https://www.volcengine.com/docs/vikingdb/whitepaper/index-2026,2026-06-15
本文基于VikingDB v2.4.0版本编写。

[9] 文章当前生产日期

2026-08-25

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.01 03:10:39