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

Viking AI 搜索

复制全文
下载 pdf
最佳实践
配置和集成对话式搜索
复制全文
下载 pdf
配置和集成对话式搜索
Viking AI 搜索是一款基于生成式 AI 的企业级 AI 搜索产品,基于大模型的多模态语义表征和理解能力,结合字节跳动信息检索领域多年最佳实践,为客户提供开箱即用的 AI 搜索搭建平台服务,帮助客户轻松搭建和集成端到端的多模态图文搜索和推荐能力。 想要体验更多 Viking AI 搜索能力,点击前往:Viking AI 搜索引擎,企业搜推问一体化智能引擎​
​​
在应用中配置且生效物品数据后,您可以在体验页面中体验对话式搜索,并通过对接chat_search和search接口,在您的客户端或网页端实现与体验页面相似的交互。​
​
Replay
Play
00:00 / 00:00 Live
00:00
Fullscreen
Cssfullscreen
1x
  • 2x
  • 1.5x
  • 1x
  • 0.75x
  • 0.5x
Click and hold to drag
​
​
话式搜索提供2类交互:​
  • 在对话中搜索:专注于在对话中进行内容搜索、内容推荐,在电商、视频媒体平台的导购和推荐助手的场景中,为用户提供内容发现和内容资讯的服务。​
​
​​​
​
​
​​​
​
​
  • 打开边搜边问:在对话的同时可展示基于用户的需求搜索到的所有内容,适合在图片素材库、通类电商等场景下,为用户提供精准的推荐、问答的同时,提供可翻页的搜索列表​
​​​
本文介绍如何配置和使用Chat Search接口来集成对话和边搜边问的交互。​
配置对话搜索体验​
在对话体验页面可以看到右侧的配置栏,配置栏中展示2类配置:​
  • 通用搜索配置:控制在对话中调用搜索时的搜索策略,会同时在搜索接口和对话接口中生效​
  • 对话配置:控制对话的输出,提供对人设和回复风格的配置能力,以及对于禁答词的设置​
您可以在体验页面通过调整这些配置项来调节对话的搜索、问答效果。​
调整搜索匹配策略​
好的对话效果依赖搜索工具搜索到精确的可匹配用户意图的内容,在对话配置中您可以针对不同的数据集来调整搜索的匹配策略等,来优化搜索的效果,使搜索助手可以更精确地对用户问题做出回复。​
调整文本的匹配策略​
搜索功能中内置基于关键词和文本语义的匹配能力,您可以基于您的搜索场景微调语义匹配和关键词匹配的权重。​
​​​
提升语义匹配权重:语义匹配可以实现自然语言query中的抽象和隐含意图匹配,在对话搜索的场景下有较好的表现。​
提升关键词匹配权重:在电商、新闻场景下,适当提升关键词匹配的权重有助于提升对专属实体和术语的匹配能力(如产品名、人名地名、公司机构、科学术语等)。​
开启语义重排​
集成对话场景时建议您开启语义重排,选择召回的内容中的前N个物品,将这些物品的文本介绍内容与用户的问题做语义的相关性计算,可更好地捕捉到用户问题中的概念性、隐藏意图,并圈选出最匹配的物品内容进入回复阶段。​
​​​
​
注意:语义重排会增加搜索结果和回复返回的耗时,重排物品量和物品包含字符数越多,重排耗时越大。对话场景下建议将重排量控制在20个物品以内。​
调整对话的角色设定和风格​
对话搜索场景会默认提供助手的角色设定,并定义助手回复的语言风格基准:​
​
## 角色身份:​
作为一个值得信赖的搜索助手,你需要保持严谨、客观的立场,致力于提供具有洞察力的内容推荐和详尽的信息解答。无论用户的查询多么复杂或细致,你都会竭尽全力,以高效和友好的态度协助用户找到所需。​
​
## 回答风格:​
**清晰为先:** 撰写清晰、有效且引人入胜的内容。​
**直截了当的语言:**使用直接、明了的语言。避免使用行话、过于冗长的解释或口头禅式的填充词。​
**语气:** 适当地保持热情、生动、富有同理心且不带偏见的语气。​
**逻辑清晰且结构化的回复:**善用加粗、列表、段落来突出重点。长回复必须有清晰的结构层次,将过于复杂的内容提供简要准确的总结。​
​
如果您的场景对助手角色的名称、人设以及回复时的语言使用和语气风格有特定需求,可直接对角色设定进行修改。​
角色设定:​
定义角色的名称​
定义角色的人设(角色职能、核心性格特点等)​
... ...​
回答风格:​
回复的语言风格和语气,比如用词偏好、句式要求、口头禅等​
写作回复的详尽、精简程度​
... ...​
您可以在体验界面随时更改配置,同时体验配置更改带来的效果变更。配置调优后点击右上方 生效当前配置 按钮可以将配置生效至search和chat_search在线接口。​
集成对话式搜索​
配置完成并生效后,您可以通过接入chat_search接口集成对话式搜索体验。​
调用Chat Search接口​
调用接口时需要使用火山的AK鉴权机制生成鉴权信息,建议集成火山引擎鉴权SDK,集成方案详见:鉴权机制​
参考以下方法调用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: Bearer <签名字符符串>' \ ​
-d '{​
"session_id": "<会话ID>",​
"input_message": {​
"content": [​
{​
"type": "<content类型,text或image_url>",​
"text": "<(type为text时)Query文本>",​
"image_url": {​
"url": "<(type为image_url时)图片文件>"​
}​
}​
]​
},​
"user": {​
"_user_id": "<用户ID>"​
},​
"enable_suggestions": <是否开启建议词,默认为false>,​
"search_param": {​
"page_size": "<搜索分页的大小>",​
"dataset_ids": "<搜索数据集范围>",​
"filters": <对话搜索限制过滤条件, key为dataset_id, value为数据集的filter>​
}​
}'​
​
参数解析:​
application_id:您创建的应用ID ​
会话ID String:对话session由您的服务维护,每次新对话上传一个新建的session_id,在同一个对话中保障每次请求的session_id一致​
输入类型 (String):可传入"text"或"image" ​
  • (类型为"text"时)Query文本 (String):输入用户的Query文本 ​
  • (类型为"image"时)图片文件(String - Base64):以base64形式上传Query图片,在对话中进行以图搜图并生成回复​
