You need to enable JavaScript to run this app.
文档中心
Viking AI 搜索

Viking AI 搜索

复制全文
下载 pdf
快速入门(视频指引)
搭建一个图文多模态AI搜索引擎
复制全文
下载 pdf
搭建一个图文多模态AI搜索引擎

说明

Viking AI 搜索是一款基于生成式 AI 的企业级 AI 搜索产品,基于大模型的多模态语义表征和理解能力,结合字节跳动信息检索领域多年最佳实践,为客户提供开箱即用的 AI 搜索搭建平台服务,帮助客户轻松搭建和集成端到端的多模态图文搜索和推荐能力。

本篇教程将带您了解如何从零开始,一步步创建一个属于您自己的 AI 搜索应用。请按照我们的指引进行操作,您将快速掌握核心的配置流程。

创建AI搜索应用

开通AI搜索服务后 ,即可创建一个AI搜索应用。它将作为您后续所有数据配置和体验配置的基础。创建应用演示录屏说明

  1. 在AI搜索控制台中,转到应用管理页面。
  2. 点击创建应用填写应用名称,完成应用创建。

创建数据集

成功创建应用后,我们需要为其指定数据来源。这里,我们将演示如何创建一个全新的数据集,让您熟悉完整的操作流程。创建数据集主要包含三个环节:上传数据,配置数据集字段策略,以及(作为可选项)利用大语言模型来生成新字段。

上传数据

设置数据集名称并上传数据样例用于解析数据字段和生成配置,创建完成可应用于后续配置策略。上传数据演示录屏说明

  1. 填写数据集名称,为您的数据集编辑一个名称。
  2. 上传数据,在这里上传一部分数据样本。将帮助系统自动识别数据字段并生成初始配置。请放心,这只是用于配置预览,您可以稍后决定是否将这些数据正式添加入数据集。系统支持两种上传方式,您可点击上传控件下方的切换按钮来选择您偏好的方式:

说明

  • 必须包含唯一标识符:每条记录必须包含一个String或Int类型的唯一ID字段,作为检索基础
  • 多条数据的schema一致:同名字段格式冲突会导致报错
  • 支持多层次数据结构:系统可处理最深3层的嵌套对象,能够有效索引和检索深层属性
  • 图片数据上传:您可以上传多个图片字段,字段类型为String或Array ,字段内容为图片URL(或URL列表),请确保URL可公网访问
  • 图像资源处理:支持您使用URL引用的方式传入图片,图片需要在专门的JSON属性内上传,建议图片大小控制在5MB以下
  1. 上传JSONL文件:点击/拖拽JSONL文件,格式需遵循标准的JSONL规范,按行写入多条数据,文件大小不超过10MB。
  2. 粘贴JSON数据:使用JSON对象(或对象列表Arrayof Objects)格式,粘贴单条或多条物品数据。建议粘贴100条以内数据,请您在输入时必须遵循标准JSON格式,下方的示例展示了我们所要求的标准 JSON 格式:
[
  {
    "item_id": "product_123", 
    "name": "新款时尚连衣裙",
    "price": 299.00,
    "current_price": 249.00,
    "description": "优雅修身,适合各种场合。",
    "images": [
      {
        "image_url": "https://example.com/images/dress_1.jpg"
      },
      {
        "image_url": "https://example.com/images/dress_2.jpg"
      } 
    ],
    "category": "女装",
    "key_words": ["连衣裙", "时尚", "优雅", "修身", "女装"]
  },
  {
    "item_id": "product_456",
    "name": "智能运动手表",
    "price": 599.00,
    "current_price": 559.00,
    "description": "监测心率、步数、睡眠等,多种运动模式。",
    "images": [
      {
        "image_url": "https://example.com/images/watch_1.jpg"
      }
    ],
    "category": "智能设备",
    "key_words": ["智能手表", "运动手表", "心率监测", "步数", "睡眠"]
  }
] 
  1. 上传/输入完成后,点击下一步,进入配置数据部分。

配置数据集字段策略

