保时捷金融问答机器人 · 需求文档与评估计划

保时捷金融问答机器人 · 需求文档与评估计划

微信小程序问答服务 · 类 Coze 平台(titan)搭建 · 当前版本 V1.0(QA 数据 2026-07)
当前版本 V1.0 75 条 QA 点选精确匹配 知识库映射 答案原样输出 · 不润色

一、需求概述

场景:为保时捷融资租赁项目搭建微信小程序问答机器人,用户在小程序内咨询还款、变更银行卡、车辆登记证、电子发票、结清寄送、提前结清、忠诚客户权益、车辆返还等业务问题。

问答数据:QA 问答对(当前版本 75 条,8 个业务场景),由业务方提供 Excel 维护。

提问方式:① 列表点选为主(页面预置问题,用户点选)② 自由输入兜底(用户输入文字)

输出要求

  • 只输出匹配到的 answer 原文,不使用大模型润色/改写
  • 无匹配时返回固定话术:「非常抱歉,未能为您检索到对应答案。如需进一步帮助,欢迎您在工作日的9:00至18:00,通过“热线客户”联系保时捷融资租赁客户中心,按提示选择“3”,我们将竭诚为您服务。」
  • 第一段未匹配显式返回 __NO_MATCH__ 标识,便于节点路由(走知识库);第二段未匹配直接返回内置兜底话术

承载平台:公司自研类 Coze 平台(titan),暂不脱离平台实现(刚接手求稳)。

方案一句话:这是一个「检索/匹配」机器人,不是「生成」机器人——节点链路只负责把最匹配的那条答案原样捞出来,大模型全程不参与,从机制上保证答案与 QA 原文逐字一致。

二、方案总览:双路径架构

机器人按提问方式分两条路径处理,整体工作流程如下:

微信小程序问答机器人 — 双路径工作流程用户进入小程序问答页提问方式?列表点选 · 主路径自由输入 · 兜底路径携带 question_id条件分支:question_id 非空 → 第一段代码节点第一段代码节点:字典查表 {question_id → answer}命中?否 · 防御输出 answer 原文(不润色)输出固定话术携带 free_text知识库节点:语义检索 top1(只匹配 Q 字段,A 不参与匹配)→ 输出 Array[Object] 检索结果数组相似度 ≥ 阈值?(取 top1 条目 knowMeta.score,阈值 0.7 或 0.8 实测二选一)第二段代码节点:取最高分条目→ 解析 content → answer 原文输出 answer 原文(不润色)输出固定话术「非常抱歉,未能为您检索到对应答案」

2.1 两条路径

路径触发方式实现机制精确度
路径一:点选(主)用户点选问题卡片第一段代码节点字典查表 {question_id → answer}100% 精确
路径二:自由输入(兜底)用户输入文字知识库节点语义检索 top1(平台侧过滤阈值)→ 第二段代码节点取第一个结果映射答案平台阈值内可靠

2.2 两段代码的分工

  • 第一段代码节点(点选路径):维护 {question_id → answer} 字典,入口 data_process(df) 读取 sys.query (String),命中即输出 answer 原文;未命中(防御)输出固定话术
  • 第二段代码节点(自由输入路径):入口 data_process(df) 读取 ragQuestionArr (Array<Object>),**直接取第一个结果**(平台知识库节点已完成检索 + 阈值过滤,传进来的就是 top1 命中,代码不再做相似度匹配/阈值判断),解析 content 输出 answer 原文;无匹配输出内置兜底话术
  • 两段代码由同一份 qa_data.json 自动生成,字典同源,保证两条路径的答案完全一致

三、全流程交互时序

三种典型请求(点选 / 自由输入命中 / 未命中)的完整交互过程:

微信小程序问答机器人 — 交互时序图用户用户微信小程序微信小程序类Coze平台(titan)类Coze平台(titan)知识库知识库代码节点代码节点路径一:列表点选(主路径,100% 精确)点选问题卡片POST 问答接口 { question_id: "Q03" }第一段代码节点(字典查表)answer 原文{ answer: "……原文……" }展示答案路径二:自由输入(兜底路径,语义检索 + 阈值)输入文字「怎么申请退款?」POST 问答接口 { free_text: "怎么申请退款?" }语义检索(只匹配 Q 字段,top1)Array[Object]: [{ content: "{\"问题\":\"如何申请退款\"}", knowMeta: { score: 0.82 } }]第二段代码节点(取 top1 → 阈值过滤 → 解析 content){ answer: "……原文……" } (命中)展示答案路径三:未命中 → 固定话术输入文字「今天天气如何?」POST 问答接口 { free_text: "今天天气如何?" }语义检索Array[Object]: [{ content: "...", knowMeta: { score: 0.41 } }] (低于阈值)第二段代码节点(score < 阈值 → 固定话术){ answer: "非常抱歉,未能为您检索到对应答案" }展示固定话术

四、平台能力确认(2026-08-04 与业务方确认 4 点)

#确认项结论对方案的影响
1知识库匹配相似度在哪儿设置?titan 平台知识库节点的设置中配置,最小以 0.1 为单位增加阈值只能设 0.7 / 0.8 等 0.1 步进值;原「0.75 起步」不可配置,改为 0.7 或 0.8 实测二选一
2机器人被调用的并发量?按机器人设置的并发量走——配置的并发几,瞬时能起的会话就是几并发上限由平台机器人配置决定;上线前按预估峰值设置并发,注意平台配额
3上线后每次请求输入输出导出?已有功能:运营管理-执行日志;日志记录时间为 T+1QA 扩写迭代依赖此日志(未命中 query 采集);注意 T+1 延迟,复盘按天粒度
4模型名称?待确认:需向杨林凤询问对应市场上的模型名称和版本,交由商务过审后,再答复保时捷本方案默认不使用大模型节点(纯规则匹配);若平台强制要求挂载模型节点,需等模型名称确认后配置「透传」

五、节点配置步骤

5.1 节点链路

开始节点(接收 user_input)
  └─ 第一段代码节点:精确匹配(归一化查表)
       ├─ 命中 → 输出 answer 原文
       └─ 未命中(__NO_MATCH__)→ 知识库节点:语义检索 top1 + 阈值过滤(只匹配 Q,平台侧完成)
            ├─ 有命中 → 第二段代码节点:取第一个结果 + 解析 content → 输出 answer 原文
            └─ 无命中(空集合)→ 输出固定话术

5.2 配置步骤(照做)

  1. 开始节点:接收小程序传入的 sys.query(String,点选时 = question_id,自由输入时 = 文本)
  2. 第一段代码节点:粘贴「八、两段匹配代码」的第一段(入口 data_process(df));输入 sys.query (String),输出 answer (String) = answer / __NO_MATCH__
  3. 条件分支:判断第一段输出 answer 是否为 __NO_MATCH__;不是则直接返回 answer
  4. 知识库节点:配置 QA 知识库(仅索引 Q 字段),语义检索 top1,阈值按「七」节设置;输出为检索结果数组(字段名 ragQuestionArr,类型 Array<Object>,每条含 knowMeta.score 相似度、content JSON 字符串)
  5. 第二段代码节点:粘贴第二段(入口 data_process(df));输入 ragQuestionArr (Array<Object>),代码直接取第一个结果 + 解析 content 输出 result (String) = answer / 兜底话术(不做检索、不做阈值判断)
  6. 固定话术节点(可选,防御):第二段代码已内置兜底话术,如平台仍需独立节点可输出同一话术
  7. 发布:按平台要求配置机器人并发量(见 4 点确认第 2 条)

六、知识库设计

  • 匹配 Q 不匹配 A(已确认):检索只对问题文本做语义匹配。知识库条目只存问题、不带答案——带答案字段会用答案里的「客服/电话」等词污染相似度,导致答非所问。答案由第二段代码节点用同源 QA 字典映射输出(与点选路径答案逐字一致)
  • 不切片:一条 QA = 一个知识库条目,答案保持完整(切片只适用于长文档,QA 答案是一段完整的话)
  • 标签筛选:不做:当前量级(75 条)直接全量 top1 匹配即可,标签是纯维护负担;条目数增长到数百条再考虑
  • 条目结构{ Q: 标准问题文本 }(只存问题),向量化对 Q 字段

七、阈值设置

  • 知识库节点阈值 只能设 0.1 步进值:0.7 / 0.8 二选一(0.75 无法设置)
  • 用「② 扩写测试集」分别扫 0.7 和 0.8,选误命中为 0 且命中率最高的
  • 原则:宁可答不上来(漏命中)也不能答错(误命中)——错误答案比固定话术伤害大
  • 🔴 阈值只在平台知识库节点设置:平台检索时已按阈值过滤(低于阈值不返回结果),代码节点直接消费过滤后的数组、取第一个结果,不再做二次阈值判断

7.2 固定话术

「非常抱歉,未能为您检索到对应答案。如需进一步帮助,欢迎您在工作日的9:00至18:00,通过“热线客户”联系保时捷融资租赁客户中心,按提示选择“3”,我们将竭诚为您服务。」

(用户 2026-08-04 提供;第二段代码已内置为 FALLBACK_TEXT,空集合/匹配不到时直接返回)

八、两段匹配代码(当前版本 V1.0)

两段代码由 qa_data.json(当前版本 QA)自动生成,字典同源,保证点选答案与知识库答案完全一致。

第一段:点选精确匹配(qa_match_part1.py)— 入口 data_process(df),输入 sys.query (String),输出 answer (String)
# -*- coding: utf-8 -*-
# ⚠️ 本文件由 generate_code.py 从 qa_data.json 自动生成,请勿手改。
# 更新 QA 后:替换 qa_data.json 重新运行生成脚本(或联系 Hermes 处理)。

"""
微信小程序问答机器人 · 第一段:点选精确匹配
================================================
用途:用户输入/点选的问题文本,先在预置问题里精确匹配。
  命中   -> 返回对应答案原文(原样输出,不做任何润色)
  未命中 -> 返回 __NO_MATCH__ 标识,由后续知识库节点接管

平台接入(titan 低代码平台代码节点约定格式):
  函数签名: def data_process(df: dict) -> dict
  输入: df["sys.query"] (String)   # 用户输入/点选的问题文本(开始节点 sys.query)
  输出: answer (String)            # 命中=答案原文 / 未命中="__NO_MATCH__"
"""
import unicodedata