当用户的输入为图片+文本,例如“{{image_file}}有没有同款商品”,在content参数中上传一个2个元素的列表,分别传入文本内容和图片Base64文件​
搜索分页大小(Int):可不传,决定调用搜索工具时分页的逻辑​
搜索过滤条件:对话中调用数据集搜索时进行预置的前置过滤,在视频媒体对话场景可通过将filter设置为仅搜索parent_content_id为空来控制仅返回父级内容。filter的写法详见:搜索接口-Filter​
用户ID(String):上传此次调用对应的用户ID,非必传项 ​
是否开启建议追问(Bool):在每次回复时给用户一些建议问题,默认开启​
​
可参考以下调用样例:​
​
curl -X POST 'https://aisearch.cn-beijing.volces.com/api/v1/application/{application_id}/chat_search' \ ​
-H 'Content-Type: application/json' \ ​
-H 'Authorization: Bearer 签名字符串' \ ​
-d '{​
"session_id": "session_id",​
"input_message": {​
"content": [​
{​
"type": "text",​
"text": "推荐一些有保湿抗衰功效的唇膏"​
}​
]​
},​
"user": {​
"_user_id": "U109287BsioaJOns05"​
},​
"enable_suggestions": true​
}'​
​
​
接口的详尽参数信息,请参考:ChatSearch - 对话搜索​
集成接口返回内容​
流式返回概述​
Chat_search接口的返回采用流式输出,接口调用后,输出流程如下:​
​​​
​
调用接口后,对话式搜索agent会经过一系列思考、判断、工具调用流程,最终执行大模型回复的输出。在回复输出之前所有步骤都会返回步骤的事件和中间过程输出,供您去监控输出流程,或在您的界面显示中间处理过程的交互。​
交互示例​
使用对话体验页面中的交互设计作为示例,讲解模型的输出内容如何集成至您自己的终端界面。​
调用搜索工具下的交互示例​
​
​​​
调用视频深度搜索工具下的交互示例​
​​​
各步骤输出​
以下针对每个步骤的输出内容进行详解。​
分析对话内容​
​
返回的字段​
介绍​
request_id ​
String​
这次请求的唯一标识,可根据 request_id 快速定位一次请求的执行。 ​
result ​
Result结构 ​
包含一次流式输出的所有输出内容,在不同的agent步骤中result的内容会有不同​
- step_info​
​
StepInfo结构 ​
Agent所处流程和流程中的输出内容​
-- step​
String​
步骤名称,在分析阶段返回"analyze requirement"​
​
返回示例:​
​
{​
"request_id": "d9bb3f4a025bfced6e75762510d76af0",​
"result": {​
"step_info": {​
"step": "analyze requirement"​
}​
}​
}​
​
​
工具调用​
调用搜索工具​
在图文数据集中,会调用搜索工具来进行多源数据检索。对于视频搜索场景,当用户在搜索媒资、推荐媒体内容等场景上,模型会触发调用搜索工具进行媒资搜索。​
​
返回的字段​
介绍​
request_id ​
String​
这次请求的唯一标识,可根据 request_id 快速定位一次请求的执行。 ​
result ​
Result结构 ​
包含一次流式输出的所有输出内容,在不同的agent步骤中result的内容会有不同​
- step_info​
​
StepInfo结构 ​
Agent所处流程和流程中的输出内容​
-- step​
​
String​
步骤名称,在此阶段返回"tool call"​
-- step_payload​
Param结构​
返回调用搜索工具时的搜索参数,包含:​
  • tool_name:search​
  • Search_request 列表,包含对多个数据集的搜索参数。每组搜索参数中包含:​
  • dataset_id:搜索的目标数据集​
  • query:模型分析、改写后的查询语句​
  • page_size:搜索工具返回的一页物品量大小​