对关联的数据源进行字段的策略配置,用于控制每个数据字段在搜索中被如何理解与使用。配置字段演示录屏说明:

  1. 系统已根据上传的样本数据,自动识别并预填了数据集描述、字段名、字段类型字段用途(如是否可搜索可筛选可用于搜索补全)以及是否适用于图搜图等策略。
  2. 请您检查这些自动生成的配置。您可以依据下方的说明,根据您的具体需求,对字段名、字段类型、解释字段含义、字段属性 以及各项策略(可搜索可筛选可补全图搜图 等)进行调整和确认,以达到理想的搜索应用效果。
    • 配置字段描述:字段描述将在生成物品语义表征时起到重要作用,用来去表征字段的语义,建议将搜索、筛选中用到的字段都配置简单的字段描述。
    • 配置字段属性:字段属性是定义字段的特殊处理方式,您必须配置一个唯一标识,对于图片类(url)字段,系统将自动提取视觉特征进行多模态理解与匹配,因此正确配置可以显著提升搜索相关性以及多媒体展示效果。
    • 配置为可被搜索的字段:字段中的语义信息将包含在物品的语义表征中参与检索,建议将物品的标题、简介、关键词、类型(品类)、价格、图片(如有)等数据 均作为语义信息参与检索。
    • 配置为图搜图字段:

      注意

      此字段必须已被标记为“可被搜索的字段”,并且其字段属性需为“图片链接“。

      • 勾选此选项即可让该字段中的图片支持被“以图搜图”。您可以根据具体的应用场景来决定:对于数据中所有符合条件的图片链接字段(例如“产品主图”、“用户头像”、“场景照片”等),您可以选择性地启用此功能,从而精确控制哪些类型的图片能够响应用户的图片搜索请求。
    • 配置为用于筛选的字段:将字段用作在线搜索时(调用接口时)进行筛选,支持数值类字段(Float, Int),布尔值(Bool),字符串(String)和字符串列表(Array) 。
    • 配置为用于搜索补全的字段:如果您希望集成搜索框搜索联想,则可以将数据中的一些文本字段配置为搜索联想(autocomplete)的联想词源,每条数据中选中的字段值都会作为联想词进入索引用于调用搜索联想接口的数据源。支持字符串和字符串列表格式的数据。
  3. 配置完成后您可以在完成配置按钮旁边勾选是否保存样例数据
  4. 点击完成配置,成功创建数据集。

配置完成并生效后,系统会自动进行数据语义信息的分析和索引处理。

Beta 使用大模型合成新字段

说明

什么时候需要?
您希望大模型结合物品内的图文数据去增强和丰富物品数据内容,比如:

  • 图片中包含大量的文本语义信息,希望可以被检索到
  • 希望可以使用物品标题 、描述等去生成一些搜索补全词
  • 综合物品中的图文数据生成关键词、描述,在返回搜索列表时对用户展示
  • ....

利用使用大模型合成新字段功能,可在配置数据集时,借助 AI 自动从现有图文数据中创造有价值的新信息。

  1. 配置数据集时,点击使用大模型合成新字段可选择使用图文数据基于大模型生成新字段。
  2. 启用此功能后,您只需选择一个增强类型。​系统便会据此自动处理数据,并为您建议新字段的名称、来源和描述。请在应用前检查并可按需编辑系统生成的内容,确保新字段的设置精准满足您的需求,从而达到最佳效果。
    • 物品描述:使用物品的文本或图片字段生成一段描述性文本(String类型),用于整合物品的多类信息来丰富可检索数据。
    • 关键词:使用物品的文本或图片字段生成多个关键词(Array),用于丰富可检索数据。
    • Query列表(检索补全词):使用物品的文本或图片字段生成多个query(Array),用于丰富搜索补全数据,或在搜索中进行query-query匹配。
      当物品中存在图片时(比如商品详情页描述、带文字的图片内容等),建议结合标题、图片一起做来源字段,生成描述和关键词一起参与搜索。
  3. 点击确定完成配置,配置完成后,可按需将生成的新字段设置为可被搜索的字段、用于筛选的字段和用于补全的字段。

配置应用

成功配置数据集后,在数据集创建成功提示框中点击继续配置应用,进入应用的数据配置界面。应用配置演示录屏说明

  1. 点击生效配置以启动索引构建。待索引完成后,您的应用即可体验基础搜索。
  2. 若要导入更多数据,请查阅导入数据部分,使用文件上传API 方法导入。

体验多模态搜索

至此,您已完成应用创建、数据集配置及数据导入的所有基础步骤。现在,您的 AI 搜索应用已准备就绪,可以开始体验其多模态搜索功能了。您可以在应用页面的体验配置中进行搜索与对话的在线测试。
搜索演示录屏说明:


体验应用的多模态搜索功能时,您可以尝试在搜索框输入文本内容发起查询,或使用其他支持的方式(如上传图片)。
对话演示录屏说明