# ================== QA 字典(自动生成) ==================
QA_MAP = {
    "有哪些还款方式": "我们为您提供了灵活的还款方式,您可通过自动扣款或手动汇款方式进行还款。",
    "自动扣款支持哪些银行": "我们的自动扣款支持多家主流银行的一类借记卡:\n•工商银行、招商银行 (适用于金额<100万的月还款、尾款、提前结清款、罚息)\n•交通银行、中信银行、平安银行、民生银行、广发银行、上海银行 (适用于金额<5万的月还款、罚息)",
    "最晚可以几点还款": "还款日当天我们将进行多轮款项处理:\n•如您通过扣款还款,我们将分别于9:30、15:30进行扣款处理,我们推荐您在还款日前一天将资金存入您的扣款银行卡/账户。如当天还款失败,我们将于次日再次尝试扣款。\n•如您通过汇款还款,我们将分别是9:00、15:00和20:30进行汇款款项处理,我们推荐您在还款日前一天操作汇款。",
    "可以通过汇款还款吗": "您可以通过手动汇款方式进行还款。我们为您配置了专属汇款账户,您汇款时无需备注,足额汇款即可自动入账。专属汇款账户信息可通过本小程序“服务”中的“还款账户查询”查看。",
    "我会收到提醒短信吗": "每期还款前我们都会提醒您还款日和还款金额,还款后我们也会通知您还款结果,方便您及时了解还款状态。另外,您也可通过本小程序中的“合同”-“查看详情”-“账单详情”查看。",
    "收到了余额不足还款失败短信": "请您尽快将足额资金存入您的扣款银行卡,我们将于15:30或次日9:30再次扣款。",
    "扣款银行卡发生限额、冻结、锁定": "考虑到银行卡状态恢复不便,我们推荐您先通过汇款方式完成当月还款,再联系银行恢复卡片状态。",
    "周末和节假日可以还款吗": "我们在周末和法定节假日均支持自动扣款和足额汇款的自动入账。",
    "如何查看还款计划": "您可通过本小程序“合同”中的“账单详情”查看您的还款计划,包括每期还款日,还款金额和还款状态等。",
    "如何查看汇款结余": "您可以在汇款到账提醒短信里找到结余金额。您也可以通过本小程序“服务”中的“还款账户查询”查看。",
    "个人客户,可以选择哪些银行卡": "我们支持多家主流银行一类借记卡变更:\n•工商银行、招商银行 (适用于金额<100万的月还款、尾款、提前结清款、罚息)\n•交通银行、中信银行、平安银行、民生银行、广发银行、上海银行 (适用于金额<5万的月还款、罚息)",
    "企业客户,可以选择哪些银行账户": "您可以选择企业工行账户进行变更(适用于金额<100万的月还款、尾款、提前结清款、罚息)。如企业没有工行账户,担保人可以操作银行卡变更。",
    "能自助办理吗": "合同激活后,您可通过本小程序 “服务”中的“变更银行卡”进行变更操作。",
    "承租人操作变更注意事项": "如是个人账户,请持卡人通过本小程序进行变更操作。如是企业工行账户,请先在网银中完成扣款绑定,再通过小程序进行变更操作。",
    "担保人操作变更注意事项": "请担保人通过本小程序进行变更操作。",
    "扣款过程变更了银行卡": "如完成变更时仍有待支付的款项且扣款尚未完成,本次仍旧通过变更前的银行卡进行扣款。",
    "如何查看变更后的银行卡信息": "您可以通过本小程序“服务”中的“还款账户查询”查看。",
    "银行卡挂失补办了,需要变更吗": "为保证扣款顺利,请您在补办后通过本小程序 “服务”中的“变更银行卡”进行变更操作。",
    "旧的银行卡如何解绑": "变更成功后,我们会协助您发起旧银行卡的解绑。如果是招行个人卡,工行企业账户,请您通过手机银行app或企业网银进行解绑。",
    "能再次发起变更吗": "变更成功后,您可以再次发起变更。为保证扣款顺利,如仍有待支付的款项且扣款尚未完成,请在本次扣款结束后再发起变更。",
    "我的车辆登记证保存在哪里": "办理完抵押登记后,您的机动车登记证由保时捷融资租赁公司保管。这期间,如您需要临时借阅,可向您的购车保时捷中心提出申请。",
    "哪些情况可以申请原件借阅": "在不涉及车辆抵押状态变更的情况下,您可借阅机动车登记证用于以下业务办理:\n•\t变更车身颜色(非同色系)\n•\t变更为市区号牌\n•\t变更发动机/车身/车架",
    "需要提供哪些材料申请原件借阅": "您无需向保时捷融资租赁提供证件或填写相关材料,保时捷中心会协助您提交借阅申请。",
    "最长能借阅多久": "您可以借阅的期限最长为30个自然日,如您因尚未完成相关事项办理需要延期,请向您的购车保时捷中心提出续借申请。",
    "是否需要支付费用": "您无需向保时捷融资租赁支付相关费用,机动车登记证借阅事宜由您的购车保时捷中心协助办理。",
    "可以委托其他人办理吗": "为保障您的财产安全,我们仅接受您本人向保时捷中心提出的借阅申请:\n•\t企业客户:由企业法定代表人提出申请\n•\t个人客户:由承租人提出申请",
    "借阅的原件,寄到哪里": "我们会将登记证寄送至您的购车保时捷中心,保时捷中心收到后会协助您办理相应手续。",
    "使用完毕后如何归还": "登记证使用完毕后,可直接归还至您的保时捷中心,保时捷中心会重新邮寄给保时捷融资租赁保管。",
    "扫描件自助下载": "为保障您的财产安全,您本人可通过本小程序“服务”中的“车辆登记证”查看和下载:\n•企业客户:可企业法人查看和下载\n•\t个人客户:可承租人查看和下载",
    "扫描件无法查看": "如您的车辆登记证还未寄给保时捷融资租赁有限公司归档,无法通过本小程序查看,请您及时配合完成归档。",
    "哪些费用可以开票": "目前支持开具电子发票的项目包括:\n•\t利息\n•\t违约金\n•\t提前结清手续费\n我们会为您开具增值税(普通)电子发票",
    "会在什么时候开具": "电子发票会在每月中旬及月底进行开具。若您的还款日未赶上当月发票开具批次,将自动纳入下一批次处理。如您有加急需求,请联系保时捷融资租赁客户中心,我们预计会在5个工作日内为您开具出相应发票。",
    "利息发票为什么来自两方": "您的利息发票会由我们和联合出租方上海畅途融资租赁有限公司分别开具,发票合计金额等于实际支付利息,均是有效票据。保时捷融资租赁会开具99%利息金额发票,剩余1%利息由上海畅途融资租赁开具。",
    "企业客户,能自助下载吗": "保时捷融资租赁开具的发票可通过本小程序“服务”中的“电子发票”查看和下载,我们也会将通过短信发送给您。联合出租方上海畅途融资租赁开具的发票会通过邮件发送给您。",
    "个人客户,能自助下载码": "保时捷融资租赁开具的发票可通过本小程序“服务”中的“电子发票”查看和下载。联合出租方上海畅途融资租赁开具的发票,您可联系保时捷融资租赁客户中心申请(400-820-5911,按提示选择“3”)",
    "发票信息有误怎么办": "如发票抬头、税号等信息有误,您可联系保时捷融资租赁客户中心400-820-5911,按提示选择“3”提交更正申请,我们将尽快为您处理。",
    "可以补开吗": "对于过往已支付但未开具发票的款项,您可联系保时捷融资租赁客户中心00-820-5911,按提示选择“3”提交补开申请,我们将在核实后为您尽快补开。",
    "小程序上能批量下载吗": "您可勾选单条、多条、点击“全选”,或通过右上角“筛选”选择指定年月的发票。点击“票据接收”,核对或编辑邮箱地址后,电子发票将发送至该邮箱。",
    "企业更名了,如何变更开票信息": "您可联系保时捷融资租赁客户中心400-820-5911,按提示选择“3”提交更名申请。更名成功后,会按照新的名称为您开具发票。",
    "企业更名了,已开具的发票能重开吗": "您可联系保时捷融资租赁客户中心400-820-5911,按提示选择“3”提交补开申请,我们将协助您进行处理。",
    "结清后需要做什么": "我们会协助您办理解除抵押,包括:\n1. 准备并寄出结清资料\n2. 联系您预约办理时间\n3. 协助您办理解除抵押\n4. 归还车辆登记证",
    "哪些材料会寄出": "寄出的结清材料包括您的车辆登记证,结清证明,以及其他车管所要求的办理解除抵押所需材料。",
    "材料多久会寄出": "合同结清后,我们将在7个工作日内向保时捷融资租赁指定服务商寄出结清资料。",
    "材料寄出能加急吗": "如您有加急需求,请在工作时间联系保时捷融资租赁客户中心400-820-5911,按提示选择“3”,我们将在合同结清后5个工作日内向保时捷融资租赁指定服务商寄出结清资料。",
    "多久联系我办理解除抵押": "保时捷融资租赁指定服务商收到资料后,预计三个工作日内和您联系。",
    "材料能直接寄给我吗": "目前大多数地区车管所不接受个人办理解除抵押业务。为了避免您白跑一趟,我们会将材料寄给保时捷融资租赁指定服务商,协助您办理解除抵押。",
    "办理解除抵押,需要我准备什么": "如您是个人客户,需提供身份证。如您是企业客户,需提供营业执照副本原件。",
    "办理解除抵押,需要我到场吗": "您可以和保时捷融资租赁指定服务商的员工共同前往办理。如时间不便,您也可以委托给保时捷中心或指定服务商的员工完成办理。",
    "车辆登记证如何给到我": "如您是共同前往办理的,机动车登记证在解除抵押完成后直接归还给您。如您是委托办理的,会在解除抵押完成后由保时捷融资租赁指定服务商通过邮寄方式归还。",
    "哪些情况无法申请提前结清": "租金还款日当天,还款期数未满1期,合同当前存在逾期或合同已违约,均无法申请提前结清。",
    "如何申请提前结清": "您首期租金成功还款后,且还款状态正常,可通过以下任一方式申请:\n•\t通过本小程序“服务”中的“提前结清”自助提交申请\n•\t联系购车保时捷中心工作人员协助提交申请\n•\t联系保时捷融资租赁客户中心协助提交申请",
    "收提前结清手续费吗": "需要您支付提前结清手续费,收取标准为:\n•\t如已支付租金未满12期,手续费为剩余未付本金的6%\n•\t如已支付租金满12期或以上,手续费为剩余未付本金的3%",
    "如何还提前结清款项": "若您绑定的扣款银行卡为:\n•\t工商银行、招商银行:如通过扣款还款。请提前在卡内预留足额资金,还款日当天将分别于9:30、15:30进行扣款处理;如通过汇款还款,请勿在卡内预留足额资金,并于当天20:00前还款至专属汇款账户\n•\t交通银行、中信银行、平安银行、民生银行、广发银行、上海银行卡:请于还款日当天20:00前还款至专属汇款账户。",
    "可以试算提前结清金额吗": "如首期租金已成功还款,且合同状态正常,您可通过本小程序“服务”中的“提前结清”试算金额。",
    "节假日可以申请吗": "周末和节假日,您可通过本小程序自助申请,或联系保时捷中心工作人员协助提交申请。工作日9:00至18:00,保时捷融资租赁客户中心可协助您提交申请。",
    "租金日可以申请吗": "租金日当天无法为您办理提前结清。",
    "当天最晚几点还款": "还款日当天我们将进行多轮款项处理:\n•\t如您通过扣款还款,请最晚于当天15:30前将金额存入扣款银行卡\n•\t如您通过汇款还款,请最晚于当天20:00前还款至专属汇款账户",
    "当天未还款,怎么办": "若当天未完成还款,提前结清申请将自动失效。您可重新提交申请,或继续按照合同原还款计划还款。",
    "只能承租人提交申请吗": "承租人和担保人均可提交申请。",
    "忠诚客户有哪些礼遇": "如您再次选择保时捷融资租赁方案,可享受全系车型额外1%的利率优惠。原保时捷融资租赁合同尚未结清,还可享受原合同提前结清费用减免、至高5000元还车账单减免优惠。礼遇详情可在本小程序的“首页”和“服务”中的“忠诚客户”查看。",
    "之前选的金融方案,也能享受吗": "如您是保时捷金融客户,在原业务尚未结清或结清时间不超过3年时,通过保时捷融资租赁方案重购,也可享受全系车型额外1%的利率优惠。",
    "保时捷金融客户介绍": "是指您曾通过保时捷金融服务提供方提供的金融方案购买保时捷 (保时捷金融服务提供方包括:中国银行、中信银行、平安银行、中国农业银行、大众汽车金融(中国)有限公司、德国大众汽车融资租赁(天津)有限公司)。",
    "如何查询我的客户身份": "您可以在本小程序“服务”中的“客户权益”通过车架号或证件号码进行查询。",
    "我有购车意向,如何提交": "保时捷融资租赁客户可通过本小程序“服务”中的“客户权益”提交期末购车意向。收到您的意向申请后,我们会通知保时捷中心联系您预约到店试驾。",
    "什么情况可以返还车辆": "如您选择的是保时捷融资租赁无忧先享产品,合同到期时可享受多种选择权,包括车辆购买、车辆返还、车辆置换。",
    "车辆返还步骤是什么": "车辆返还涉及如下步骤:\n1. 合同到期日10个工作日前,预约到店检测\n2. 合同到期日7个工作日前,完成车辆检测。如符合还车标准,将车辆进行归还\n3. 合同到期后30个工作日内,办理车辆解除抵押和车辆过户",
    "如何预约到店检测": "您可在本小程序“服务”中的“车辆返还”完成预约。预约成功后,保时捷融资租赁客户中心将与您取得联系,安排检测与还车事宜。您也可直接拨打保时捷融资租赁客服热线进行预约。",
    "预约后能改期吗": "您可在预约日期的前一天在本小程序“服务”中的“车辆返还”操作取消或改期。如您未及时取消或改期,会视为一次爽约,两次爽约后将失去还车资格,还请您提前操作。",
    "到店时需携带什么材料": "还请您一并携带好车辆相关材料,包括2把钥匙、车辆行驶证、车主身份证/营业执照原件、公章(仅企业客户)、进口单证等材料。",
    "哪些情况无法返还车辆": "需要至少满足以下情况可在期末返还车辆:\n1. 车辆无重大事故(结构性损伤)、水淹、火烧等情况,并在保时捷授权中心保养\n2. 当前还款不逾期\n3. 合同到期日7个工作日前经检测符合还车车况标准,归还车辆\n具体您可在本小程序“服务”-“车辆返还”-“还车指引”中的“还车标准”查看。",
    "对车况有什么要求": "还车车况需至少满足以下情况:\n1.车身无结构性损伤、车身外观及油漆无明显损伤、内饰无明显损坏痕迹\n2.电气可正常使用、车轮及轮胎无明显损伤、底盘和发动机无异常\n3.电池可正常充放电\n4. 车辆行驶里程不超过2万公里/年\n具体您可在本小程序“服务”-“车辆返还”-“还车指引”中的“还车标准”查看。",
    "检测结果我不满意怎么办": "车辆检测是由保时捷授权经销商或保时捷融资租赁授权的第三方检测机构完成,其检测结果专业且独立。如您对检测结果有异议,我们可安排第二次检测,这次检测需要您支付相关费用。",
    "还车账单包括哪些款项": "如车辆不符合还车车况要求,您可通过支付车辆复原维修费和超额里程费的方式继续归还车辆。您可在本小程序“服务”-“车辆返还”中的“账单支付”查看账单金额。",
    "车辆检测收费吗": "您享有一次免费的车辆到店检测服务,该服务由保时捷授权经销商或保时捷融资租赁授权的第三方检测机构完成。",
}

NO_MATCH = "__NO_MATCH__"

# 全半角/空白/标点/大小写归一化,保证用户带问号、空格、全角字符也能命中
def _normalize(s):
    if not s:
        return ""
    s = unicodedata.normalize("NFKC", s)   # 全角 -> 半角(含全角标点、空格)
    s = s.lower()                          # 大小写统一
    # 只保留中英文/数字(isalnum 对中文返回 True),标点/空格/符号全部丢弃
    return "".join(ch for ch in s if ch.isalnum())

# 归一化后的映射表(构建一次,查询 O(1))
_NORM_MAP = {_normalize(q): a for q, a in QA_MAP.items()}

def match_question(user_input):
    """点选/输入精确匹配。命中返回答案原文;未命中返回 NO_MATCH 标识。"""
    key = _normalize(user_input)
    if not key:
        return NO_MATCH
    return _NORM_MAP.get(key, NO_MATCH)

def data_process(df: dict) -> dict:
    """平台代码节点入口(titan 低代码平台约定格式)。

    输入: df["sys.query"] (String)  # 用户输入/点选的问题文本(开始节点 sys.query)
    输出: answer (String)  # 命中=答案原文 / 未命中="__NO_MATCH__"
    """
    user_query = df.get("sys.query", "") if isinstance(df, dict) else ""
    answer = match_question(user_query)
    return {
        "answer": answer,  # String
    }
第二段:知识库检索结果数组映射(qa_match_part2.py)— 入口 data_process(df),输入 ragQuestionArr (Array<Object>),输出 result (String)
# -*- coding: utf-8 -*-
# ⚠️ 本文件由 generate_code.py 从 qa_data.json 自动生成,请勿手改。
# 更新 QA 后:替换 qa_data.json 重新运行生成脚本(或联系 Hermes 处理)。

"""
微信小程序问答机器人 · 第二段:知识库检索结果数组 -> 答案映射
================================================
用途:知识库节点检索命中后,将检索结果数组(Array[Object])映射为答案原文。
  1. 直接取数组第一个结果(平台知识库节点已做检索 + 阈值过滤,传进来的就是 top1 命中)
  2. 解析命中条目 content(JSON 字符串,只含"问题"字段):
     - 🔴 主路径(用户 2026-08-04 确认):知识库条目**只存问题、不存答案**
       (带答案字段会影响检索准确率)→ 用同源 QA 字典按"问题"映射答案原文
     - 兼容分支:若条目未来加了"答案"字段,则直接输出该字段(零润色)
  命中   -> 返回对应答案原文(原样输出,不做任何润色)
  未命中 -> 返回兜底话术(由用户 2026-08-04 提供)

平台接入(titan 低代码平台代码节点约定格式):
  函数签名: def data_process(df: dict) -> dict
  输入: df["ragQuestionArr"] (Array<Object>)  # 知识库节点检索结果数组(已过滤 top1)
     每条形如:
     {
       "question": "",
       "content": "{\"问题\":\"我会收到提醒短信吗\"}",
       "file": [],
       "knowMeta": {"type":"doc","knowName":"保时捷小程序问答-问题知识库",
                    "tag":"","searchType":"mix","score":0.9728201981073603}
     }
  输出: result (String)  # 命中=答案原文 / 未命中=兜底话术,始终为字符串

说明:
  - 🔴 本段代码**不实现知识库检索、不做相似度匹配/阈值判断**——检索和阈值由平台知识库节点完成,
    本段只消费检索结果数组,取第一个结果映射答案。
  - 本字典与第一段代码同源生成(qa_data.json),保证点选答案与知识库答案一致。
"""
import unicodedata, json