​
返回示例:​
​
{​
"request_id": "d9bb3f4a025bfced6e75762510d76af0",​
"result": {​
"step_info": {​
"step": "tool call",​
"step_payload": {​
"param": {​
"search_requests": [​
{​
"query": {​
"text": "暖光补光的枪机"​
},​
"page_size": 10,​
"page_number": 1,​
"dataset_id": "106261599"​
}​
]​
},​
"tool_name": "search"​
}​
}​
}​
}​
​
​
调用视频深度搜索​
在视频搜索中,当分析阶段判断需要深入到视频的详细内容去做问答和详解,那么会触发视频深度检索工具,工具的调用阶段输出如下​
​
返回的字段​
介绍​
request_id ​
String​
这次请求的唯一标识,可根据 request_id 快速定位一次请求的执行。 ​
result ​
Result结构 ​
包含一次流式输出的所有输出内容,在不同的agent步骤中result的内容会有不同​
- step_info​
​
StepInfo结构 ​
Agent所处流程和流程中的输出内容​
-- step​
​
String​
步骤名称,在此阶段返回"tool call"​
-- step_payload​
Param结构​
返回调用搜索工具时的搜索参数,包含:​
  • tool_name:video search and analysis​
  • search_request列表,包含对多个视频数据集的查询参数。每组搜索参数中包含:​
  • dataset_id:搜索的目标数据集​
  • query:模型分析、改写后的查询语句​
​
返回示例:​
​
{​
"request_id": "d9bb3f4a025bfced6e75762510d76af0",​
"result": {​
"step_info": {​
"step": "tool call",​
"step_payload": {​
"param": {​
"search_requests": [​
{​
"query": {​
"text": "三体中有哪些经典台词"​
},​
"dataset_id": "106261599"​
}​
]​
},​
"tool_name": "video search and analysis"​
}​
}​
}​
}​
​
​
获取搜索结果​
在调用搜索工具和视频深度搜索工具时,会返回初步的搜索结果。​
  • 搜索工具:搜索结果给到大模型进行思考、判断并最终生成回复​
  • 视频深度搜索工具:搜索到一批媒体内容,用于后续模型进行进一步的筛选和视频知识查询​
