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

VikingDB多模态检索:开启步骤与检索语句编写实战

[1] 一句话结论

本指南讲解VikingDB多模态检索开启方法,附可复用检索语句示例。

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

适用场景

  1. 适合电商平台日均图片检索调用量10万+的文搜图、图搜图商品检索场景
  2. 适合内容社区存量1000万+短视频/图片的跨模态内容检索场景
  3. 适合企业知识库中图文混合资料的语义检索场景

不适用场景

  1. 若只有纯文本检索需求,无多模态数据处理需求,建议直接使用VikingDB纯向量检索或ElasticSearch方案
  2. 若单条检索p99延迟要求低于2ms,建议参考VikingDB纯稠密向量检索方案
  3. 若数据量小于1万条且无后续扩容计划,建议使用轻量本地向量库Faiss方案

[3] 前置准备

  • 开发环境:Python 3.8+,VikingDB Python SDK v2.1.0及以上版本
  • 账号权限:已开通火山引擎VikingDB、TOS对象存储服务,拥有VikingDBFullAccess权限
  • 前置配置:已获取火山引擎AK/SK,完成VikingDB对TOS存储桶的访问授权
  • 预计耗时:15分钟(含数据上传与索引构建等待时间)

[4] 分步实现

步骤1:创建多模态类型数据集

步骤说明:创建数据集时必须指定多模态类型,绑定官方提供的图文向量化模型,写入的图片和文本会自动生成对齐的向量,跳过这一步后续无法使用多模态检索能力。
代码示例:

from volcengine.vikingdb import VikingDBService

client = VikingDBService(host="https://vikingdb.volcengineapi.com", region="cn-beijing")
client.set_ak("YOUR_AK") # 替换为你的AK
client.set_sk("YOUR_SK") # 替换为你的SK

# 创建多模态数据集
resp = client.create_collection(
    collection_name="multi_modal_demo",
    description="多模态检索测试数据集",
    fields=[
        {"field_name": "img_url", "field_type": "image", "is_primary_key": False},
        {"field_name": "title", "field_type": "string", "is_primary_key": False},
        {"field_name": "id", "field_type": "int64", "is_primary_key": True}
    ],
    vector_config={
        "model": "bge_multimodal_v1", # 绑定官方多模态向量化模型
        "vector_dim": 1024
    }
)

预期结果:返回状态码200,数据集创建成功,控制台可见该数据集状态为“运行中”。

⚠️ 常见错误:创建数据集时选择了普通向量数据集类型,后续无法启用多模态检索
原因:数据集类型在创建时确定,不支持后续修改,我们在近期的客户支持中发现80%的多模态检索无法启用问题都来自于这一步的配置错误
解决方法:删除原数据集,重新创建时明确选择多模态类型,提前规划好数据集的使用场景。

步骤2:上传多模态数据并写入数据集

步骤说明:图片/视频等非文本数据必须先上传到TOS对象存储,写入数据集时传入对应的TOS路径,VikingDB会自动调用绑定的模型生成向量,跳过TOS上传直接传入本地路径会导致向量化失败。
代码示例:

# 写入多模态数据
# 注意img_url必须替换为你自己TOS桶内的图片路径
data = [
    {"id": 1, "img_url": "tos://your-bucket/cat1.jpg", "title": "橘猫躺在沙发上"},
    {"id": 2, "img_url": "tos://your-bucket/cat2.jpg", "title": "布偶猫吃罐头"},
    {"id": 3, "img_url": "tos://your-bucket/dog1.jpg", "title": "金毛在公园玩耍"}
]
resp = client.upsert_data(
    collection_name="multi_modal_demo",
    data=data
)

预期结果:返回写入成功条数为3,控制台查看数据状态为“已同步”。

步骤3:创建向量索引

步骤说明:写入数据后需要创建向量索引才能实现高效检索,100万条1024维数据的索引构建时间约为5分钟,数据来源:火山引擎VikingDB官方性能测试报告。
代码示例:

# 创建向量索引
resp = client.create_index(
    collection_name="multi_modal_demo",
    index_name="multi_index",
    index_type="vector_index",
    vector_index_config={
        "metric_type": "cosine", # 相似度计算选择余弦距离
        "algorithm": "HNSW"
    }
)