# 兜底话术(用户 2026-08-04 提供)——未命中/空集合时返回
FALLBACK_TEXT = "非常抱歉,未能为您检索到对应答案。如需进一步帮助,欢迎您在工作日的9:00至18:00,通过“热线客户”联系保时捷融资租赁客户中心,按提示选择“3”,我们将竭诚为您服务。"

# ================== QA 字典(自动生成) ==================
QA_MAP = {
    "有哪些还款方式": "我们为您提供了灵活的还款方式,您可通过自动扣款或手动汇款方式进行还款。",
    "自动扣款支持哪些银行": "我们的自动扣款支持多家主流银行的一类借记卡:\n•工商银行、招商银行 (适用于金额<100万的月还款、尾款、提前结清款、罚息)\n•交通银行、中信银行、平安银行、民生银行、广发银行、上海银行 (适用于金额<5万的月还款、罚息)",
    "最晚可以几点还款": "还款日当天我们将进行多轮款项处理:\n•如您通过扣款还款,我们将分别于9:30、15:30进行扣款处理,我们推荐您在还款日前一天将资金存入您的扣款银行卡/账户。如当天还款失败,我们将于次日再次尝试扣款。\n•如您通过汇款还款,我们将分别是9:00、15:00和20:30进行汇款款项处理,我们推荐您在还款日前一天操作汇款。",
    "可以通过汇款还款吗": "您可以通过手动汇款方式进行还款。我们为您配置了专属汇款账户,您汇款时无需备注,足额汇款即可自动入账。专属汇款账户信息可通过本小程序“服务”中的“还款账户查询”查看。",
    "我会收到提醒短信吗": "每期还款前我们都会提醒您还款日和还款金额,还款后我们也会通知您还款结果,方便您及时了解还款状态。另外,您也可通过本小程序中的“合同”-“查看详情”-“账单详情”查看。",
    "收到了余额不足还款失败短信": "请您尽快将足额资金存入您的扣款银行卡,我们将于15:30或次日9:30再次扣款。",
    "扣款银行卡发生限额、冻结、锁定": "考虑到银行卡状态恢复不便,我们推荐您先通过汇款方式完成当月还款,再联系银行恢复卡片状态。",
    "周末和节假日可以还款吗": "我们在周末和法定节假日均支持自动扣款和足额汇款的自动入账。",
    "如何查看还款计划": "您可通过本小程序“合同”中的“账单详情”查看您的还款计划,包括每期还款日,还款金额和还款状态等。",
    "如何查看汇款结余": "您可以在汇款到账提醒短信里找到结余金额。您也可以通过本小程序“服务”中的“还款账户查询”查看。",
    "个人客户,可以选择哪些银行卡": "我们支持多家主流银行一类借记卡变更:\n•工商银行、招商银行 (适用于金额<100万的月还款、尾款、提前结清款、罚息)\n•交通银行、中信银行、平安银行、民生银行、广发银行、上海银行 (适用于金额<5万的月还款、罚息)",
    "企业客户,可以选择哪些银行账户": "您可以选择企业工行账户进行变更(适用于金额<100万的月还款、尾款、提前结清款、罚息)。如企业没有工行账户,担保人可以操作银行卡变更。",
    "能自助办理吗": "合同激活后,您可通过本小程序 “服务”中的“变更银行卡”进行变更操作。",
    "承租人操作变更注意事项": "如是个人账户,请持卡人通过本小程序进行变更操作。如是企业工行账户,请先在网银中完成扣款绑定,再通过小程序进行变更操作。",
    "担保人操作变更注意事项": "请担保人通过本小程序进行变更操作。",
    "扣款过程变更了银行卡": "如完成变更时仍有待支付的款项且扣款尚未完成,本次仍旧通过变更前的银行卡进行扣款。",
    "如何查看变更后的银行卡信息": "您可以通过本小程序“服务”中的“还款账户查询”查看。",
    "银行卡挂失补办了,需要变更吗": "为保证扣款顺利,请您在补办后通过本小程序 “服务”中的“变更银行卡”进行变更操作。",
    "旧的银行卡如何解绑": "变更成功后,我们会协助您发起旧银行卡的解绑。如果是招行个人卡,工行企业账户,请您通过手机银行app或企业网银进行解绑。",
    "能再次发起变更吗": "变更成功后,您可以再次发起变更。为保证扣款顺利,如仍有待支付的款项且扣款尚未完成,请在本次扣款结束后再发起变更。",
    "我的车辆登记证保存在哪里": "办理完抵押登记后,您的机动车登记证由保时捷融资租赁公司保管。这期间,如您需要临时借阅,可向您的购车保时捷中心提出申请。",
    "哪些情况可以申请原件借阅": "在不涉及车辆抵押状态变更的情况下,您可借阅机动车登记证用于以下业务办理:\n•\t变更车身颜色(非同色系)\n•\t变更为市区号牌\n•\t变更发动机/车身/车架",
    "需要提供哪些材料申请原件借阅": "您无需向保时捷融资租赁提供证件或填写相关材料,保时捷中心会协助您提交借阅申请。",
    "最长能借阅多久": "您可以借阅的期限最长为30个自然日,如您因尚未完成相关事项办理需要延期,请向您的购车保时捷中心提出续借申请。",
    "是否需要支付费用": "您无需向保时捷融资租赁支付相关费用,机动车登记证借阅事宜由您的购车保时捷中心协助办理。",
    "可以委托其他人办理吗": "为保障您的财产安全,我们仅接受您本人向保时捷中心提出的借阅申请:\n•\t企业客户:由企业法定代表人提出申请\n•\t个人客户:由承租人提出申请",
    "借阅的原件,寄到哪里": "我们会将登记证寄送至您的购车保时捷中心,保时捷中心收到后会协助您办理相应手续。",
    "使用完毕后如何归还": "登记证使用完毕后,可直接归还至您的保时捷中心,保时捷中心会重新邮寄给保时捷融资租赁保管。",
    "扫描件自助下载": "为保障您的财产安全,您本人可通过本小程序“服务”中的“车辆登记证”查看和下载:\n•企业客户:可企业法人查看和下载\n•\t个人客户:可承租人查看和下载",
    "扫描件无法查看": "如您的车辆登记证还未寄给保时捷融资租赁有限公司归档,无法通过本小程序查看,请您及时配合完成归档。",
    "哪些费用可以开票": "目前支持开具电子发票的项目包括:\n•\t利息\n•\t违约金\n•\t提前结清手续费\n我们会为您开具增值税(普通)电子发票",
    "会在什么时候开具": "电子发票会在每月中旬及月底进行开具。若您的还款日未赶上当月发票开具批次,将自动纳入下一批次处理。如您有加急需求,请联系保时捷融资租赁客户中心,我们预计会在5个工作日内为您开具出相应发票。",
    "利息发票为什么来自两方": "您的利息发票会由我们和联合出租方上海畅途融资租赁有限公司分别开具,发票合计金额等于实际支付利息,均是有效票据。保时捷融资租赁会开具99%利息金额发票,剩余1%利息由上海畅途融资租赁开具。",
    "企业客户,能自助下载吗": "保时捷融资租赁开具的发票可通过本小程序“服务”中的“电子发票”查看和下载,我们也会将通过短信发送给您。联合出租方上海畅途融资租赁开具的发票会通过邮件发送给您。",
    "个人客户,能自助下载码": "保时捷融资租赁开具的发票可通过本小程序“服务”中的“电子发票”查看和下载。联合出租方上海畅途融资租赁开具的发票,您可联系保时捷融资租赁客户中心申请(400-820-5911,按提示选择“3”)",
    "发票信息有误怎么办": "如发票抬头、税号等信息有误,您可联系保时捷融资租赁客户中心400-820-5911,按提示选择“3”提交更正申请,我们将尽快为您处理。",
    "可以补开吗": "对于过往已支付但未开具发票的款项,您可联系保时捷融资租赁客户中心00-820-5911,按提示选择“3”提交补开申请,我们将在核实后为您尽快补开。",
    "小程序上能批量下载吗": "您可勾选单条、多条、点击“全选”,或通过右上角“筛选”选择指定年月的发票。点击“票据接收”,核对或编辑邮箱地址后,电子发票将发送至该邮箱。",
    "企业更名了,如何变更开票信息": "您可联系保时捷融资租赁客户中心400-820-5911,按提示选择“3”提交更名申请。更名成功后,会按照新的名称为您开具发票。",
    "企业更名了,已开具的发票能重开吗": "您可联系保时捷融资租赁客户中心400-820-5911,按提示选择“3”提交补开申请,我们将协助您进行处理。",
    "结清后需要做什么": "我们会协助您办理解除抵押,包括:\n1. 准备并寄出结清资料\n2. 联系您预约办理时间\n3. 协助您办理解除抵押\n4. 归还车辆登记证",
    "哪些材料会寄出": "寄出的结清材料包括您的车辆登记证,结清证明,以及其他车管所要求的办理解除抵押所需材料。",
    "材料多久会寄出": "合同结清后,我们将在7个工作日内向保时捷融资租赁指定服务商寄出结清资料。",
    "材料寄出能加急吗": "如您有加急需求,请在工作时间联系保时捷融资租赁客户中心400-820-5911,按提示选择“3”,我们将在合同结清后5个工作日内向保时捷融资租赁指定服务商寄出结清资料。",
    "多久联系我办理解除抵押": "保时捷融资租赁指定服务商收到资料后,预计三个工作日内和您联系。",
    "材料能直接寄给我吗": "目前大多数地区车管所不接受个人办理解除抵押业务。为了避免您白跑一趟,我们会将材料寄给保时捷融资租赁指定服务商,协助您办理解除抵押。",
    "办理解除抵押,需要我准备什么": "如您是个人客户,需提供身份证。如您是企业客户,需提供营业执照副本原件。",
    "办理解除抵押,需要我到场吗": "您可以和保时捷融资租赁指定服务商的员工共同前往办理。如时间不便,您也可以委托给保时捷中心或指定服务商的员工完成办理。",
    "车辆登记证如何给到我": "如您是共同前往办理的,机动车登记证在解除抵押完成后直接归还给您。如您是委托办理的,会在解除抵押完成后由保时捷融资租赁指定服务商通过邮寄方式归还。",
    "哪些情况无法申请提前结清": "租金还款日当天,还款期数未满1期,合同当前存在逾期或合同已违约,均无法申请提前结清。",
    "如何申请提前结清": "您首期租金成功还款后,且还款状态正常,可通过以下任一方式申请:\n•\t通过本小程序“服务”中的“提前结清”自助提交申请\n•\t联系购车保时捷中心工作人员协助提交申请\n•\t联系保时捷融资租赁客户中心协助提交申请",
    "收提前结清手续费吗": "需要您支付提前结清手续费,收取标准为:\n•\t如已支付租金未满12期,手续费为剩余未付本金的6%\n•\t如已支付租金满12期或以上,手续费为剩余未付本金的3%",
    "如何还提前结清款项": "若您绑定的扣款银行卡为:\n•\t工商银行、招商银行:如通过扣款还款。请提前在卡内预留足额资金,还款日当天将分别于9:30、15:30进行扣款处理;如通过汇款还款,请勿在卡内预留足额资金,并于当天20:00前还款至专属汇款账户\n•\t交通银行、中信银行、平安银行、民生银行、广发银行、上海银行卡:请于还款日当天20:00前还款至专属汇款账户。",
    "可以试算提前结清金额吗": "如首期租金已成功还款,且合同状态正常,您可通过本小程序“服务”中的“提前结清”试算金额。",
    "节假日可以申请吗": "周末和节假日,您可通过本小程序自助申请,或联系保时捷中心工作人员协助提交申请。工作日9:00至18:00,保时捷融资租赁客户中心可协助您提交申请。",
    "租金日可以申请吗": "租金日当天无法为您办理提前结清。",
    "当天最晚几点还款": "还款日当天我们将进行多轮款项处理:\n•\t如您通过扣款还款,请最晚于当天15:30前将金额存入扣款银行卡\n•\t如您通过汇款还款,请最晚于当天20:00前还款至专属汇款账户",
    "当天未还款,怎么办": "若当天未完成还款,提前结清申请将自动失效。您可重新提交申请,或继续按照合同原还款计划还款。",
    "只能承租人提交申请吗": "承租人和担保人均可提交申请。",
    "忠诚客户有哪些礼遇": "如您再次选择保时捷融资租赁方案,可享受全系车型额外1%的利率优惠。原保时捷融资租赁合同尚未结清,还可享受原合同提前结清费用减免、至高5000元还车账单减免优惠。礼遇详情可在本小程序的“首页”和“服务”中的“忠诚客户”查看。",
    "之前选的金融方案,也能享受吗": "如您是保时捷金融客户,在原业务尚未结清或结清时间不超过3年时,通过保时捷融资租赁方案重购,也可享受全系车型额外1%的利率优惠。",
    "保时捷金融客户介绍": "是指您曾通过保时捷金融服务提供方提供的金融方案购买保时捷 (保时捷金融服务提供方包括:中国银行、中信银行、平安银行、中国农业银行、大众汽车金融(中国)有限公司、德国大众汽车融资租赁(天津)有限公司)。",
    "如何查询我的客户身份": "您可以在本小程序“服务”中的“客户权益”通过车架号或证件号码进行查询。",
    "我有购车意向,如何提交": "保时捷融资租赁客户可通过本小程序“服务”中的“客户权益”提交期末购车意向。收到您的意向申请后,我们会通知保时捷中心联系您预约到店试驾。",
    "什么情况可以返还车辆": "如您选择的是保时捷融资租赁无忧先享产品,合同到期时可享受多种选择权,包括车辆购买、车辆返还、车辆置换。",
    "车辆返还步骤是什么": "车辆返还涉及如下步骤:\n1. 合同到期日10个工作日前,预约到店检测\n2. 合同到期日7个工作日前,完成车辆检测。如符合还车标准,将车辆进行归还\n3. 合同到期后30个工作日内,办理车辆解除抵押和车辆过户",
    "如何预约到店检测": "您可在本小程序“服务”中的“车辆返还”完成预约。预约成功后,保时捷融资租赁客户中心将与您取得联系,安排检测与还车事宜。您也可直接拨打保时捷融资租赁客服热线进行预约。",
    "预约后能改期吗": "您可在预约日期的前一天在本小程序“服务”中的“车辆返还”操作取消或改期。如您未及时取消或改期,会视为一次爽约,两次爽约后将失去还车资格,还请您提前操作。",
    "到店时需携带什么材料": "还请您一并携带好车辆相关材料,包括2把钥匙、车辆行驶证、车主身份证/营业执照原件、公章(仅企业客户)、进口单证等材料。",
    "哪些情况无法返还车辆": "需要至少满足以下情况可在期末返还车辆:\n1. 车辆无重大事故(结构性损伤)、水淹、火烧等情况,并在保时捷授权中心保养\n2. 当前还款不逾期\n3. 合同到期日7个工作日前经检测符合还车车况标准,归还车辆\n具体您可在本小程序“服务”-“车辆返还”-“还车指引”中的“还车标准”查看。",
    "对车况有什么要求": "还车车况需至少满足以下情况:\n1.车身无结构性损伤、车身外观及油漆无明显损伤、内饰无明显损坏痕迹\n2.电气可正常使用、车轮及轮胎无明显损伤、底盘和发动机无异常\n3.电池可正常充放电\n4. 车辆行驶里程不超过2万公里/年\n具体您可在本小程序“服务”-“车辆返还”-“还车指引”中的“还车标准”查看。",
    "检测结果我不满意怎么办": "车辆检测是由保时捷授权经销商或保时捷融资租赁授权的第三方检测机构完成,其检测结果专业且独立。如您对检测结果有异议,我们可安排第二次检测,这次检测需要您支付相关费用。",
    "还车账单包括哪些款项": "如车辆不符合还车车况要求,您可通过支付车辆复原维修费和超额里程费的方式继续归还车辆。您可在本小程序“服务”-“车辆返还”中的“账单支付”查看账单金额。",
    "车辆检测收费吗": "您享有一次免费的车辆到店检测服务,该服务由保时捷授权经销商或保时捷融资租赁授权的第三方检测机构完成。",
}