搜索工具返回内容:​
首先返回步骤信息​
​
返回的字段​
介绍​
request_id ​
​
String​
这次请求的唯一标识,可根据 request_id 快速定位一次请求的执行。 ​
result ​
Result结构 ​
包含一次流式输出的所有输出内容,在不同的agent步骤中result的内容会有不同​
- step_info​
​
StepInfo结构 ​
Agent所处流程和流程中的输出内容​
-- step​
​
String​
步骤名称,在此阶段返回"get results"​
​
返回示例:​
​
{​
"request_id": "d9bb3f4a025bfced6e75762510d76af0",​
"result": {​
"step_info": {​
"step": "get results"​
}​
}​
}​
​
随后,使用payload返回搜索结果列表,作为中间结果输出。搜索列表中的内容会进入模型的思考和意图匹配判断,最终在输出阶段输出满足用户需求的最终结果。​
​
返回的字段​
介绍​
request_id ​
String​
这次请求的唯一标识,可根据 request_id 快速定位一次请求的执行。 ​
result ​
Result结构 ​
包含一次流式输出的所有输出内容,在不同的agent步骤中result的内容会有不同​
- payload​
​
-- search​
Search结构​
包含搜索调用的信息和搜索结果​
--- {{dataset_id}}​
String​
搜索结果所属的datasetID​
--- search_results​
SearchResults结构​
包含所有在本数据集内搜索到的结果​
--- total_items​
Int​
控制台配置的返回的搜索结果数量限制​
--- page_size​
Int​
一页返回的结果数量​
--- page_number​
Int​
返回第几页搜索结果​
--- dataset_id​
String​
搜索结果所属的datasetID​
​
返回示例:​
​
{​
"request_id": "d9bb3f4a025bfced6e75762510d76af0",​
"result": {​
"payload": {​
"search": [​
{​
"106265704": {​
"search_results": [​
{​
"_id": "WSHOE001",​
"display_fields": {​
"item_id": "WSHOE001",​
"pub_time": 1741835835​
},​
"score": 0.18181818181818182​
}​
],​
"total_items": 200,​
"query": {​
"text": "给我推荐一款女鞋"​
},​
"page_size": 1,​
"page_number": 1,​
"dataset_id": "106265704"​
}​
}​
]​
}​
}​
}​
​
​
视频深度搜索工具返回内容​
视频深度搜索工具返回以下内容​
​
返回的字段​
介绍​
request_id ​
String​
这次请求的唯一标识,可根据 request_id 快速定位一次请求的执行。 ​
result ​
Result结构 ​
包含一次流式输出的所有输出内容,在不同的agent步骤中result的内容会有不同​
- step_info​
​
StepInfo结构 ​
Agent所处流程和流程中的输出内容​
-- step​
​
String​
步骤名称,在此阶段返回"get results"​
-- step_payload​
​
--- results​
Results结构​
返回初步搜索的可能与用户问题相关的所有媒资内容,返回所有媒资内容字段​
​
返回示例:​
仅展示step_info内的结构​
​
{​
"step": "get results",​
"step_payload": {​
"type": "video",​
"results": {​
"106265704": [​
{​
"content_id": "video_900026",​
"content_type": "video",​
"parent_content_id": "collection_342534",​
"sequence_index": 26,​
"video_url": [​
"http://xxxx.mp4"​
],​
"my_title": "三体第二十六集"​
},​
{​
"content_id": "video_900027",​
"content_type": "video",​
"parent_content_id": "collection_342534",​
"sequence_index": 27,​
"video_url": [​
"http://xxxx.mp4"​
],​
"my_title": "三体第二十七集"​
}​
]​
}​
}​
}​
​
​
结果分析和判断​
获取搜索结果后,模型分析搜索结果并判断结果内的物品与用户查询的相关性,并准备输出最终回复。​
此步骤为大模型处理,耗时为秒级,您可能需要做一些等待加载交互来维持一个流畅的用户体验。​
​
返回的字段​
介绍​
request_id ​
String​
这次请求的唯一标识,可根据 request_id 快速定位一次请求的执行。 ​
result ​
Result结构 ​
包含一次流式输出的所有输出内容,在不同的agent步骤中result的内容会有不同​
- step_info​
​
StepInfo结构 ​
Agent所处流程和流程中的输出内容​
-- step​
​
String​
步骤名称,在此阶段返回"analyze results"​
​
返回示例:​
​
{​
"request_id": "d9bb3f4a025bfced6e75762510d76af0",​
"result": {​
"step_info": {​
"step": "analyze results"​
}​
}​
}​
​
​
(视频深度问答输出) 深度问答的相关视频内容​
视频深度问答链路中,模型会分析搜索结果,并锁定与用户的问题最为相关的视频或视频系列,用于进行最终的分析和回复。​
​
返回的字段​
介绍​
request_id ​
​
String​
这次请求的唯一标识,可根据 request_id 快速定位一次请求的执行。 ​
result ​
Result结构 ​
包含一次流式输出的所有输出内容,在不同的agent步骤中result的内容会有不同​
- payload​
​
-- video_deep_answer​
​
--- related_video​
返回与本次询问相关的视频内容的所有媒资字段​
​
返回示例:​
​
{​
"request_id": "9d24e069f768fca9da3f0c1e176689fb",​
"result": {​
"payload": {​
"video_deep_answer": {​
"106706135": {​
"related_video": {​
"content_id": "collection_episode_001",​
"content_type": "collection",​
"actor_list": [​
{​
"actor": "张鲁一",​
"role": "汪淼"​
},​
{​
"actor": "于和伟",​
"role": "史强"​
},​
{​
"actor": "陈瑾",​
"role": "老年叶文洁"​
}​
],​
"category": "电视剧",​
"director": "杨磊",​
"duration": 129654,​
"first_air_date": "2023",​
"genres": [​
"悬疑",​
"科幻"​
],​
"region": [​
"中国大陆"​
],​
"summary": "2005年,地球基础科学出现了异常的扰动,一时间科学界风雨飘摇,人心惶惶。离奇自杀的科学家,近乎神迹的倒计时,行事隐秘的科学边界,神秘莫测的《三体》游戏。纳米科学家汪淼被警官史强带到联合作战中心,并潜入名为“科学边界”的组织协助调查。迷雾之中,汪淼接触到一个名为ETO的组织,发现其幕后统帅竟是自杀身亡的科学家杨冬的母亲叶文洁。随着ETO与作战中心你来我往的不断博弈,汪淼和史强逐渐确定《三体》游戏中的世界真实存在。而所有事件的源起,是两个文明为了生存空间,孤注一掷的生死相逐。在联合作战中心及科学家们的共同努力下,汪淼、史强等人坚定信念、重燃希望,带领大家继续准备着在今后与即将入侵的三体人展开殊死斗争。",​
"title": "《三体》"​
}​
}​
}​
}​
}​
}​
​
​
获取回复​
当检测到step为"reply"时会开始进行输出。​
即:​
​
{​
"request_id": "d9bb3f4a025bfced6e75762510d76af0",​
"result": {​
"step_info": {​
"step": "reply"​
}​
}​
}​
​
回复阶段会输出以下内容,按搜索工具和视频深度搜索问答工具的输出分别讲解:​
​
使用content返回流式输出的回复文本 (图文搜索)​
​
返回的字段​
介绍​
request_id ​
String​
这次请求的唯一标识,可根据 request_id 快速定位一次请求的执行。 ​
result ​
​
Result结构 ​
包含一次流式输出的所有输出内容,在不同的agent步骤中result的内容会有不同​
- content​
​
String​
流式返回的字符串​
- citation​
Array [Citation 结构] ​
在需要输出引用的物品、文档内容的时候输出段落的引用溯源的物品数据列表 ,列表中每一个元素是一个Object,包含物品内容的类型、数据集ID和数据ID。在输出的内容无引用时,不输出此字段,在段落结束位置,如果该段落介绍或引用了某条媒资信息,将会返回一个列表。citation对象的返回结构如下:​
- - type​
String​
引用的数据类型的枚举,目前仅有"item":物品数据集中的物品数据 ​
- - dataset_id​
String​
引用的内容所属的数据集ID ​
- - _id​
String​
引用的物品或文档的唯一ID,对应图文物品数据集中传入的物品ID、视频数据集中的content_id的值​
​
返回示例:​
​
{"request_id":"f7d26edd3d1da65b49fccde4244629f3","result":{"content":"为"}}​
{"request_id":"f7d26edd3d1da65b49fccde4244629f3","result":{"content":"你"}}​
{"request_id":"f7d26edd3d1da65b49fccde4244629f3","result":{"content":"推荐"}}​
{"request_id":"f7d26edd3d1da65b49fccde4244629f3","result":{"content":"以下"}}​
{"request_id":"f7d26edd3d1da65b49fccde4244629f3","result":{"content":"适合"}}​
{"request_id":"f7d26edd3d1da65b49fccde4244629f3","result":{"content":"夜店"}}​
{"request_id":"f7d26edd3d1da65b49fccde4244629f3","result":{"content":"的"}}​
{"request_id":"f7d26edd3d1da65b49fccde4244629f3","result":{"content":"口红"}}​
{"request_id":"f7d26edd3d1da65b49fccde4244629f3","result":{"content":":"}}​
{"request_id":"f7d26edd3d1da65b49fccde4244629f3","result":{"content":"\\"}}​
{"request_id":"f7d26edd3d1da65b49fccde4244629f3","result":{"content":"n"}}​
{"request_id":"f7d26edd3d1da65b49fccde4244629f3","result":{"content":"-"}}​
{"request_id":"f7d26edd3d1da65b49fccde4244629f3","result":{"content":" Glam"}}​
{"request_id":"f7d26edd3d1da65b49fccde4244629f3","result":{"content":"orous"}}​
{"request_id":"f7d26edd3d1da65b49fccde4244629f3","result":{"content":" Ch"}}​
{"request_id":"f7d26edd3d1da65b49fccde4244629f3","result":{"content":"icks"}}​
... ...​
{"request_id":"f7d26edd3d1da65b49fccde4244629f3","result":{"citation":{"type":"item","dataset_id":"289112891","_id":"P19029XJSKK_0928812"}}}​
​
​
使用payload返回回答中引用的全部物品内容(图文搜索)​
​
返回的字段​
介绍​
request_id ​
String​
这次请求的唯一标识,可根据 request_id 快速定位一次请求的执行。 ​
result ​
Result结构 ​
包含一次流式输出的所有输出内容,在不同的agent步骤中result的内容会有不同​
- payload​
​
-- related_items​
Array<Objet>​
返回本次回答中引用的所有物品的全部字段,以及这些引用的物品所属的数据集​
--- _id​
String​
物品的唯一标识​
--- display_fields​
Object​
按原样返回物品的字段​
--- dataset_id​
String​
物品所属的数据集ID​
--- score​
Float​
物品的排序得分​
​
返回示例:​
​
{​
"request_id": "ba88a50a58928940c56f2399fd176045",​
"result": {​
"payload": {​
"related_items": [​
{​
"_id": "199593",​
"display_fields": {​
"description_info": {​
"articleId": "I0090",​
"bullets": [​
"• 常规版型",​
"• 系带设计",​
"• 正绒面革鞋面",​
"• COLD.RDY科技",​
"• PrimaLoft®隔层",​
"• 乙烯/乙酸乙烯酯(EVA)中底",​
"• Traxion外底",​
"• 掌跟落差:10毫米(鞋跟:30毫米 / 前掌:20毫米)"​
],​
"contents": "冬季美景,在窗外,更在野外。天气转冷时,让这款adidas徒步运动鞋相伴,助你自在探索未曾到访的风景。含COLD.RDY科技与PrimaLoft®隔层,即使偶遇潮湿环境,亦有舒适脚感伴你前行。采用Traxion外底和正绒面革鞋面,既有实用设计又含时尚气质,旨在打造经典徒步造型。\n",​
"online_date": "2023-08-31 15:48:44",​
"pdpImageUrls": [​
"https://some_domain.image.XXXXX.jpeg"​
],​
"product_id": "199593",​
"product_name": "UNITY LEA LOW 户外运动登山徒步鞋"​
},​
"score": 0.9201300550324706,​
"recall_info": [​
{​
"recall_reason": "text",​
"recall_score": 0.5273027420043945​
}​
],​
"rerank_info": {​
"is_reranked": true,​
"rerank_score": 0.9201300550324706​
},​
"dataset_id": "106264990"​
}​
}​
]​
}​
}​
}​
​
​
使用payload返回推荐问题(图文搜索)​
​
返回的字段​
介绍​
request_id ​
String​
这次请求的唯一标识,可根据 request_id 快速定位一次请求的执行。 ​
result ​
Result结构 ​
包含一次流式输出的所有输出内容,在不同的agent步骤中result的内容会有不同​
- payload​
​
-- suggestions​
Array<String>​
返回2-5个推荐用户继续追问的问题​
​
返回示例:​
​
{​
"request_id": "ba88a50a58928940c56f2399fd176045",​
"result": {​
"payload": {​
"suggestions": [​
"登山鞋的COLD.RDY科技有什么作用",​
"SEEULATER经典运动鞋价格是多少",​
"还有其他品牌的登山鞋推荐吗"​
]​
}​
}​
}​
​
​
使用content返回流式输出的回复文本(视频深度搜索)​
​
返回的字段​
介绍​
request_id ​
String​
这次请求的唯一标识,可根据 request_id 快速定位一次请求的执行。 ​
result ​
​
Result结构 ​
包含一次流式输出的所有输出内容,在不同的agent步骤中result的内容会有不同​
- content​
​
String​
流式返回的字符串​
​
返回示例:​
​
{"request_id":"e86f1ec7-1331-4f96-a412-8407944fc251","result":{"step_info":{"step":"reply"}}}​
{"request_id":"e86f1ec7-1331-4f96-a412-8407944fc251","result":{"content":"剧中"}}​
{"request_id":"e86f1ec7-1331-4f96-a412-8407944fc251","result":{"content":"虽"}}​
{"request_id":"e86f1ec7-1331-4f96-a412-8407944fc251","result":{"content":"未"}}​
{"request_id":"e86f1ec7-1331-4f96-a412-8407944fc251","result":{"content":"直接"}}​
{"request_id":"e86f1ec7-1331-4f96-a412-8407944fc251","result":{"content":"说明"}}​
{"request_id":"e86f1ec7-1331-4f96-a412-8407944fc251","result":{"content":",但"}}​
{"request_id":"e86f1ec7-1331-4f96-a412-8407944fc251","result":{"content":"可"}}​
{"request_id":"e86f1ec7-1331-4f96-a412-8407944fc251","result":{"content":"推测"}}​
... ...​
​
​
使用payload返回与用户问题相关的视频看点(视频深度搜索)​
​
返回的字段​
介绍​
request_id ​
String​
这次请求的唯一标识,可根据 request_id 快速定位一次请求的执行。 ​
result ​
Result结构 ​
包含一次流式输出的所有输出内容,在不同的agent步骤中result的内容会有不同​
- payload​
​
-- video_deep_answer​
​
--- highlights​
Array of Highlight结构 ​
返回多个视频内,与用户问题相关的看点片段和总结​
----content_id ​
String​
看点所属的视频内容ID​
----video_title ​
String​
看点所属的视频标题,返回上传的视频媒资中标注的“标题”属性的字段值​
----generated_title ​
String​
视频理解阶段生成的视频标题​
----snippets​
Array of snippet 结构​
视频中的看点片段​
​
看点(snippets)中包含的字段:​
​
字段​
介绍​
start_timestamp​
Int​
片段的开始时间戳(秒)​
end_timestamp​
​
Int​
片段的结束时间戳(秒)​
summary​
String​
片段的总结​
cover​
​
String​
片段的非黑首帧截图url,可用于封面展示​
​
返回示例:​
​
{​
"payload": {​
"video_deep_answer": {​
"106706135": {​
"highlights": [​
{​
"content_id": "video_episode_002",​
"generated_title": "物理学崩塌下的倒计时谜局与科学边界之争",​
"video_title": "",​
"snippets": [​
{​
"start_timestamp": 262,​
"end_timestamp": 322,​
"summary": "物理学不存在了",​
"cover": "XXX"​
}​
]​
},​
{​
"content_id": "video_episode_020",​
"generated_title": "混沌宇宙中的数学困局与文明新生",​
"video_title": "",​
"snippets": [​
{​
"start_timestamp": 1412,​
"end_timestamp": 1465,​
"summary": "文明的纪念碑墓碑",​
"cover": "XXXX"​
},​
{​
"start_timestamp": 1948,​
"end_timestamp": 2001,​
"summary": "物理学从未存在",​
"cover": "XXXXX"​
}​
]​
}​
]​
}​
}​
}​
}​
​
​
使用payload返回推荐问题(视频深度搜索)​
​
返回的字段​
介绍​
request_id ​
String​
这次请求的唯一标识,可根据 request_id 快速定位一次请求的执行。 ​
result ​
Result结构 ​
包含一次流式输出的所有输出内容,在不同的agent步骤中result的内容会有不同​
- payload​
​
-- suggestions​
Array<String>​
返回2-5个推荐用户继续追问的问题​
​
返回示例:​
​
{​
"request_id": "ba88a50a58928940c56f2399fd176045",​
"result": {​
"payload": {​
"suggestions": [​
"“物理学不存在了”是谁说的?",​
"杨冬的遗书还有哪些内容?",​
"“虫子从未被战胜”出自哪一集?"​
]​
}​
}​
}​
​
​
在对话搜索中实现边搜边问​
边搜边问体验指的是在对话式搜索的过程中,在对话之外展示每次对话触发搜索的全部搜索列表。对话助手起到辅助搜索和提供答案的作用,用户可以在对话过程中基于模型的回复引导逐步细化和发散搜索需求,全部搜索结果的展示交互使用户可以充分发掘每次搜索的详尽内容,提升用户发现商品、内容的效率。​
​​​
集成方案​
边搜边问交互通过集成搜索接口(Search)和对话式搜索接口(Chat Search)来配合实现。​
​​​
下面用以下示例说明边搜边问的集成方法​
​
Replay
Play
00:00 / 00:00 Live
00:00
Fullscreen
Cssfullscreen
1x
  • 2x
  • 1.5x
  • 1x
  • 0.75x
  • 0.5x
