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

向量数据库VikingDB

复制全文
下载 pdf
检索(Search)
searchByMultiModal
复制全文
下载 pdf
searchByMultiModal

概述

search_by_multi_modal 用于多模态数据检索。多模态数据检索是指向量数据库支持直接通过图文等多模态数据类型进行检索,且支持模态的组合,如文搜图、图搜图、图搜文+图等。

  • 当前支持文本、图片、视频类型的非结构化数据。
  • Collection 数据写入/删除后,Index 数据更新时间预计 20s,无法立即在 Index 中检索到。

前提条件
  • 从控制台选择了从向量化开始的数据库类型,并在创建数据集时配置了向量化字段;或通过 create_collection 接口创建数据集时,通过设置 vectorize 参数配置了 Collection 的向量化功能。
  • 通过 upsert_data 接口写入数据时,已写入 text 或 image 类型的字段名称和字段值。
  • 通过 create_index 创建索引时,已创建 vector_index 向量索引。

适用于创建向量库时选择“需要向量化”:当导入的数据是原始数据时,可以通过此接口输入文本、图片等进行检索。

请求参数

请求参数是 SearchByMultiModalRequest,其字段如下表所示。

名称类型必选描述
textOptional[str]至少填 1检索的输入文本。

image

Optional[Any]

检索的输入图片,支持:

  • TOS 链接,形如 tos://{bucket}/{object_key}。
  • Base64 编码,形如 base64://{Base64编码}。

video

Optional[Any]

子参数:

  • value:填写视频链接。类型为string。必填。格式同图片链接,支持tos/http/https
  • fps:视频抽帧帧率。类型为float。选填,默认为1.0。可选范围0.2-5.0

filter

Optional[Dict[str, Any]]

否

标量过滤条件,详见标量过滤。

  • 不填表示纯多模态检索。
  • 支持 must、must_not、range、range_out 等算子,可用 and / or 组合。

output_fields

Optional[List[str]]

否

要返回的标量字段列表。

  1. 未设置时返回集合内所有标量字段。
  2. 传入空列表表示不返回任何标量字段。
  3. 字段名必须存在于 collection schema,否则请求报错。
limitOptional[int]否限制返回条数,最大 5000。
offsetOptional[int]否分页偏移量,默认 0,过大时会出现深分页性能开销。
partitionOptional[str]否指定检索的分区名称。
advanceOptional[SearchAdvance]否高级参数集合(post_process_ops、ids_in 等),详见检索公共参数。
need_instructionOptional[bool]否控制是否让模型自动补全 instruction,豆包系列默认 True,其他模型默认 False。

返回参数
名称类型描述
request_idOptional[str]请求链路 ID。
codeOptional[str]服务返回码,Success 表示成功。
messageOptional[str]错误或提示信息。
apiOptional[str]具体调用的 API 名称。
resultOptional[SearchResult]检索结果主体,结构见下。
  • SearchResult
名称类型描述
dataList[SearchItemResult]召回到的结果列表,结构见下。
filter_matched_countOptional[int]满足过滤条件的文档总数。
total_return_countOptional[int]本次返回的结果数量。
real_text_queryOptional[str]模型可能修正后的真实查询串。
token_usageDict[str, Any]token 计量信息。
  • SearchItemResult
名称类型描述
idAny主键值。
fieldsDict[str, Any]返回的标量字段内容。
scoreOptional[float]最终相似度得分。
ann_scoreOptional[float]ANN 粗排得分。

示例

请求示例
import os

from vikingdb import IAM
from vikingdb.vector import SearchByMultiModalRequest, VikingVector

auth = IAM(
    ak=os.environ["VIKINGDB_AK"],
    sk=os.environ["VIKINGDB_SK"],
)
client = VikingVector(
    host=os.environ["VIKINGDB_HOST"],
    region=os.environ["VIKINGDB_REGION"],
    auth=auth,
    scheme="https",
)

index_client = client.index(
    collection_name=os.environ["VIKINGDB_COLLECTION"],
    index_name=os.environ["VIKINGDB_INDEX"],
)
request = SearchByMultiModalRequest(
    text="找下类似品种",
    need_instruction=True,                  # need instruction improves prompt
    image="tos://zayn-viking/kind_dog.png", # upload to tos first
    limit=3,
)
response = index_client.search_by_multi_modal(request)
if response.result:
    for item in response.result.data:
        print(item.id, item.fields.get("image"), item.score)
最近更新时间:2026.09.17 15:11:54
这个页面对您有帮助吗?
有用
有用
无用
无用