NO_MATCH = "__NO_MATCH__"

def _normalize(s):
    if not s:
        return ""
    s = unicodedata.normalize("NFKC", s)
    s = s.lower()
    return "".join(ch for ch in s if ch.isalnum())

_NORM_MAP = {_normalize(q): a for q, a in QA_MAP.items()}

def _extract_qa(content):
    """从知识库条目 content 中提取 (问题, 答案)。

    🔴 平台确认(2026-08-04):条目 content 只含"问题"字段(如 {"问题":"..."}),
    不带答案——带答案字段会影响检索准确率。因此:
      - 正常情况:取到"问题" → 答案交给 QA_MAP 映射(主路径,与点选答案同源)
      - 兼容分支:若未来条目加了"答案"字段,直接返回该字段(零润色优先)
    解析失败或非 JSON 时,整段文本视为问题,答案交给 QA_MAP 映射。
    """
    if not content:
        return "", ""
    text = content.strip()
    try:
        obj = json.loads(text)
        if isinstance(obj, dict):
            q = obj.get("问题") or obj.get("question") or obj.get("q") or ""
            a = obj.get("答案") or obj.get("answer") or obj.get("a") or ""
            # 答案必须是 string:数字/dict/list 一律转成字符串(json.dumps 保形)
            if not isinstance(a, str):
                a = json.dumps(a, ensure_ascii=False)
            return q, a
    except Exception:
        pass
    return text, ""

def kb_results_to_answer(kb_results):
    """知识库检索结果数组 -> 答案原文(string)。未命中返回兜底话术(string)。

    🔴 直接取数组第一个结果(平台知识库节点已完成检索 + 阈值过滤,
    传进来的数组第一个就是 top1 命中,本段不做相似度匹配/阈值判断)。

    兼容平台两种输入形态:
      - Array[Object](真实格式):取第一个元素,解析 content 映射答案
      - 单个字符串(旧格式/测试):直接按标准问题查表
    所有返回路径都保证 str 类型。
    """
    if isinstance(kb_results, str):
        # 兼容旧格式:直接当标准问题查表
        key = _normalize(kb_results)
        return _NORM_MAP.get(key, FALLBACK_TEXT) if key else FALLBACK_TEXT
    if not isinstance(kb_results, (list, tuple)) or not kb_results:
        return FALLBACK_TEXT  # 集合为空 -> 兜底话术
    # 🔴 取第一个结果(平台已过滤 top1,不再比较 score)
    item = kb_results[0]
    if not isinstance(item, dict):
        return FALLBACK_TEXT
    content = item.get("content") or ""
    q, a = _extract_qa(content)
    if a:
        return a  # content 自带答案,零润色直接输出(已保证 string)
    key = _normalize(q)
    if not key:
        return FALLBACK_TEXT
    return _NORM_MAP.get(key, FALLBACK_TEXT)

# 兼容旧函数名:kb_to_answer(标准问题字符串)
def kb_to_answer(kb_question):
    return kb_results_to_answer(kb_question)

def data_process(df: dict) -> dict:
    """平台代码节点入口(titan 低代码平台约定格式)。

    输入: df["ragQuestionArr"] (Array<Object>)  # 知识库节点检索结果数组(已过滤 top1)
    输出: result (String)  # 命中=答案原文 / 未命中=兜底话术,始终为字符串
    """
    rag_arr = df.get("ragQuestionArr", []) if isinstance(df, dict) else []
    answer = kb_results_to_answer(rag_arr)
    return {
        "result": answer,  # String
    }

九、验收清单

#用例期望结果
T1点选问题 1返回问题 1 的答案原文,逐字一致
T2点选最后一个问题返回对应答案原文
T3自由输入与某 Q 高度相似(含问号/空格/全角)返回该 Q 对应 A 原文
T4自由输入与所有 Q 都不相似返回固定话术
T5任意输入返回内容不含润色痕迹(与 A 原文或固定话术逐字一致)
T6知识库 A 字段 vs 点选路径 answer同源一致(同 qa_data.json)
T7输入含「客服/电话」等 A 中常见词但语义不对应不误命中含该词答案的 QA(知识库只匹配 Q)
T8多结果检索场景只取第一个结果(平台已按 top1 排序),不拼接
T9点选传无效 question_id(防御)返回固定话术

注:验收前先用「② 扩写测试集」扫阈值 0.7 / 0.8,确认误命中为 0。

十、版本历史与 QA 更新机制

QA 更新机制:需求不变、只更新 QA 时,走固定流程:新 QA Excel → 提取为 qa_data.json → 重新生成两段代码 → 新增版本记录(versions.json)→ 重建本文档 → 重新部署。需求说明部分(一~九章)保持不变,仅第八章代码与第十章版本表更新。

版本QA 数据日期QA 条数Excel 下载说明
V1.0 (当前) 2026-07 75(唯一 74) ⬇ 下载 Excel 首版,8 业务场景,1 个重复问题「是否需要支付费用」

⚠️ 当前版本存在重复问题「是否需要支付费用」(车辆登记证版 / 结清寄送版,答案不同)。代码保留首条(车辆登记证版答案);如页面预置了两个相同文本问题,点选无法区分,建议改为可区分文案。

扩写测试集 · 设计方法论(对抗性把关)

本测试集用于评估机器人的问答效果,同时公开给合作方查看和使用。遵循《扩写测试集构建标准 v2.0》(查看完整标准):扩写 = 从真实用户的表达空间采样,而不是语法变换的穷举——每条变体都是真人会说的话,带类型、难度和验证点,没有验证点的扩写不进测试集。

正样本 7 类(验证机器人「该答的答得上」)+ 难度梯度 L1/L2/L3

类型说明覆盖维度
同义改写核心语义词换同义词/近义词词汇选择
口语化书面语 → 微信口语表达风格
句式变换陈述↔疑问、完整→省略、主动→被动句式结构
话题前置先说背景/场景,再抛出问题信息组织
术语/俗称专业词 ↔ 用户日常词(大绿本/解押)词汇选择
带语气词加"呀/呢/啊/哈/吧"等微信语气表达风格
场景化求助带着具体处境问(焦急/确认/求操作)信息组织

难度梯度:L1 高相似(≤40%)/ L2 中等(≈40%)/ L3 高难度(≈20%)——L3 命中率最能区分平台检索能力。每条变体都带难度标注。

负样本 4 类(验证机器人「不该答的不答」)

类型说明验证点
无关输入与业务无关(天气/问候/其他业务)应返回固定话术,不编造答案
关键词陷阱含答案中常见词但语义不对应防撞车:不因「客服/电话」等词误命中(对应验收 T7)
跨场景混淆两个场景都有类似问题验证不串答:答非所问是最大伤害
边界输入空串/纯标点/emoji/超长/语音噪声验证兜底话术健壮性

⏳ 待补充:上线后从「运营管理-执行日志」(T+1)采集真实未命中 query,作为下一轮扩写的真实样本来源。

正样本:7 类 75 组(451 条输入)

每组 = 标准 Q(基准)+ 3~6 条变体(7 类真人表达,标注难度)。每条变体标注类型 + 难度 + 验证点。

#场景标准 Q变体(类型/难度 + 测试输入 + 验证点)期望结果
1 常规还款 有哪些还款方式
同义改写 L1 还款方式都有哪些
验证语义检索召回:换同义词/近义词问同一件事,应命中同一 QA (L1 高相似)

口语化 L2 怎么还钱?
验证语义检索召回:真人口语问法,应命中同一 QA (L2 中等)

带语气词 L2 还钱都有哪些方式呀
验证语义检索召回:带微信语气词的问法,应命中同一 QA (L2 中等)

话题前置 L3 自动扣款和汇款都能选吗
验证语义检索召回:先说场景再提问,应命中同一 QA (L3 高难度)

场景化求助 L3 除了绑卡扣款还有别的办法吗
验证深层语义检索:带具体处境的求助,应命中同一 QA (L3 高难度)

句式变换 L2 还款能分几种方式
验证语义检索召回:句式重组后语义等价,应命中同一 QA (L2 中等)
命中该组 QA
2 常规还款 自动扣款支持哪些银行
同义改写 L1 哪些银行能自动扣款
验证语义检索召回:换同义词/近义词问同一件事,应命中同一 QA (L1 高相似)

口语化 L2 自动扣款能用哪些卡
验证语义检索召回:真人口语问法,应命中同一 QA (L2 中等)

话题前置 L3 招行卡能办自动扣款吗
验证语义检索召回:先说场景再提问,应命中同一 QA (L3 高难度)

场景化求助 L2 我这张卡能扣款吗
验证深层语义检索:带具体处境的求助,应命中同一 QA (L2 中等)

带语气词 L2 支持自动扣款的银行有哪些呀
验证语义检索召回:带微信语气词的问法,应命中同一 QA (L2 中等)
命中该组 QA
3 常规还款 最晚可以几点还款
同义改写 L1 每期还款最晚到几点
验证语义检索召回:换同义词/近义词问同一件事,应命中同一 QA (L1 高相似)

口语化 L2 这期最后几点前要还上
验证语义检索召回:真人口语问法,应命中同一 QA (L2 中等)

话题前置 L2 每期最晚几点前把钱存进去
验证语义检索召回:先说场景再提问,应命中同一 QA (L2 中等)

场景化求助 L3 我下班再存这个月的钱来得及吗
验证深层语义检索:带具体处境的求助,应命中同一 QA (L3 高难度)

句式变换 L2 每期还款时限是几点
验证语义检索召回:句式重组后语义等价,应命中同一 QA (L2 中等)
命中该组 QA
4 常规还款 可以通过汇款还款吗
口语化 L1 能转账还款不
验证语义检索召回:真人口语问法,应命中同一 QA (L1 高相似)

同义改写 L2 支持汇款方式还款吗
验证语义检索召回:换同义词/近义词问同一件事,应命中同一 QA (L2 中等)

话题前置 L3 不绑卡直接打钱行不行
验证语义检索召回:先说场景再提问,应命中同一 QA (L3 高难度)

句式变换 L2 汇款还款怎么操作
验证语义检索召回:句式重组后语义等价,应命中同一 QA (L2 中等)

术语/俗称 L2 可以银行转账还款吗
验证语义检索召回:术语↔俗称互换(如大绿本),应命中同一 QA (L2 中等)
命中该组 QA
5 常规还款 我会收到提醒短信吗
同义改写 L1 还款前会发短信提醒吗
验证语义检索召回:换同义词/近义词问同一件事,应命中同一 QA (L1 高相似)

口语化 L2 有没有还款提醒
验证语义检索召回:真人口语问法,应命中同一 QA (L2 中等)

句式变换 L2 快到还款日会通知我吗
验证语义检索召回:句式重组后语义等价,应命中同一 QA (L2 中等)

场景化求助 L3 还款后也会发短信通知吗
验证深层语义检索:带具体处境的求助,应命中同一 QA (L3 高难度)

带语气词 L2 你们会发还款提醒短信不
验证语义检索召回:带微信语气词的问法,应命中同一 QA (L2 中等)
命中该组 QA
6 常规还款 收到了余额不足还款失败短信
场景化求助 L1 刚收到短信说我余额不够扣款失败了
验证深层语义检索:带具体处境的求助,应命中同一 QA (L1 高相似)

同义改写 L2 扣款失败是因为卡里没钱吗
验证语义检索召回:换同义词/近义词问同一件事,应命中同一 QA (L2 中等)

口语化 L2 余额不足没扣成功怎么办
验证语义检索召回:真人口语问法,应命中同一 QA (L2 中等)

句式变换 L2 收到余额不足短信了
验证语义检索召回:句式重组后语义等价,应命中同一 QA (L2 中等)

带语气词 L2 卡里钱不够没扣款成功咋办呀
验证语义检索召回:带微信语气词的问法,应命中同一 QA (L2 中等)
命中该组 QA
7 常规还款 扣款银行卡发生限额、冻结、锁定
口语化 L1 扣款卡被限额了咋整
验证语义检索召回:真人口语问法,应命中同一 QA (L1 高相似)

同义改写 L2 银行卡被冻结了还能扣款吗
验证语义检索召回:换同义词/近义词问同一件事,应命中同一 QA (L2 中等)

句式变换 L2 扣款的卡锁住了怎么办
验证语义检索召回:句式重组后语义等价,应命中同一 QA (L2 中等)

场景化求助 L2 我卡被限额了会不会扣款失败
验证深层语义检索:带具体处境的求助,应命中同一 QA (L2 中等)

术语/俗称 L2 扣款银行卡状态异常
验证语义检索召回:术语↔俗称互换(如大绿本),应命中同一 QA (L2 中等)
命中该组 QA
8 常规还款 周末和节假日可以还款吗
口语化 L1 周末能还款吗
验证语义检索召回:真人口语问法,应命中同一 QA (L1 高相似)

同义改写 L2 节假日支持还款吗
验证语义检索召回:换同义词/近义词问同一件事,应命中同一 QA (L2 中等)

句式变换 L2 周六周日可以还吗
验证语义检索召回:句式重组后语义等价,应命中同一 QA (L2 中等)

话题前置 L3 法定节假日还款会顺延吗
验证语义检索召回:先说场景再提问,应命中同一 QA (L3 高难度)