Click and hold to drag
​
​
Step 1: 用户在对话中输入查询​
调用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: Bearer 签名字符串' \ ​
-d '{​
"session_id": "session_id",​
"input_message": {​
"content": [​
{​
"type": "text",​
"text": "推荐高保湿的唇膏"​
}​
]​
},​
"user": {​
"_user_id": "U109287BsioaJOns05"​
},​
"search_param": {​
"page_size": 20​
},​
"enable_suggestions": true​
}'​
​
您可以在调用接口时在search_param参数中指定搜索结果的列表分页大小。分页设置不会影响模型生成内容的效果,可用于后续获取搜索列表​
Step 2:监听流式输出内容,获取搜索调用信息​
用户的query经过模型的意图判断和加工,结合上下文中抽取的历史用户查询意图,会改写为新的查询query。在执行搜索工具调用时将使用改写后的query进行搜索。您需要监听流式输出中的搜索调用信息,以备进行后续搜索列表的翻页、排序、过滤等搜后操作。​
step_info.step为"tool call"时,获取step_info.step_payload中的搜索参数​
搜索参数在step_payload.param.search_request中:​
​
{​
"request_id": "d9bb3f4a025bfced6e75762510d76af0",​
"result": {​
"step_info": {​
"step": "tool call",​
"step_payload": {​
"param": {​
"tool_name": "search",​
"search_requests": [​
{​
"query": {​
"text": "高保湿唇膏,高保湿口红"​
},​
"page_size": 20,​
"page_number": 1,​
"dataset_id": "106261599"​
}​
]​
}​
}​
}​
}​
}​
​
search_request是一个列表,当您的应用关联了多个数据集时,模型会动态选择合适的数据集进行搜索。当选择了多个数据集进行扇出搜索时,search_request会包含多个元素,每一个元素中包含:​
  • dataset_id:搜索源的数据集ID​
  • query:搜索的query​
  • page_size:默认为10​
  • page_number:默认返回第一页​