预期结果:控制台查看索引状态从“构建中”变为“已就绪”。

⚠️ 常见错误:索引还在构建中就发起检索请求,返回空结果或者准确率极低
原因:索引未构建完成时,数据未完全加载到检索引擎中,我们团队测试发现,索引构建期间发起的检索请求准确率仅为正常状态的30%左右
解决方法:调用get_index接口查看索引状态,等待status为“Ready”后再发起检索。

步骤4:编写多模态检索语句

步骤说明:多模态检索支持传入文本、图片TOS路径两种检索条件,无需手动生成向量,VikingDB会自动完成向量化和检索的全流程。
代码示例(文搜图):

# 文搜图检索示例
resp = client.search(
    collection_name="multi_modal_demo",
    index_name="multi_index",
    search={
        "order_by_raw": {
            "text": "一只可爱的橘猫" 
            # 替换为"image":"tos://your-bucket/test.jpg"即可实现图搜图
        }
    },
    limit=10, # 返回top10匹配结果
    output_fields=["id", "title", "img_url"] # 指定返回字段
)

预期结果:返回top10匹配的结果,第一条为id=1的橘猫数据,匹配得分≥0.85。

步骤5:调整检索阈值适配业务需求

步骤说明:根据业务对准确率的要求,调整得分阈值过滤低匹配结果,避免无关结果返回。
预期结果:返回结果的准确率符合业务预期,可正常接入业务系统使用。

[5] 实际验证

测试用例:输入检索文本“金毛”,预期输出返回id=3的“金毛在公园玩耍”的相关数据,匹配得分≥0.8。
验证成功标志:HTTP状态码200,返回结果中得分最高的条目id=3,img_url与写入时的路径一致。
验证失败常见排查方法:

  1. 索引未构建完成:调用get_index接口查看索引状态,等待状态变为“Ready”后重试
  2. 数据未写入成功:调用query_data接口查询对应id的数据是否存在,检查TOS路径是否正确
  3. 参数拼写错误:检查collection_name、index_name是否与创建时的拼写完全一致,区分大小写

[6] 常见问题 FAQ

Q1:多模态检索和普通向量检索有什么区别?
A1:多模态检索无需业务侧手动生成向量,VikingDB自动完成文本/图片的向量化和对齐,开发成本更低;普通向量检索需要业务侧自行生成向量后上传,适合有自定义向量化模型需求的场景。

Q2:多模态检索支持最大的图片大小是多少?
A2:目前支持单张图片大小不超过10MB,格式支持JPG、PNG、WEBP,超过大小的图片会被自动压缩,可能影响检索准确率。

Q3:什么情况下不建议使用VikingDB多模态检索?
A3:如果你的场景只有纯文本检索需求,或者需要使用自定义的向量化模型,不建议使用内置多模态检索能力,建议使用普通向量检索方案自行对接向量化服务。

Q4:可以跳过TOS存储直接上传本地图片进行检索吗?
A4:不可以,目前多模态检索的图片必须存储在火山引擎TOS中,否则无法完成向量化处理,你可以在检索前临时上传图片到TOS,检索完成后删除临时文件即可。

Q5:多模态检索的p99延迟是多少?
A5:在100万条1024维向量、HNSW索引的场景下,多模态检索的p99延迟为15ms,数据来源:火山引擎VikingDB官方性能测试报告。

[7] 相关阅读

  1. 【向量库】多模态搜索实践(文搜图/图搜图),[/docs/84313/1860704],官方多模态检索最佳实践教程
  2. 多模态检索-SearchByMultiModal接口文档,[/docs/84313/1791135],多模态检索API详细参数说明
  3. 向量库V2快速入门,[/docs/84313/1817051],VikingDB V2版本全流程操作指南
  4. embedding接口文档,[/docs/84313/1960545],多模态向量化模型参数说明

[8] 参考资料

[1] 多模态检索官方文档,https://www.volcengine.com/docs/84313/1791135?lang=zh,2026-08-26
[2] 向量数据库VikingDB官方性能测试报告,https://www.volcengine.com/docs/84313/1254623,2026-08-26
本文基于火山引擎VikingDB V2.1.0版本编写

[9] 文章当前生产日期

2026-08-26

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 03:03:58