场景化求助 L2 周末还款正常扣款吗
验证深层语义检索:带具体处境的求助,应命中同一 QA (L2 中等)
命中该组 QA
9 常规还款 如何查看还款计划
口语化 L1 还款计划在哪看
验证语义检索召回:真人口语问法,应命中同一 QA (L1 高相似)

句式变换 L1 怎么查看还款计划
验证语义检索召回:句式重组后语义等价,应命中同一 QA (L1 高相似)

同义改写 L2 还款计划表从哪里看
验证语义检索召回:换同义词/近义词问同一件事,应命中同一 QA (L2 中等)

场景化求助 L3 我想看下期要还多少
验证深层语义检索:带具体处境的求助,应命中同一 QA (L3 高难度)

带语气词 L2 还款计划怎么看呀
验证语义检索召回:带微信语气词的问法,应命中同一 QA (L2 中等)
命中该组 QA
10 常规还款 如何查看汇款结余
口语化 L1 汇款结余在哪看
验证语义检索召回:真人口语问法,应命中同一 QA (L1 高相似)

句式变换 L1 怎么查看汇款结余
验证语义检索召回:句式重组后语义等价,应命中同一 QA (L1 高相似)

口语化 L2 账户里多汇的钱怎么查
验证语义检索召回:真人口语问法,应命中同一 QA (L2 中等)

场景化求助 L3 汇款多打了怎么查余额
验证深层语义检索:带具体处境的求助,应命中同一 QA (L3 高难度)

同义改写 L2 汇款结余怎么查询
验证语义检索召回:换同义词/近义词问同一件事,应命中同一 QA (L2 中等)
命中该组 QA
11 变更银行卡 个人客户,可以选择哪些银行卡
口语化 L1 个人能换哪些银行卡
验证语义检索召回:真人口语问法,应命中同一 QA (L1 高相似)

句式变换 L1 个人客户可选的银行卡有哪些
验证语义检索召回:句式重组后语义等价,应命中同一 QA (L1 高相似)

同义改写 L2 个人可以绑哪些银行的卡
验证语义检索召回:换同义词/近义词问同一件事,应命中同一 QA (L2 中等)

场景化求助 L3 我个人的话能换招行卡吗
验证深层语义检索:带具体处境的求助,应命中同一 QA (L3 高难度)

话题前置 L2 个人换卡有银行限制吗
验证语义检索召回:先说场景再提问,应命中同一 QA (L2 中等)
命中该组 QA
12 变更银行卡 企业客户,可以选择哪些银行账户
口语化 L1 企业能换什么银行账户
验证语义检索召回:真人口语问法,应命中同一 QA (L1 高相似)

句式变换 L1 企业客户可选的账户有哪些
验证语义检索召回:句式重组后语义等价,应命中同一 QA (L1 高相似)

场景化求助 L3 公司账户能换成工行吗
验证深层语义检索:带具体处境的求助,应命中同一 QA (L3 高难度)

同义改写 L2 企业可以绑哪些银行的账户
验证语义检索召回:换同义词/近义词问同一件事,应命中同一 QA (L2 中等)

话题前置 L2 企业换账户有要求吗
验证语义检索召回:先说场景再提问,应命中同一 QA (L2 中等)
命中该组 QA
13 变更银行卡 能自助办理吗
同义改写 L1 换银行卡可以自己办吗
验证语义检索召回:换同义词/近义词问同一件事,应命中同一 QA (L1 高相似)

口语化 L2 能在小程序上自己换卡吗
验证语义检索召回:真人口语问法,应命中同一 QA (L2 中等)

句式变换 L2 自己就能换卡吗
验证语义检索召回:句式重组后语义等价,应命中同一 QA (L2 中等)

话题前置 L3 不用跑门店自己换卡行不行
验证语义检索召回:先说场景再提问,应命中同一 QA (L3 高难度)

带语气词 L2 自助办理换卡在哪操作呀
验证语义检索召回:带微信语气词的问法,应命中同一 QA (L2 中等)
命中该组 QA
14 变更银行卡 承租人操作变更注意事项
口语化 L1 承租人换卡要注意啥
验证语义检索召回:真人口语问法,应命中同一 QA (L1 高相似)

句式变换 L1 承租人变更有什么注意事项
验证语义检索召回:句式重组后语义等价,应命中同一 QA (L1 高相似)

同义改写 L2 承租人操作换卡要注意什么
验证语义检索召回:换同义词/近义词问同一件事,应命中同一 QA (L2 中等)

话题前置 L2 我是承租人,换卡要注意啥
验证语义检索召回:先说场景再提问,应命中同一 QA (L2 中等)

场景化求助 L3 承租人换卡有特别要求吗
验证深层语义检索:带具体处境的求助,应命中同一 QA (L3 高难度)
命中该组 QA
15 变更银行卡 担保人操作变更注意事项
口语化 L1 担保人换卡有什么要注意的
验证语义检索召回:真人口语问法,应命中同一 QA (L1 高相似)

句式变换 L1 担保人变更要注意什么
验证语义检索召回:句式重组后语义等价,应命中同一 QA (L1 高相似)

同义改写 L2 担保人操作换卡注意啥
验证语义检索召回:换同义词/近义词问同一件事,应命中同一 QA (L2 中等)

场景化求助 L3 担保人也能自己换卡吗
验证深层语义检索:带具体处境的求助,应命中同一 QA (L3 高难度)

话题前置 L2 担保人换卡有啥要求
验证语义检索召回:先说场景再提问,应命中同一 QA (L2 中等)
命中该组 QA
16 变更银行卡 扣款过程变更了银行卡
口语化 L1 正在扣款时换了卡会怎样
验证语义检索召回:真人口语问法,应命中同一 QA (L1 高相似)

句式变换 L1 扣款中途变更银行卡怎么办
验证语义检索召回:句式重组后语义等价,应命中同一 QA (L1 高相似)

同义改写 L2 扣款期间换卡有影响吗
验证语义检索召回:换同义词/近义词问同一件事,应命中同一 QA (L2 中等)

话题前置 L3 变更后本期扣款用新卡还是旧卡
验证语义检索召回:先说场景再提问,应命中同一 QA (L3 高难度)

场景化求助 L3 我刚换了卡这期会从哪扣
验证深层语义检索:带具体处境的求助,应命中同一 QA (L3 高难度)
命中该组 QA
17 变更银行卡 如何查看变更后的银行卡信息
口语化 L1 换完卡去哪查新卡信息
验证语义检索召回:真人口语问法,应命中同一 QA (L1 高相似)

句式变换 L1 怎么查看变更后的银行卡
验证语义检索召回:句式重组后语义等价,应命中同一 QA (L1 高相似)

同义改写 L2 变更后银行卡信息在哪看
验证语义检索召回:换同义词/近义词问同一件事,应命中同一 QA (L2 中等)

场景化求助 L3 新卡号在哪里能看到
验证深层语义检索:带具体处境的求助,应命中同一 QA (L3 高难度)

带语气词 L2 变更后的卡在哪查呀
验证语义检索召回:带微信语气词的问法,应命中同一 QA (L2 中等)
命中该组 QA
18 变更银行卡 银行卡挂失补办了,需要变更吗
口语化 L1 卡挂失补办了要重新绑定吗
验证语义检索召回:真人口语问法,应命中同一 QA (L1 高相似)

句式变换 L1 挂失补办后需要变更卡吗
验证语义检索召回:句式重组后语义等价,应命中同一 QA (L1 高相似)

场景化求助 L3 补办的新卡能正常扣款吗
验证深层语义检索:带具体处境的求助,应命中同一 QA (L3 高难度)

同义改写 L2 银行卡补办后要不要改
验证语义检索召回:换同义词/近义词问同一件事,应命中同一 QA (L2 中等)

带语气词 L2 补办了卡还需要再变更不
验证语义检索召回:带微信语气词的问法,应命中同一 QA (L2 中等)
命中该组 QA
19 变更银行卡 旧的银行卡如何解绑
口语化 L1 旧卡怎么解绑
验证语义检索召回:真人口语问法,应命中同一 QA (L1 高相似)

句式变换 L1 如何解绑原来的银行卡
验证语义检索召回:句式重组后语义等价,应命中同一 QA (L1 高相似)

话题前置 L3 换卡后旧卡会自动解绑吗
验证语义检索召回:先说场景再提问,应命中同一 QA (L3 高难度)

同义改写 L2 旧卡解绑在哪操作
验证语义检索召回:换同义词/近义词问同一件事,应命中同一 QA (L2 中等)

术语/俗称 L2 原来那张卡怎么解除绑定
验证语义检索召回:术语↔俗称互换(如大绿本),应命中同一 QA (L2 中等)
命中该组 QA
20 变更银行卡 能再次发起变更吗
口语化 L1 可以再换一次卡吗
验证语义检索召回:真人口语问法,应命中同一 QA (L1 高相似)

句式变换 L1 变更成功后还能再变吗
验证语义检索召回:句式重组后语义等价,应命中同一 QA (L1 高相似)

同义改写 L2 能重复发起银行卡变更吗
验证语义检索召回:换同义词/近义词问同一件事,应命中同一 QA (L2 中等)

场景化求助 L3 我刚换完卡想再换一次行吗
验证深层语义检索:带具体处境的求助,应命中同一 QA (L3 高难度)

带语气词 L2 还能再变更银行卡不
验证语义检索召回:带微信语气词的问法,应命中同一 QA (L2 中等)
命中该组 QA
21 车辆登记证 我的车辆登记证保存在哪里
术语/俗称 L1 大绿本在谁那儿保管
验证语义检索召回:术语↔俗称互换(如大绿本),应命中同一 QA (L1 高相似)

句式变换 L1 车辆登记证在哪里保存
验证语义检索召回:句式重组后语义等价,应命中同一 QA (L1 高相似)

口语化 L2 我的车本放在哪里
验证语义检索召回:真人口语问法,应命中同一 QA (L2 中等)

同义改写 L2 登记证是你们保管吗
验证语义检索召回:换同义词/近义词问同一件事,应命中同一 QA (L2 中等)

场景化求助 L3 我想借大绿本去哪申请
验证深层语义检索:带具体处境的求助,应命中同一 QA (L3 高难度)
命中该组 QA
22 车辆登记证 哪些情况可以申请原件借阅
同义改写 L1 什么情况能借登记证原件
验证语义检索召回:换同义词/近义词问同一件事,应命中同一 QA (L1 高相似)

句式变换 L1 哪些情况下可以借原件
验证语义检索召回:句式重组后语义等价,应命中同一 QA (L1 高相似)

场景化求助 L3 想借大绿本办改色行吗
验证深层语义检索:带具体处境的求助,应命中同一 QA (L3 高难度)

口语化 L2 申请借阅需要啥条件
验证语义检索召回:真人口语问法,应命中同一 QA (L2 中等)

话题前置 L2 什么场景可以借登记证
验证语义检索召回:先说场景再提问,应命中同一 QA (L2 中等)
命中该组 QA
23 车辆登记证 需要提供哪些材料申请原件借阅
口语化 L1 借登记证要准备什么材料
验证语义检索召回:真人口语问法,应命中同一 QA (L1 高相似)

句式变换 L1 申请借阅需要哪些材料
验证语义检索召回:句式重组后语义等价,应命中同一 QA (L1 高相似)

同义改写 L2 借阅要提交什么证件
验证语义检索召回:换同义词/近义词问同一件事,应命中同一 QA (L2 中等)

场景化求助 L3 我去借大绿本要带啥
验证深层语义检索:带具体处境的求助,应命中同一 QA (L3 高难度)

话题前置 L2 借阅原件要提供啥资料
验证语义检索召回:先说场景再提问,应命中同一 QA (L2 中等)
命中该组 QA
24 车辆登记证 最长能借阅多久
同义改写 L1 登记证最多能借多长时间
验证语义检索召回:换同义词/近义词问同一件事,应命中同一 QA (L1 高相似)

句式变换 L1 最长借阅期限是多久
验证语义检索召回:句式重组后语义等价,应命中同一 QA (L1 高相似)

术语/俗称 L2 大绿本能借多久
验证语义检索召回:术语↔俗称互换(如大绿本),应命中同一 QA (L2 中等)

场景化求助 L3 借期到了能续吗
验证深层语义检索:带具体处境的求助,应命中同一 QA (L3 高难度)

口语化 L2 借阅期限多少天
验证语义检索召回:真人口语问法,应命中同一 QA (L2 中等)
命中该组 QA
25 车辆登记证 是否需要支付费用
口语化 L1 借登记证要钱吗
验证语义检索召回:真人口语问法,应命中同一 QA (L1 高相似)

同义改写 L2 登记证借阅收费吗
验证语义检索召回:换同义词/近义词问同一件事,应命中同一 QA (L2 中等)

术语/俗称 L2 借大绿本免费吗
验证语义检索召回:术语↔俗称互换(如大绿本),应命中同一 QA (L2 中等)

带语气词 L2 借阅要交费用不
验证语义检索召回:带微信语气词的问法,应命中同一 QA (L2 中等)

句式变换 L1 借登记证需要付费吗
验证语义检索召回:句式重组后语义等价,应命中同一 QA (L1 高相似)
命中该组 QA
26 车辆登记证 可以委托其他人办理吗
口语化 L1 能让别人帮我借吗
验证语义检索召回:真人口语问法,应命中同一 QA (L1 高相似)

句式变换 L1 可以委托他人办理借阅吗
验证语义检索召回:句式重组后语义等价,应命中同一 QA (L1 高相似)

场景化求助 L3 家人可以代办借阅吗
验证深层语义检索:带具体处境的求助,应命中同一 QA (L3 高难度)

同义改写 L2 借阅必须本人去吗
验证语义检索召回:换同义词/近义词问同一件事,应命中同一 QA (L2 中等)

带语气词 L2 能找人代办不
验证语义检索召回:带微信语气词的问法,应命中同一 QA (L2 中等)
命中该组 QA
27 车辆登记证 借阅的原件,寄到哪里
同义改写 L1 借出的登记证寄到哪
验证语义检索召回:换同义词/近义词问同一件事,应命中同一 QA (L1 高相似)

句式变换 L1 原件寄到哪里
验证语义检索召回:句式重组后语义等价,应命中同一 QA (L1 高相似)

话题前置 L3 登记证是寄给我还是寄给店里
验证语义检索召回:先说场景再提问,应命中同一 QA (L3 高难度)

口语化 L2 借阅原件寄到哪个地址
验证语义检索召回:真人口语问法,应命中同一 QA (L2 中等)

术语/俗称 L2 大绿本会寄到哪呀
验证语义检索召回:术语↔俗称互换(如大绿本),应命中同一 QA (L2 中等)
命中该组 QA
28 车辆登记证 使用完毕后如何归还
口语化 L1 用完了登记证怎么还
验证语义检索召回:真人口语问法,应命中同一 QA (L1 高相似)