测试 AI搜索助手对话交互时,您可以直接使用自然语言进行提问,AI 搜索助手会根据当前数据集的内容来回应您。
如果希望进一步对用户端的搜索体验进行微调(例如搜索结果的展示方式、数量等),请参考我们的配置和体验对话助手章节,那里有关于调整体验参数的详细指南。
在您测试体验配置后,若效果满意,可以点击界面右上角生效当前配置,将其正式部署到线上环境。您可通过调用搜索 API 或对话搜索 API 将具备新配置的搜索服务集成到您的应用中。

导入数据

数据集配置完成后,如果您希望为其导入更多数据(例如,导入完整数据或进行增量更新),请按以下步骤操作

  1. 返回到您的数据集列表
  2. 找到您想要添加数据的目标数据集
  3. 点击查看进入该数据集的详情页面。
  4. 在该页面中,找到并切换到 数据导入标签页。

在这里,您会看到系统提供的两种主要数据导入方式(通过API导入导入本地JSONL文件),可用于后续的数据添加

  1. 导入本地 JSONL 文件
  • 您可以直接在界面上操作,通过点击/拖拽上传文件
    • 必须严格遵循标准的 JSONL 规范, 单个上传的 JSONL 文件大小不能超过 10MB
  1. 通过 API 导入
  2. 按照 Access Key(密钥)管理的方式获取AK/SK访问秘钥后,使用 Access Key 构造签名,具体方法请参见签名方法(推荐使用火山引擎提供的多语言官方SDK来进行构造签名),签名用到的AI搜索平台相关字段信息:
Service:aisearch
Region:cn-beijing
  1. 在 HTTP 请求 header 中添加 Authorization 为构造的签名字符串,调用数据写入接口导入物品数据
curl -X POST 'https://aisearch.cn-beijing.volces.com/api/v1/dataset/dataset_ID/write' \ 
  -H 'Content-Type: application/json' \ 
  -H 'Authorization: 签名字符串' \ 
  -d '{ 
  "fields": JSON object list
}'

dataset_ID**:​创建数据集时控制台自动生成的数据集ID,可在控制台查看
签名字符串**:​使用签名方法构造的签名字符串
JSON object array**:​上传的数据列表,可同时用 JSON object array 的格式上传多条数据。一次支持上传 10000 条数据,总请求体不大于 10MB。注意上传的 JSON 对象必须遵循您创建数据集时定义并保存的 schema。
数据格式要求:
* 必须包含一个可以作为唯一标识String或Int类型字段
* 可以上传多个图片字段,字段类型为String或Array ,字段内容为图片URL(或URL列表),请确保URL可公网访问

说明

  • 图片尺寸建议不超过2048px*2048px
  • 单图片大小建议不超过5MB
  • 图片过大将影响数据入库效率和应用中的索引效率

您可以通过调用我们提供的特定 API 接口来实现数据的编程方式导入、更新或删除。具体的 API 使用方法、端点、参数及认证方式,请查阅相关的 API 文档

使用API集成搜索

在搜索框中集成直接搜索

调用Search接口进行检索

curl -X POST 'https://aisearch.cn-beijing.volces.com/api/v1/application/${application_id}/search' \
  -H 'Content-Type: application/json' \
  -H 'Authorization: 签名字符串' \
  -d '{
    "query": {
        "text": "query文本字符串"
        "image_url":image文件
    },
    "page_number": 搜索页码,从 1 开始,
    "page_size": 每页搜索结果的数量,
    "user": {
        "user_id": 用户ID
    },
    "filter": 搜索过滤条件
    "dataset_id": 指定的数据集ID
}'

application_id:您创建的应用ID
query文本字符串:用字符串的形式传入用户输入的query文本
image文件:用base64的形式传入用户上传的,用于图片搜索的图片
搜索页码,从 1 开始:搜索页码,可用于列表分页功能,必传项,从 1 开始
每页搜索结果的数量:搜索每页的数据量,必传项
用户ID:上传此次调用对应的用户ID,非必传项
搜索过滤条件:JSON对象格式的过滤语句,在搜索时对召回的物品数据进行过滤筛选,使用前请确认被过滤的字段已经在应用配置中配置为了可筛选字段。过滤在API参数中的传入方式见API参考:Search - 搜索
指定的**数据集ID: 您创建的数据集ID,必传项

接口返回示例:

{ 
  "request_id": "25ee998a-5462-9385-9f18-035f1da7a6e5", 
  "result": { 
    "search_results": [ 
      { 
        "_id": "12345", 
        "display_fields": { 
          "item_id": "12345", 
          "pub_time": 1741835835, 
          "status": 1, 
          "images": [ 
            { 
              "image_url": "https://demo.com/image.jpg" 
            } 
          ], 
          "author": "Alice" 
        } 
      }, 
      { 
        "_id": "12345", 
        "display_fields": { 
          "item_id": "12345", 
          "pub_time": 1741835835, 
          "status": 1, 
          "images": [ 
            { 
              "image_url": "https://demo.com/image1.jpg" 
            } 
          ], 
          "author": "Alice" 
        } 
      }, 
      { 
        "_id": "12346", 
        "display_fields": { 
          "item_id": "12346", 
          "pub_time": 1741835836, 
          "status": 2, 
          "images": [ 
            { 
              "image_url": "https://demo.com/image2.jpg" 
            } 
          ], 
          "author": "Bob" 
        } 
      } 
    ], 
    "total_items": 300
  } 
}

使用对话搜索

根据聊天内容,动态处理闲聊,拒答,搜索等意图,再给出合适的用户回复的同时,动态地调用搜索功能并返回搜索到的物品数据。
使用对话搜索功能时,您需要自行维护会话session的唯一标识,每次调用可上传session_id:

  • 上传一个新session_id:默认开启一次新的会话。
  • 上传已有的session_id:系统自动获取会话历史,并在历史上下文的基础上继续处理用户query。

调用Chat-search接口:

curl -X POST  'https://aisearch.cn-beijing.volces.com/api/v1/application/${application_id}/chat_search' \
  -H 'Content-Type: application/json' \ 
  -H 'Authorization: 签名字符串' \ 
  -d '{
    "query": {
    "session_id": 会话ID,
    "input_message": {
        "content":
        [
        {
            "type":输入类型, 
            "text":(类型为"text"时)Query文本, 
            "image_url":(类型为"image"时)图片文件
        }
        ]
        "search_params":
        {
            "limit":返回物品列表长度 ,
            "filter": 搜索过滤条件
        }
    },
    "user": {
        "user_id": 用户ID
    },
    "enable_suggestions": true
}'

application_id**:​您创建的应用ID
会话ID**:​每次对话上传您自己定义的session_id
输入类型**:​可传入"text"或"image"
(类型为"text"时)Query文本**:​输入用户的Query文本
(类型为"image"时)图片文件**:​以base64形式上传Query图片,进行图搜
返回物品列表长度**:​返回的物品列表长度,可用于分页中每页的数据量,必传项
搜索过滤条件:key是数据集id,value是对应数据集的过滤条件。

搜索过滤条件,可根据应用数据源配置中支持过滤的字段对检索内容进行过滤。

  • 默认值为空,即不对检索内容做过滤。
  • 过滤条件支持must、must_not、range三种查询算子,支持and和or两种逻辑算子,可对查询算子进行组合。

用户ID:上传此次调用对应的用户ID,非必传项
** 对话中进行搜索暂不支持分页
Chat Search接口流式返回数据,每次返回包含以下内容:

{
 "request_id":请求ID,
 "result": 
     {
         "step": 会话处理步骤 ,
         "payload": 返回意图识别或搜索结果,
         "content": 返回大模型输出的对话文本内容
     }
}

会话处理步骤**:​返回当前的处理步骤,可返回三类:

  • "intent recognition":分析意图。
  • "tool call":调用工具。
  • "answer": 总结回答。

返回意图识别或搜索结果**:​会话步骤处于意图识别时,可返回意图识别的结果:

  • "search":搜索相关信息
  • "suggestions":搜索建议

会话步骤处于进行搜索阶段时,返回搜索结果详情,格式为一个JSON Object列表,返回物品数据唯一标识和所有字段
返回大模型输出的对话文本内容:流式返回的消息内容,多个请求的content需要拼接才能获取完整的消息。
返回示例:

{"request_id":"077d4dae-9d94-4576-944e-6aa4edf4a75b","result":{"step":"intent recognition"}}
{"request_id":"077d4dae-9d94-4576-944e-6aa4edf4a75b","result":{"step":"tool call"}}
{"request_id":"077d4dae-9d94-4576-944e-6aa4edf4a75b","result":{"payload":{"search":{"106260839":{"search_results":[{"_id":"10699","display_fields":{"category":["sop积分兑换专区","礼品兑换专区"],"detail":"\u003cp\u003e\u003cimg src=\"https://resources.amway.com.cn/product/1721294723485/10.jpg\" style=\"max-width:100%;\" contenteditable=\"false\"/\u003e\u003cimg src=\"https://resources.amway.com.cn/product/1721294723485/11.jpg\" style=\"max-width:100%;\" contenteditable=\"false\"/\u003e\u003c/p\u003e","images":["https://resources.amway.com.cn/product/99/10699/1/10699-1-1200Wx1200H.jpg?x-oss-process=image/resize,m_fixed,h_1200,w_1200"],"item_id":"10699","keywords":["成人钙镁片"],"name":"钙镁锰锌铜维D片90","skus":["10699"]},"score":0.16666666666666666},{"_id":"10573","display_fields":{"category":["sop积分兑换专区","礼品兑换专区"],"detail":"\u003cp\u003e\u003cimg src=\"https://resources.amway.com.cn/product/1721295438993/维生素C_09.jpg\" style=\"max-width:100%;\" contenteditable=\"false\"/\u003e\u003cbr/\u003e\u003c/p\u003e","images":["https://resources.amway.com.cn/product/73/10573/1/10573-1-1200Wx1200H.jpg?x-oss-process=image/resize,m_fixed,h_1200,w_1200"],"item_id":"10573","keywords":[""],"name":" 维生素C片(45片)","skus":["10573"]},"score":0.09555555555555556},{"_id":"10521","display_fields":{"category":["sop积分兑换专区","礼品兑换专区"],"detail":"\u003cp\u003e\u003cimg src=\"https://resources.amway.com.cn/product/1721294065789/11.jpg\" style=\"max-width:100%;\" contenteditable=\"false\"/\u003e\u003cimg src=\"https://resources.amway.com.cn/product/1721294065789/12.jpg\" style=\"max-width:100%;\" contenteditable=\"false\"/\u003e\u003cbr/\u003e\u003c/p\u003e","images":["https://resources.amway.com.cn/product/21/10521/1/10521-1-1200Wx1200H.jpg?x-oss-process=image/resize,m_fixed,h_1200,w_1200"],"item_id":"10521","keywords":[""],"name":"倍立健片(30片x2包)","skus":["10521"]},"score":0.0900735294117647}],"total_items":100,"query":{"text":"适合老年人吃的钙片"},"page_size":10,"page_number":1,"dataset_id":"106263733"}}}}}
{"request_id":"5e01f0b3-99d7-93af-b199-32165f8bb105","result":{"step":"answer"}}
{"request_id":"5e01f0b3-99d7-93af-b199-32165f8bb105","result":{"content":"为"}}
{"request_id":"5e01f0b3-99d7-93af-b199-32165f8bb105","result":{"content":"你"}}
{"request_id":"5e01f0b3-99d7-93af-b199-32165f8bb105","result":{"content":"推荐"}}
{"request_id":"5e01f0b3-99d7-93af-b199-32165f8bb105","result":{"content":"钙"}}
{"request_id":"5e01f0b3-99d7-93af-b199-32165f8bb105","result":{"content":"镁"}}
{"request_id":"5e01f0b3-99d7-93af-b199-32165f8bb105","result":{"content":"锰"}}
{"request_id":"5e01f0b3-99d7-93af-b199-32165f8bb105","result":{"content":"锌"}}
{"request_id":"5e01f0b3-99d7-93af-b199-32165f8bb105","result":{"content":"铜"}}
{"request_id":"5e01f0b3-99d7-93af-b199-32165f8bb105","result":{"content":"维生素"}}
{"request_id":"5e01f0b3-99d7-93af-b199-32165f8bb105","result":{"content":"D"}}
{"request_id":"5e01f0b3-99d7-93af-b199-32165f8bb105","result":{"content":"片"}}
{"request_id":"5e01f0b3-99d7-93af-b199-32165f8bb105","result":{"content":"2"}}
{"request_id":"5e01f0b3-99d7-93af-b199-32165f8bb105","result":{"content":"5"}}
{"request_id":"5e01f0b3-99d7-93af-b199-32165f8bb105","result":{"content":"0"}}
{"request_id":"5e01f0b3-99d7-93af-b199-32165f8bb105","result":{"content":"片"}}

说明

最近更新时间:2026.05.06 18:04:05
这个页面对您有帮助吗?
有用
有用
无用
无用