微信AI搜索通过上下文窗口、结构化特征提取和用户身份区分三步精准识别意图:先拼接最近3~5轮用户输入为context;再用关键词+实体双路匹配及设备账号信号交叉验证;最后按已登录用户历史行为或游客规则动态分类。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

微信AI搜索需要准确识别用户输入背后的真实意图,比如同一句“查快递”可能是查自己的物流、帮家人查单号、或是想了解快递公司客服电话。
用上下文窗口捕捉连续对话意图
在小程序或微信内嵌搜索页中,用户常会发起多轮追问,例如先搜“天气”,再问“明天呢”,此时不能孤立看待第二句。需将最近3~5轮对话历史拼接为context字符串,传给意图识别模型。
注意:context必须剔除系统提示词和无关日志,只保留用户原始输入与明确反馈(如“不是这个”“换个城市”)。否则模型会被噪声干扰,把“换个城市”误判为新意图而非修正指令。
这一步操作起来很简单,直接把wx.getStorageSync('chat_history')里最近的user消息数组取出来,用\n分隔合并即可。
提取结构化特征辅助意图分类
方法一:关键词+实体双路匹配
对用户query做分词后,同步运行两路规则:① 匹配预设意图关键词表(如“怎么查”“在哪看”“能不能”倾向“操作类”);② 用正则或NER模型抽取出数字、单号、人名、地名等实体(如“SF123456789CN”“北京朝阳区”)。
当“查快递”+“SF123456789CN”同时出现,意图置信度直接拉到0.92;若只有“查快递”无单号,则降级为“通用查询”类,触发引导式追问。
方法二:设备与账号信号交叉验证
从wx.getSystemInfoSync()获取platform(ios/android)、model(iPhone 14/小米13),结合wx.getAccountInfoSync().miniProgram.envVersion(develop/trial/release)生成设备指纹;再叠加wx.getStorageSync('openid')(已授权)或visitorId(未授权游客,按时间戳+随机数生成)。
【游客visitorId必须在首次进入时立即生成并存入storage,否则后续无法关联行为序列】
同一设备指纹下,连续3次搜索都含“医保”“报销”“门诊”,即使没登录,也标记该visitorId为医疗高频用户,后续默认优先返回医保局官网链接而非百科解释。
区分已登录用户与游客的意图权重策略
第一步:判断当前是否有有效openid
调用wx.checkSession() → 失败则走游客流程;成功则读取wx.getStorageSync('userInfo').openid。
第二步:查用户历史行为库
向后端发送请求:/intent/profile?openid=oxXxX1234567890abcdef&last7d_actions=3,后端返回该用户近7天搜索TOP3类目(如“外卖→32%、团购→28%、电影→19%”)。
第三步:动态调整意图分类阈值
若用户历史外卖占比>30%,且当前query含“附近”“今天”“配送费”,则直接跳过泛意图识别,强制归入“外卖即时下单”分支,响应速度提升400ms。
第四步:游客意图兜底处理
对无openid的请求,启用轻量级本地规则引擎:检测query是否含明确动词(查/订/买/退)+ 明确宾语(快递/电影票/酒店),满足则走高确定性路径;否则返回带选项的卡片式交互(例:“您想查的是:① 快递物流 ② 快递网点 ③ 快递价格?”)。