句式变换 L1 借阅完毕后如何归还
验证语义检索召回:句式重组后语义等价,应命中同一 QA (L1 高相似)

话题前置 L3 归还登记证需要自己寄吗
验证语义检索召回:先说场景再提问,应命中同一 QA (L3 高难度)

同义改写 L2 登记证用完还给谁
验证语义检索召回:换同义词/近义词问同一件事,应命中同一 QA (L2 中等)

术语/俗称 L2 用完大绿本怎么还回去
验证语义检索召回:术语↔俗称互换(如大绿本),应命中同一 QA (L2 中等)
命中该组 QA
29 车辆登记证 扫描件自助下载
同义改写 L1 登记证扫描件能自己下载吗
验证语义检索召回:换同义词/近义词问同一件事,应命中同一 QA (L1 高相似)

句式变换 L1 扫描件可以自助下载吗
验证语义检索召回:句式重组后语义等价,应命中同一 QA (L1 高相似)

口语化 L2 电子版登记证在哪下载
验证语义检索召回:真人口语问法,应命中同一 QA (L2 中等)

话题前置 L2 小程序上能下载扫描件吗
验证语义检索召回:先说场景再提问,应命中同一 QA (L2 中等)

带语气词 L2 登记证扫描件怎么下载呀
验证语义检索召回:带微信语气词的问法,应命中同一 QA (L2 中等)
命中该组 QA
30 车辆登记证 扫描件无法查看
口语化 L1 扫描件看不了是咋回事
验证语义检索召回:真人口语问法,应命中同一 QA (L1 高相似)

句式变换 L1 登记证扫描件打不开
验证语义检索召回:句式重组后语义等价,应命中同一 QA (L1 高相似)

场景化求助 L3 小程序里找不到扫描件
验证深层语义检索:带具体处境的求助,应命中同一 QA (L3 高难度)

同义改写 L2 扫描件无法查看怎么办
验证语义检索召回:换同义词/近义词问同一件事,应命中同一 QA (L2 中等)

话题前置 L2 为什么扫描件看不了
验证语义检索召回:先说场景再提问,应命中同一 QA (L2 中等)
命中该组 QA
31 电子发票 哪些费用可以开票
同义改写 L1 什么费用能开发票
验证语义检索召回:换同义词/近义词问同一件事,应命中同一 QA (L1 高相似)

句式变换 L1 哪些项目可以开票
验证语义检索召回:句式重组后语义等价,应命中同一 QA (L1 高相似)

话题前置 L3 利息能开票吗
验证语义检索召回:先说场景再提问,应命中同一 QA (L3 高难度)

带语气词 L2 哪些钱能开票呀
验证语义检索召回:带微信语气词的问法,应命中同一 QA (L2 中等)

场景化求助 L2 违约金能开发票吗
验证深层语义检索:带具体处境的求助,应命中同一 QA (L2 中等)
命中该组 QA
32 电子发票 会在什么时候开具
口语化 L1 发票什么时候开
验证语义检索召回:真人口语问法,应命中同一 QA (L1 高相似)

句式变换 L1 什么时候会开具发票
验证语义检索召回:句式重组后语义等价,应命中同一 QA (L1 高相似)

同义改写 L2 发票多久能开出来
验证语义检索召回:换同义词/近义词问同一件事,应命中同一 QA (L2 中等)

场景化求助 L3 我这个月的发票啥时候开
验证深层语义检索:带具体处境的求助,应命中同一 QA (L3 高难度)

话题前置 L2 开票时间是什么时候
验证语义检索召回:先说场景再提问,应命中同一 QA (L2 中等)
命中该组 QA
33 电子发票 利息发票为什么来自两方
口语化 L1 为啥利息发票是两家开的
验证语义检索召回:真人口语问法,应命中同一 QA (L1 高相似)

句式变换 L1 为什么利息发票来自两家
验证语义检索召回:句式重组后语义等价,应命中同一 QA (L1 高相似)

同义改写 L2 利息发票为什么有两个开票方
验证语义检索召回:换同义词/近义词问同一件事,应命中同一 QA (L2 中等)

话题前置 L3 两家开的发票金额怎么算
验证语义检索召回:先说场景再提问,应命中同一 QA (L3 高难度)

带语气词 L2 利息发票为啥分两家开呀
验证语义检索召回:带微信语气词的问法,应命中同一 QA (L2 中等)
命中该组 QA
34 电子发票 企业客户,能自助下载吗
口语化 L1 企业能自己下载发票吗
验证语义检索召回:真人口语问法,应命中同一 QA (L1 高相似)

句式变换 L1 企业客户可以自助下载吗
验证语义检索召回:句式重组后语义等价,应命中同一 QA (L1 高相似)

同义改写 L2 企业发票能自助下载吗
验证语义检索召回:换同义词/近义词问同一件事,应命中同一 QA (L2 中等)

场景化求助 L3 企业发票在哪拿
验证深层语义检索:带具体处境的求助,应命中同一 QA (L3 高难度)

带语气词 L2 企业客户能下载发票不
验证语义检索召回:带微信语气词的问法,应命中同一 QA (L2 中等)
命中该组 QA
35 电子发票 个人客户,能自助下载码
口语化 L1 个人能自己下载发票吗
验证语义检索召回:真人口语问法,应命中同一 QA (L1 高相似)

句式变换 L1 个人客户可以自助下载吗
验证语义检索召回:句式重组后语义等价,应命中同一 QA (L1 高相似)

同义改写 L2 个人发票能自助下载吗
验证语义检索召回:换同义词/近义词问同一件事,应命中同一 QA (L2 中等)

场景化求助 L3 发票下载入口在哪
验证深层语义检索:带具体处境的求助,应命中同一 QA (L3 高难度)

带语气词 L2 个人能下载发票不
验证语义检索召回:带微信语气词的问法,应命中同一 QA (L2 中等)
命中该组 QA
36 电子发票 发票信息有误怎么办
口语化 L1 发票抬头开错了咋办
验证语义检索召回:真人口语问法,应命中同一 QA (L1 高相似)

句式变换 L1 发票信息错误如何处理
验证语义检索召回:句式重组后语义等价,应命中同一 QA (L1 高相似)

场景化求助 L3 发票税号写错了能改吗
验证深层语义检索:带具体处境的求助,应命中同一 QA (L3 高难度)

同义改写 L2 发票信息有误怎么处理
验证语义检索召回:换同义词/近义词问同一件事,应命中同一 QA (L2 中等)

带语气词 L2 发票信息错了能改不
验证语义检索召回:带微信语气词的问法,应命中同一 QA (L2 中等)
命中该组 QA
37 电子发票 可以补开吗
口语化 L1 以前没开的票能补吗
验证语义检索召回:真人口语问法,应命中同一 QA (L1 高相似)

句式变换 L1 可以补开发票吗
验证语义检索召回:句式重组后语义等价,应命中同一 QA (L1 高相似)

话题前置 L3 去年的发票还能开吗
验证语义检索召回:先说场景再提问,应命中同一 QA (L3 高难度)

同义改写 L2 能补开之前的发票吗
验证语义检索召回:换同义词/近义词问同一件事,应命中同一 QA (L2 中等)

带语气词 L2 发票能补开不
验证语义检索召回:带微信语气词的问法,应命中同一 QA (L2 中等)
命中该组 QA
38 电子发票 小程序上能批量下载吗
口语化 L1 能一次下载多张发票吗
验证语义检索召回:真人口语问法,应命中同一 QA (L1 高相似)

句式变换 L1 小程序支持批量下载吗
验证语义检索召回:句式重组后语义等价,应命中同一 QA (L1 高相似)

场景化求助 L3 发票能打包发邮箱吗
验证深层语义检索:带具体处境的求助,应命中同一 QA (L3 高难度)

同义改写 L2 可以批量下载发票吗
验证语义检索召回:换同义词/近义词问同一件事,应命中同一 QA (L2 中等)

话题前置 L2 多张发票能一起下吗
验证语义检索召回:先说场景再提问,应命中同一 QA (L2 中等)
命中该组 QA
39 电子发票 企业更名了,如何变更开票信息
口语化 L1 公司改名了发票信息怎么改
验证语义检索召回:真人口语问法,应命中同一 QA (L1 高相似)

句式变换 L1 企业更名后如何变更开票信息
验证语义检索召回:句式重组后语义等价,应命中同一 QA (L1 高相似)

话题前置 L3 更名后开票抬头要更新吗
验证语义检索召回:先说场景再提问,应命中同一 QA (L3 高难度)

同义改写 L2 公司改名怎么改开票信息
验证语义检索召回:换同义词/近义词问同一件事,应命中同一 QA (L2 中等)

带语气词 L2 企业更名了开票咋办
验证语义检索召回:带微信语气词的问法,应命中同一 QA (L2 中等)
命中该组 QA
40 电子发票 企业更名了,已开具的发票能重开吗
口语化 L1 公司改名后旧发票能重开吗
验证语义检索召回:真人口语问法,应命中同一 QA (L1 高相似)

句式变换 L1 企业更名后已开发票能重开吗
验证语义检索召回:句式重组后语义等价,应命中同一 QA (L1 高相似)

话题前置 L3 更名前的发票要作废重开吗
验证语义检索召回:先说场景再提问,应命中同一 QA (L3 高难度)

同义改写 L2 改名后已开的票能重开吗
验证语义检索召回:换同义词/近义词问同一件事,应命中同一 QA (L2 中等)

带语气词 L2 更名后旧发票咋办
验证语义检索召回:带微信语气词的问法,应命中同一 QA (L2 中等)
命中该组 QA
41 结清寄送 结清后需要做什么
口语化 L1 还完款之后要干嘛
验证语义检索召回:真人口语问法,应命中同一 QA (L1 高相似)

句式变换 L1 结清后有哪些流程
验证语义检索召回:句式重组后语义等价,应命中同一 QA (L1 高相似)

同义改写 L2 结清后还要办什么手续
验证语义检索召回:换同义词/近义词问同一件事,应命中同一 QA (L2 中等)

场景化求助 L3 我结清了接下来等什么
验证深层语义检索:带具体处境的求助,应命中同一 QA (L3 高难度)

带语气词 L2 结清后要做啥呀
验证语义检索召回:带微信语气词的问法,应命中同一 QA (L2 中等)
命中该组 QA
42 结清寄送 哪些材料会寄出
口语化 L1 会寄哪些资料给我
验证语义检索召回:真人口语问法,应命中同一 QA (L1 高相似)

句式变换 L1 寄出的结清材料有哪些
验证语义检索召回:句式重组后语义等价,应命中同一 QA (L1 高相似)

同义改写 L2 结清资料都有啥
验证语义检索召回:换同义词/近义词问同一件事,应命中同一 QA (L2 中等)

话题前置 L3 登记证会一起寄回来吗
验证语义检索召回:先说场景再提问,应命中同一 QA (L3 高难度)

场景化求助 L2 寄来的材料包括什么
验证深层语义检索:带具体处境的求助,应命中同一 QA (L2 中等)
命中该组 QA
43 结清寄送 材料多久会寄出
口语化 L1 结清材料多久寄出来
验证语义检索召回:真人口语问法,应命中同一 QA (L1 高相似)

句式变换 L1 材料多长时间寄出
验证语义检索召回:句式重组后语义等价,应命中同一 QA (L1 高相似)

同义改写 L2 几天能收到结清资料
验证语义检索召回:换同义词/近义词问同一件事,应命中同一 QA (L2 中等)

话题前置 L2 结清后材料啥时候寄
验证语义检索召回:先说场景再提问,应命中同一 QA (L2 中等)

带语气词 L2 材料寄出要等几天呀
验证语义检索召回:带微信语气词的问法,应命中同一 QA (L2 中等)
命中该组 QA
44 结清寄送 材料寄出能加急吗
口语化 L1 材料能加急寄吗
验证语义检索召回:真人口语问法,应命中同一 QA (L1 高相似)

句式变换 L1 寄出材料可以加急吗
验证语义检索召回:句式重组后语义等价,应命中同一 QA (L1 高相似)

场景化求助 L3 急用登记证能快点寄吗
验证深层语义检索:带具体处境的求助,应命中同一 QA (L3 高难度)

同义改写 L2 结清材料能加急处理吗
验证语义检索召回:换同义词/近义词问同一件事,应命中同一 QA (L2 中等)

带语气词 L2 材料寄出能加快不
验证语义检索召回:带微信语气词的问法,应命中同一 QA (L2 中等)
命中该组 QA
45 结清寄送 多久联系我办理解除抵押
口语化 L1 什么时候有人联系我解除抵押
验证语义检索召回:真人口语问法,应命中同一 QA (L1 高相似)

句式变换 L1 多久会联系我办解除抵押
验证语义检索召回:句式重组后语义等价,应命中同一 QA (L1 高相似)

同义改写 L2 解除抵押要等几天
验证语义检索召回:换同义词/近义词问同一件事,应命中同一 QA (L2 中等)

话题前置 L2 结清后啥时候安排解除抵押
验证语义检索召回:先说场景再提问,应命中同一 QA (L2 中等)

术语/俗称 L3 会有客服联系我办解押吗
验证语义检索召回:术语↔俗称互换(如大绿本),应命中同一 QA (L3 高难度)
命中该组 QA
46 结清寄送 材料能直接寄给我吗
口语化 L1 能直接把材料寄给我吗
验证语义检索召回:真人口语问法,应命中同一 QA (L1 高相似)

句式变换 L1 结清材料可以寄本人吗
验证语义检索召回:句式重组后语义等价,应命中同一 QA (L1 高相似)

话题前置 L3 为啥材料不寄给我本人
验证语义检索召回:先说场景再提问,应命中同一 QA (L3 高难度)

同义改写 L2 材料能寄到我手上吗
验证语义检索召回:换同义词/近义词问同一件事,应命中同一 QA (L2 中等)

场景化求助 L2 材料直接寄我可以吗
验证深层语义检索:带具体处境的求助,应命中同一 QA (L2 中等)
命中该组 QA
47 结清寄送 办理解除抵押,需要我准备什么
口语化 L1 解除抵押我要准备啥
验证语义检索召回:真人口语问法,应命中同一 QA (L1 高相似)

句式变换 L1 办解除抵押需要准备什么
验证语义检索召回:句式重组后语义等价,应命中同一 QA (L1 高相似)

同义改写 L2 解除抵押要带什么证件
验证语义检索召回:换同义词/近义词问同一件事,应命中同一 QA (L2 中等)

术语/俗称 L3 办解押要带身份证吗
验证语义检索召回:术语↔俗称互换(如大绿本),应命中同一 QA (L3 高难度)

话题前置 L2 解除抵押要准备啥材料
验证语义检索召回:先说场景再提问,应命中同一 QA (L2 中等)
命中该组 QA
48 结清寄送 办理解除抵押,需要我到场吗
口语化 L1 解除抵押必须我去吗
验证语义检索召回:真人口语问法,应命中同一 QA (L1 高相似)