Step 3:返回第一页搜索结果​
您可以监听到step_info.step为"get results"时,获取接下来输出的payload中的第一页搜索结果。​
搜索结果在 payload.search中返回,返回被搜索的每个数据集的返回结果列表:​
​
{​
"request_id": "8501cb6ab3ff76519cfbd39636168ee1",​
"result": {​
"payload": {​
"search": {​
"106263958": {​
"search_results": [​
{​
"_id": "B08CYY3VFH",​
"display_fields": {​
"average_rating": 3.799999952316284,​
"categories": [​
"Beauty & Personal Care",​
"Makeup",​
"Lips",​
"Lipstick"​
],​
"description": [],​
"details": "{\"Brand\": \"KISSIO\", \"Color\": \"504#\", \"Item Form\": \"Oil\", \"Finish Type\": \"Matte\", \"Age Range (Description)\": \"Adult\", \"Package Dimensions\": \"3.62 x 1.06 x 0.87 inches; 1.52 Ounces\", \"Manufacturer\": \"KISSIO\"}",​
"features": [​
"Comfortable on lips, Highly pigmented lipgloss comes in both vibrant and soft shades with easy-to-apply matte finishes for beautifully lips."​
],​
"images": [​
{​
"image_url": "https://example.com/_SS40_.jpg"​
}​
],​
"item_id": "sample_item_id",​
"main_category": "All Beauty",​
"title": "KISSIO Matte Lipstick"​
},​
"score": 0.014219443323920937,​
"recall_info": [​
{​
"recall_reason": "text",​
"recall_score": 0.45546954870224​
},​
{​
"recall_reason": "vlm",​
"recall_score": 0.653238832950592​
}​
]​
}​
],​
"total_items": 200,​
"query": {​
"text": "高保湿唇膏,高保湿口红"​
},​
"page_size": 20,​
"page_number": 1,​
"dataset_id": "106263958"​
}​
}​
}​
}​
}​
​
您也可以使用在step_payload.param.search_request中返回的搜索参数,自行调用search接口获取搜索列表,来控制搜索列表的长度​
Step 4: 用户触发搜后操作​
当展示搜索列表后,用户在前端进行翻页、过滤或排序等操作时,您需要使用获取到的搜索参数调用search接口来进行操作,以翻页为示例,当用户在前端点击下一页:​
​
curl -X POST 'https://aisearch.cn-beijing.volces.com/api/v1/application/${application_id}/search/${scene_id}' \ ​
-H 'Content-Type: application/json' \ ​
-H 'Authorization: Bearer 签名字符串' \ ​
-d '{​
"query":{​
"text":"高保湿唇膏,高保湿口红"​
},​
"dataset_id": "106263958",​
"page_number": 2,​
"page_size": 20​
}'​
​
用户触发搜后过滤、排序等操作时,也可以通过传入filter或sort_by参数执行,详见 Search - 搜索。​
​
说明​
想要体验更多 Viking AI 搜索能力,点击前往:Viking AI 搜索引擎,企业搜推问一体化智能引擎​
最近更新时间:2026.08.09 18:23:46
这个页面对您有帮助吗?
有用
有用
无用
无用