句式变换 L1 办解除抵押需要本人到场吗
验证语义检索召回:句式重组后语义等价,应命中同一 QA (L1 高相似)

场景化求助 L3 能不能不去现场办解除抵押
验证深层语义检索:带具体处境的求助,应命中同一 QA (L3 高难度)

同义改写 L2 解除抵押要本人去吗
验证语义检索召回:换同义词/近义词问同一件事,应命中同一 QA (L2 中等)

术语/俗称 L2 解押需要到现场吗
验证语义检索召回:术语↔俗称互换(如大绿本),应命中同一 QA (L2 中等)
命中该组 QA
49 结清寄送 是否需要支付费用
口语化 L1 解除抵押收费吗
验证语义检索召回:真人口语问法,应命中同一 QA (L1 高相似)

同义改写 L2 办解除抵押要花钱吗
验证语义检索召回:换同义词/近义词问同一件事,应命中同一 QA (L2 中等)

术语/俗称 L2 解押需要付费吗
验证语义检索召回:术语↔俗称互换(如大绿本),应命中同一 QA (L2 中等)

带语气词 L2 解除抵押要交费用不
验证语义检索召回:带微信语气词的问法,应命中同一 QA (L2 中等)

句式变换 L1 办理解除抵押收费吗
验证语义检索召回:句式重组后语义等价,应命中同一 QA (L1 高相似)
命中该组 QA
50 结清寄送 车辆登记证如何给到我
口语化 L1 登记证怎么还给我
验证语义检索召回:真人口语问法,应命中同一 QA (L1 高相似)

句式变换 L1 车辆登记证如何归还给我
验证语义检索召回:句式重组后语义等价,应命中同一 QA (L1 高相似)

术语/俗称 L3 解除抵押后大绿本怎么拿
验证语义检索召回:术语↔俗称互换(如大绿本),应命中同一 QA (L3 高难度)

同义改写 L2 登记证什么时候给我
验证语义检索召回:换同义词/近义词问同一件事,应命中同一 QA (L2 中等)

话题前置 L2 我的大绿本咋还回来
验证语义检索召回:先说场景再提问,应命中同一 QA (L2 中等)
命中该组 QA
51 提前结清 哪些情况无法申请提前结清
同义改写 L1 什么情况不能提前结清
验证语义检索召回:换同义词/近义词问同一件事,应命中同一 QA (L1 高相似)

句式变换 L1 哪些情况下不能申请提前结清
验证语义检索召回:句式重组后语义等价,应命中同一 QA (L1 高相似)

场景化求助 L3 刚还了第一期能提前结清吗
验证深层语义检索:带具体处境的求助,应命中同一 QA (L3 高难度)

口语化 L2 提前结清有什么限制
验证语义检索召回:真人口语问法,应命中同一 QA (L2 中等)

话题前置 L2 哪些条件不能提前结清
验证语义检索召回:先说场景再提问,应命中同一 QA (L2 中等)
命中该组 QA
52 提前结清 如何申请提前结清
同义改写 L1 提前结清怎么申请
验证语义检索召回:换同义词/近义词问同一件事,应命中同一 QA (L1 高相似)

句式变换 L1 怎么申请提前结清
验证语义检索召回:句式重组后语义等价,应命中同一 QA (L1 高相似)

口语化 L2 想提前还清找谁办
验证语义检索召回:真人口语问法,应命中同一 QA (L2 中等)

话题前置 L3 小程序上能申请提前结清吗
验证语义检索召回:先说场景再提问,应命中同一 QA (L3 高难度)

场景化求助 L2 提前结清申请入口在哪
验证深层语义检索:带具体处境的求助,应命中同一 QA (L2 中等)
命中该组 QA
53 提前结清 收提前结清手续费吗
同义改写 L1 提前结清要手续费吗
验证语义检索召回:换同义词/近义词问同一件事,应命中同一 QA (L1 高相似)

句式变换 L1 提前结清收手续费吗
验证语义检索召回:句式重组后语义等价,应命中同一 QA (L1 高相似)

术语/俗称 L3 提前还清有违约金吗
验证语义检索召回:术语↔俗称互换(如大绿本),应命中同一 QA (L3 高难度)

口语化 L2 提前结清费用怎么算
验证语义检索召回:真人口语问法,应命中同一 QA (L2 中等)

带语气词 L2 提前结清要收费不
验证语义检索召回:带微信语气词的问法,应命中同一 QA (L2 中等)
命中该组 QA
54 提前结清 如何还提前结清款项
口语化 L1 提前结清的钱怎么还
验证语义检索召回:真人口语问法,应命中同一 QA (L1 高相似)

句式变换 L1 提前结清款项如何支付
验证语义检索召回:句式重组后语义等价,应命中同一 QA (L1 高相似)

话题前置 L3 结清款能转账还吗
验证语义检索召回:先说场景再提问,应命中同一 QA (L3 高难度)

同义改写 L2 提前结清的钱怎么打
验证语义检索召回:换同义词/近义词问同一件事,应命中同一 QA (L2 中等)

带语气词 L2 结清款项咋还呀
验证语义检索召回:带微信语气词的问法,应命中同一 QA (L2 中等)
命中该组 QA
55 提前结清 可以试算提前结清金额吗
口语化 L1 能先算算提前结清要还多少吗
验证语义检索召回:真人口语问法,应命中同一 QA (L1 高相似)

句式变换 L1 提前结清金额可以试算吗
验证语义检索召回:句式重组后语义等价,应命中同一 QA (L1 高相似)

同义改写 L2 提前结清金额怎么算
验证语义检索召回:换同义词/近义词问同一件事,应命中同一 QA (L2 中等)

场景化求助 L3 想提前结清能先看下要还多少吗
验证深层语义检索:带具体处境的求助,应命中同一 QA (L3 高难度)

带语气词 L2 能试算结清金额不
验证语义检索召回:带微信语气词的问法,应命中同一 QA (L2 中等)
命中该组 QA
56 提前结清 节假日可以申请吗
同义改写 L1 周末能申请提前结清吗
验证语义检索召回:换同义词/近义词问同一件事,应命中同一 QA (L1 高相似)

句式变换 L1 节假日能不能申请
验证语义检索召回:句式重组后语义等价,应命中同一 QA (L1 高相似)

话题前置 L3 节假日提交申请有人处理吗
验证语义检索召回:先说场景再提问,应命中同一 QA (L3 高难度)

场景化求助 L2 周末申请提前结清行吗
验证深层语义检索:带具体处境的求助,应命中同一 QA (L2 中等)

带语气词 L2 节假日能申请不
验证语义检索召回:带微信语气词的问法,应命中同一 QA (L2 中等)
命中该组 QA
57 提前结清 租金日可以申请吗
同义改写 L1 还款日当天能申请吗
验证语义检索召回:换同义词/近义词问同一件事,应命中同一 QA (L1 高相似)

句式变换 L1 租金日能不能申请
验证语义检索召回:句式重组后语义等价,应命中同一 QA (L1 高相似)

场景化求助 L2 租金日能办提前结清吗
验证深层语义检索:带具体处境的求助,应命中同一 QA (L2 中等)

话题前置 L3 还款日能申请提前结清吗
验证语义检索召回:先说场景再提问,应命中同一 QA (L3 高难度)

口语化 L2 租金日当天申请行吗
验证语义检索召回:真人口语问法,应命中同一 QA (L2 中等)
命中该组 QA
58 提前结清 当天最晚几点还款
同义改写 L1 当天最迟几点前还
验证语义检索召回:换同义词/近义词问同一件事,应命中同一 QA (L1 高相似)

句式变换 L1 提前结清当天最晚几点还款
验证语义检索召回:句式重组后语义等价,应命中同一 QA (L1 高相似)

口语化 L2 结清当天几点前要转钱
验证语义检索召回:真人口语问法,应命中同一 QA (L2 中等)

场景化求助 L3 当天最晚几点前把钱存好
验证深层语义检索:带具体处境的求助,应命中同一 QA (L3 高难度)

话题前置 L2 结清当天最迟几点还
验证语义检索召回:先说场景再提问,应命中同一 QA (L2 中等)
命中该组 QA
59 提前结清 当天未还款,怎么办
口语化 L1 当天没还上咋办
验证语义检索召回:真人口语问法,应命中同一 QA (L1 高相似)

句式变换 L1 当天未还款如何处理
验证语义检索召回:句式重组后语义等价,应命中同一 QA (L1 高相似)

话题前置 L3 没赶上当天还款申请会怎样
验证语义检索召回:先说场景再提问,应命中同一 QA (L3 高难度)

同义改写 L2 当天没还上钱怎么办
验证语义检索召回:换同义词/近义词问同一件事,应命中同一 QA (L2 中等)

带语气词 L2 当天没还上咋整
验证语义检索召回:带微信语气词的问法,应命中同一 QA (L2 中等)
命中该组 QA
60 提前结清 只能承租人提交申请吗
同义改写 L1 只有承租人能申请吗
验证语义检索召回:换同义词/近义词问同一件事,应命中同一 QA (L1 高相似)

句式变换 L1 只能承租人提交吗
验证语义检索召回:句式重组后语义等价,应命中同一 QA (L1 高相似)

场景化求助 L3 担保人能申请提前结清吗
验证深层语义检索:带具体处境的求助,应命中同一 QA (L3 高难度)

口语化 L2 申请必须承租人本人吗
验证语义检索召回:真人口语问法,应命中同一 QA (L2 中等)

话题前置 L2 只有承租人能提交申请吗
验证语义检索召回:先说场景再提问,应命中同一 QA (L2 中等)
命中该组 QA
61 忠诚客户权益 忠诚客户有哪些礼遇
同义改写 L1 忠诚客户有什么优惠
验证语义检索召回:换同义词/近义词问同一件事,应命中同一 QA (L1 高相似)

句式变换 L1 忠诚客户有哪些权益
验证语义检索召回:句式重组后语义等价,应命中同一 QA (L1 高相似)

口语化 L2 老客户再买有折扣吗
验证语义检索召回:真人口语问法,应命中同一 QA (L2 中等)

场景化求助 L3 老客户再购能优惠多少
验证深层语义检索:带具体处境的求助,应命中同一 QA (L3 高难度)

带语气词 L2 忠诚客户有啥好处呀
验证语义检索召回:带微信语气词的问法,应命中同一 QA (L2 中等)
命中该组 QA
62 忠诚客户权益 之前选的金融方案,也能享受吗
口语化 L1 以前用金融方案买的也能享受吗
验证语义检索召回:真人口语问法,应命中同一 QA (L1 高相似)

句式变换 L1 之前的金融方案可以享受礼遇吗
验证语义检索召回:句式重组后语义等价,应命中同一 QA (L1 高相似)

话题前置 L3 老客户重购能享受利率优惠吗
验证语义检索召回:先说场景再提问,应命中同一 QA (L3 高难度)

同义改写 L2 金融方案的客户也能享受吗
验证语义检索召回:换同义词/近义词问同一件事,应命中同一 QA (L2 中等)

带语气词 L2 之前选的方案能享受不
验证语义检索召回:带微信语气词的问法,应命中同一 QA (L2 中等)
命中该组 QA
63 忠诚客户权益 保时捷金融客户介绍
同义改写 L1 什么是保时捷金融客户
验证语义检索召回:换同义词/近义词问同一件事,应命中同一 QA (L1 高相似)

句式变换 L1 保时捷金融客户是什么
验证语义检索召回:句式重组后语义等价,应命中同一 QA (L1 高相似)

话题前置 L3 哪些银行的贷款客户算保时捷金融
验证语义检索召回:先说场景再提问,应命中同一 QA (L3 高难度)

口语化 L2 保时捷金融客户指啥
验证语义检索召回:真人口语问法,应命中同一 QA (L2 中等)

场景化求助 L2 什么样算保时捷金融客户
验证深层语义检索:带具体处境的求助,应命中同一 QA (L2 中等)
命中该组 QA
64 忠诚客户权益 如何查询我的客户身份
口语化 L1 怎么查我是不是忠诚客户
验证语义检索召回:真人口语问法,应命中同一 QA (L1 高相似)

句式变换 L1 如何查询客户身份
验证语义检索召回:句式重组后语义等价,应命中同一 QA (L1 高相似)

同义改写 L2 客户身份在哪能查到
验证语义检索召回:换同义词/近义词问同一件事,应命中同一 QA (L2 中等)

场景化求助 L3 怎么知道自己有没有这个权益
验证深层语义检索:带具体处境的求助,应命中同一 QA (L3 高难度)

带语气词 L2 客户身份怎么查呀
验证语义检索召回:带微信语气词的问法,应命中同一 QA (L2 中等)
命中该组 QA
65 忠诚客户权益 我有购车意向,如何提交
口语化 L1 想再买辆保时捷怎么留意向
验证语义检索召回:真人口语问法,应命中同一 QA (L1 高相似)

句式变换 L1 有购车意向如何提交
验证语义检索召回:句式重组后语义等价,应命中同一 QA (L1 高相似)

同义改写 L2 购车意向在哪提交
验证语义检索召回:换同义词/近义词问同一件事,应命中同一 QA (L2 中等)

场景化求助 L3 我想换车怎么提交意向
验证深层语义检索:带具体处境的求助,应命中同一 QA (L3 高难度)

带语气词 L2 购车意向怎么提交呀
验证语义检索召回:带微信语气词的问法,应命中同一 QA (L2 中等)
命中该组 QA
66 车辆返还 什么情况可以返还车辆
同义改写 L1 什么情况下能把车还回去
验证语义检索召回:换同义词/近义词问同一件事,应命中同一 QA (L1 高相似)

句式变换 L1 哪些情况可以返还车辆
验证语义检索召回:句式重组后语义等价,应命中同一 QA (L1 高相似)

口语化 L2 合同到期能还车吗
验证语义检索召回:真人口语问法,应命中同一 QA (L2 中等)

术语/俗称 L3 无忧先享能还车吗
验证语义检索召回:术语↔俗称互换(如大绿本),应命中同一 QA (L3 高难度)

话题前置 L2 什么条件可以还车
验证语义检索召回:先说场景再提问,应命中同一 QA (L2 中等)
命中该组 QA
67 车辆返还 车辆返还步骤是什么
口语化 L1 还车流程是怎么样的
验证语义检索召回:真人口语问法,应命中同一 QA (L1 高相似)

句式变换 L1 车辆返还有哪些步骤
验证语义检索召回:句式重组后语义等价,应命中同一 QA (L1 高相似)

场景化求助 L3 还车要提前多久准备
验证深层语义检索:带具体处境的求助,应命中同一 QA (L3 高难度)

同义改写 L2 还车流程是什么
验证语义检索召回:换同义词/近义词问同一件事,应命中同一 QA (L2 中等)

话题前置 L2 还车的步骤有哪些
验证语义检索召回:先说场景再提问,应命中同一 QA (L2 中等)
命中该组 QA
68 车辆返还 如何预约到店检测
口语化 L1 怎么预约还车检测
验证语义检索召回:真人口语问法,应命中同一 QA (L1 高相似)

句式变换 L1 预约到店检测怎么操作
验证语义检索召回:句式重组后语义等价,应命中同一 QA (L1 高相似)

场景化求助 L3 检测预约入口在哪
验证深层语义检索:带具体处境的求助,应命中同一 QA (L3 高难度)

同义改写 L2 还车检测怎么预约
验证语义检索召回:换同义词/近义词问同一件事,应命中同一 QA (L2 中等)

话题前置 L2 预约检测在哪里操作
验证语义检索召回:先说场景再提问,应命中同一 QA (L2 中等)
命中该组 QA
69 车辆返还 预约后能改期吗
口语化 L1 预约后咋改期
验证语义检索召回:真人口语问法,应命中同一 QA (L1 高相似)

句式变换 L1 预约后可以改期吗
验证语义检索召回:句式重组后语义等价,应命中同一 QA (L1 高相似)

场景化求助 L3 预约了检测想改时间行吗
验证深层语义检索:带具体处境的求助,应命中同一 QA (L3 高难度)

同义改写 L2 预约的检测能改期吗
验证语义检索召回:换同义词/近义词问同一件事,应命中同一 QA (L2 中等)

带语气词 L2 预约后想换个时间行不
验证语义检索召回:带微信语气词的问法,应命中同一 QA (L2 中等)
命中该组 QA
70 车辆返还 到店时需携带什么材料
口语化 L1 去还车要带哪些东西
验证语义检索召回:真人口语问法,应命中同一 QA (L1 高相似)

句式变换 L1 到店需要携带什么材料
验证语义检索召回:句式重组后语义等价,应命中同一 QA (L1 高相似)

场景化求助 L3 还车要带身份证吗
验证深层语义检索:带具体处境的求助,应命中同一 QA (L3 高难度)

同义改写 L2 到店需带哪些材料
验证语义检索召回:换同义词/近义词问同一件事,应命中同一 QA (L2 中等)

话题前置 L2 还车当天要带啥
验证语义检索召回:先说场景再提问,应命中同一 QA (L2 中等)
命中该组 QA
71 车辆返还 哪些情况无法返还车辆
同义改写 L1 什么情况不能还车
验证语义检索召回:换同义词/近义词问同一件事,应命中同一 QA (L1 高相似)

句式变换 L1 哪些情况下无法返还车辆
验证语义检索召回:句式重组后语义等价,应命中同一 QA (L1 高相似)

场景化求助 L3 车出过事故还能还吗
验证深层语义检索:带具体处境的求助,应命中同一 QA (L3 高难度)

口语化 L2 哪些条件不能还车
验证语义检索召回:真人口语问法,应命中同一 QA (L2 中等)

话题前置 L2 什么情况还不了车
验证语义检索召回:先说场景再提问,应命中同一 QA (L2 中等)
命中该组 QA
72 车辆返还 对车况有什么要求
口语化 L1 还车对车况有啥要求
验证语义检索召回:真人口语问法,应命中同一 QA (L1 高相似)

句式变换 L1 车辆返还对车况有什么要求
验证语义检索召回:句式重组后语义等价,应命中同一 QA (L1 高相似)

场景化求助 L3 有点小剐蹭能还车吗
验证深层语义检索:带具体处境的求助,应命中同一 QA (L3 高难度)

同义改写 L2 还车车况要求是什么
验证语义检索召回:换同义词/近义词问同一件事,应命中同一 QA (L2 中等)

话题前置 L2 车况要达到什么标准
验证语义检索召回:先说场景再提问,应命中同一 QA (L2 中等)
命中该组 QA
73 车辆返还 检测结果我不满意怎么办
口语化 L1 对检测结果有异议咋办
验证语义检索召回:真人口语问法,应命中同一 QA (L1 高相似)

句式变换 L1 检测结果不满意如何处理
验证语义检索召回:句式重组后语义等价,应命中同一 QA (L1 高相似)

场景化求助 L3 检测不通过能重新检吗
验证深层语义检索:带具体处境的求助,应命中同一 QA (L3 高难度)

同义改写 L2 觉得检测结果不对怎么办
验证语义检索召回:换同义词/近义词问同一件事,应命中同一 QA (L2 中等)

带语气词 L2 检测结果不满意咋整
验证语义检索召回:带微信语气词的问法,应命中同一 QA (L2 中等)
命中该组 QA
74 车辆返还 还车账单包括哪些款项
口语化 L1 还车账单都收什么钱
验证语义检索召回:真人口语问法,应命中同一 QA (L1 高相似)

句式变换 L1 还车账单包含哪些费用
验证语义检索召回:句式重组后语义等价,应命中同一 QA (L1 高相似)

场景化求助 L3 车况不好还车要多花钱吗
验证深层语义检索:带具体处境的求助,应命中同一 QA (L3 高难度)

同义改写 L2 还车账单有哪些款项
验证语义检索召回:换同义词/近义词问同一件事,应命中同一 QA (L2 中等)

话题前置 L2 还车账单包括啥
验证语义检索召回:先说场景再提问,应命中同一 QA (L2 中等)
命中该组 QA
75 车辆返还 车辆检测收费吗
口语化 L1 还车检测要钱吗
验证语义检索召回:真人口语问法,应命中同一 QA (L1 高相似)

句式变换 L1 车辆检测收不收费
验证语义检索召回:句式重组后语义等价,应命中同一 QA (L1 高相似)

场景化求助 L3 到店检测是免费的吗
验证深层语义检索:带具体处境的求助,应命中同一 QA (L3 高难度)

同义改写 L2 还车检测收费吗
验证语义检索召回:换同义词/近义词问同一件事,应命中同一 QA (L2 中等)

带语气词 L2 检测要收费不
验证语义检索召回:带微信语气词的问法,应命中同一 QA (L2 中等)
命中该组 QA

负样本:4 类 42 条

期望全部返回固定话术;任何一条被命中即为误命中(不可接受)。

#类型测试输入验证点期望结果
1 无关输入 今天天气怎么样 无关输入,应返回固定话术 返回固定话术
2 无关输入 你们老板是谁 无关输入,应返回固定话术 返回固定话术
3 无关输入 公司地址在哪里 无关输入,应返回固定话术 返回固定话术
4 无关输入 怎么投诉你们 无关输入,应返回固定话术 返回固定话术
5 无关输入 你们几点下班 无关输入,应返回固定话术 返回固定话术
6 无关输入 推荐一款手机 无关输入,应返回固定话术 返回固定话术
7 无关输入 我想买理财产品 无关输入,应返回固定话术 返回固定话术
8 无关输入 你们和银行有什么区别 无关输入,应返回固定话术 返回固定话术
9 无关输入 能帮我查一下我的征信吗 无关输入,应返回固定话术 返回固定话术
10 无关输入 保时捷新款911多少钱 无关输入(购车咨询非融资租赁业务),应返回固定话术 返回固定话术
11 关键词陷阱 客服电话是多少 含A关键词「客服」但QA无此问题,验证不因关键词撞车(验收T7) 返回固定话术
12 关键词陷阱 提前结清的违约金电话咨询 关键词组合但语义不对应,验证防撞车 返回固定话术
13 关键词陷阱 还款提醒短信收不到 「提醒短信」关键词近 QA5,但语义是收不到提醒,验证防撞车 返回固定话术
14 关键词陷阱 发票丢了能补吗 「发票/补」关键词近 QA37,但语义不同(丢发票 vs 补开),验证防撞车 返回固定话术
15 关键词陷阱 结清资料里有发票吗 「结清/资料」关键词,但结清资料不含发票,验证防撞车 返回固定话术
16 关键词陷阱 车辆抵押登记费谁出 「车辆/抵押」关键词,但登记费话题 QA 未覆盖,验证防撞车 返回固定话术
17 关键词陷阱 自动扣款能扣信用卡吗 「自动扣款」近 QA2,但信用卡不在支持范围,验证不答非所问 返回固定话术
18 关键词陷阱 提前结清能只还本金吗 「提前结清」关键词,但语义是还款方式(只还本金),验证防撞车 返回固定话术
19 关键词陷阱 发票能报销吗 「发票」关键词,但报销是税务用途非开票规则,验证防撞车 返回固定话术
20 关键词陷阱 登记证能卖吗 「登记证」关键词,但买卖非借阅业务,验证防撞车 返回固定话术
21 关键词陷阱 车辆返还后押金退吗 「车辆返还」关键词,但押金话题 QA 未覆盖,验证防撞车 返回固定话术
22 关键词陷阱 银行卡变更要手续费吗 「银行卡变更」关键词,但费用话题 QA 未覆盖,验证防撞车 返回固定话术
23 跨场景混淆 还款短信怎么开通 易混淆:提醒短信开通 vs 是否会收到提醒(无开通答案),验证不串 返回固定话术
24 跨场景混淆 发票能开成纸质版吗 易混淆:发票形式(纸质 vs 电子,无纸质答案),验证不串 返回固定话术
25 跨场景混淆 逾期多久会收回车辆 跨场景易混淆:车辆返还相关,验证不串 返回固定话术
26 跨场景混淆 提前结清当天没还上会怎样 易混淆:提前结清未还款 vs 普通还款失败,验证不串 返回固定话术
27 跨场景混淆 变更银行卡后原来的卡还能用吗 易混淆:变更银行卡 vs 旧卡解绑,验证不串 返回固定话术
28 跨场景混淆 大绿本丢了怎么办 易混淆:登记证保管 vs 补办(QA 未覆盖补办),验证不串 返回固定话术
29 跨场景混淆 还车的时候要带登记证吗 易混淆:车辆返还材料 vs 登记证借阅,验证不串 返回固定话术
30 跨场景混淆 发票开出来多久能收到 易混淆:开票时间 vs 寄送时间,验证不串 返回固定话术
31 跨场景混淆 提前结清可以只还一部分吗 易混淆:提前结清 vs 部分还款(QA 无部分还款),验证不串 返回固定话术
32 跨场景混淆 忠诚客户能免手续费吗 易混淆:忠诚权益 vs 手续费减免(无此 QA),验证不串 返回固定话术
33 跨场景混淆 贷款期间能过户吗 易混淆:过户(抵押期间)无对应 QA,验证不串 返回固定话术
34 跨场景混淆 提前结清的扣款时间会变吗 易混淆:提前结清扣款时间 vs 普通还款时间(无此 QA),验证不串 返回固定话术
35 边界输入 空输入,应返回固定话术 返回固定话术
36 边界输入 ??? 纯标点输入,应返回固定话术 返回固定话术
37 边界输入 谢谢 非问题输入,应返回固定话术 返回固定话术
38 边界输入 哈哈哈哈 非问题输入(笑声),应返回固定话术 返回固定话术
39 边界输入 在吗 寒暄输入,应返回固定话术 返回固定话术
40 边界输入 你好呀 问候输入,应返回固定话术 返回固定话术
41 边界输入 啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊 无意义重复输入,应返回固定话术 返回固定话术
42 边界输入 能还车吗能还车吗能还车吗能还车吗能还车吗能还车吗能还车吗能还车吗能还车吗能还车吗能还车吗能还车吗能还车吗能还车吗能还车吗能还车吗 超长重复输入,应返回固定话术 返回固定话术

下载(公开版)

文件格式用途下载
testset-public.xlsxExcel(3 sheet:正样本/负样本/使用说明)合作方/内部人工查看与测试录入⬇ 下载 Excel
testset.jsonJSON(含 meta/类型/验证点)eval_bot.py 程序化评估⬇ 下载 JSON

⚠️ 使用方法:把「测试输入」逐条发给机器人,正样本看是否命中对应 QA 答案原文,负样本看是否返回固定话术。完整流程见「③ 评估与计划」。

评估方案

目标:机器人地址开放后,用测试集程序化评估效果,产出评估报告。

评估程序(eval_bot.py,已就绪)

  • 程序化评估(主):`python3 eval_bot.py --url <机器人API> --token --model model_a --run-dir runs/model_a`——逐条跑测试集,输出命中率/误命中数/漏报明细 + HTML 报告
  • 半自动兜底(平台无开放 API 时):`python3 eval_bot.py --gen-csv` 生成录入表(315 条),人工在平台测完录回,`--from-csv` 算分出报告
  • 双模型对比:模型 A/B 各跑一轮(--model + --run-dir),`--compare runs/model_a runs/model_b` 合并出综合对比报告

指标定义

指标定义合格线
正样本命中率正样本命中数 / 总输入数(451)越高越好,目标 ≥ 95%
负样本误命中数负样本中被返回答案而非固定话术的条数必须为 0(错误答案比答不上来伤害大)
分型命中率7 类正样本 + 难度 L1/L2/L3 各自命中率定位薄弱环节(如 L3 场景化求助低 → 知识库 Q 太抽象)
调用错误数接口调用失败/超时越低越好

⏳ 前置条件:① 测试集就绪 ✅ ② 机器人地址开放(待公司配置) ③ 双 embedding 模型可切换。

双模型对比

背景:知识库匹配有 2 个 embedding 模型可选。评估时在 titan 平台切换机器人使用的模型,同测试集各跑一轮,对比:

  • 总命中率:哪个模型召回更好
  • 误命中数:哪个模型更稳(都不能误命中)
  • 分型差异:近义区分能力是否不同(直接决定自由输入路径可靠性)
  • 差异行明细:同一输入在两个模型下结果不同的行,逐条人工复核

输出:综合对比报告(HTML)——逐模型指标表 + 差异行明细,供选型决策。

更新计划时间线

  • 2026-08-04
    ✅ 需求文档 v4 + 测试集 v2 就绪
    v2.0 测试集(正 451 输入 / 负 42)+ 评估程序 eval_bot.py 完成
  • 2026-08-07(周五)
    ⏳ 合作方交付最新 QA
    最晚本周五收到最新 QA(可能含扩写,但扩写也是一行一个问答形式)→ 发来后走标准更新流程:提取 → 重新生成代码 → 新版本记录 → 重建文档
  • 待定
    ⏳ 机器人地址开放
    公司配置好机器人(含 embedding 模型选择)→ 开放访问地址
  • 地址开放后
    ⏳ 双模型评估 + 综合报告
    eval_bot.py 跑模型 A/B 各一轮 → --compare 出综合对比报告 → 定模型 + 定阈值(0.7/0.8 实测)
  • 上线后 1-2 周
    ⏳ 真实数据回灌
    从执行日志(T+1)采集真实未命中 query → 并入测试集 → 迭代扩写(保持 7 类把关)