先讲一个旁证:标签丢了会发生什么
十月上旬出过一桩事故:ChatGPT 出站链接改用 noopener,noreferrer 打开,utm_source=chatgpt.com 和 referrer 同时丢,8 天里一批 AI 导流数据集体掉进 Direct 渠道,日均归因少了约 3.1 万,Profound 监测的带标签回答占比从 98.5% 跌到 5%–12%,10 月 15 日才修复。事故的教训一句话就能说完:渠道标签丢了,归因就全错,而且是安静的错——数字还在,只是进了错误的桶。
GEO 题库管线里有一个完全同构的风险:题目分层标签丢了,统计就全错。一道品类词题(「安徽做AI搜索获客的哪家靠谱」)如果没打上 category 标签,混进品牌词题的分母,这家企业的"命中率"立刻虚高一截,而且没人发现。本文讲的就是这套题面生成管线怎么从源头保证标签、槽位、去重键不出这种"安静的错"。
管线全景
出题不是一次问 LLM 要 600 道题,而是一条固定的管线:
行业/地域槽位表 → 模板组合 → LLM 批量生成(20题/批) → 骨架抽取 → 去重键比对 → 零品牌校验 → 入库
每一步对应的工程约束如下。
1. 槽位表先行,LLM 只负责填空
地域槽位和行业槽位人工维护成结构化表,不交给模型自由发挥:
{
"region": ["anhui", "wuhu", "nanjing"],
"industry": ["geo-service", "ai-leadgen"],
"tier": ["brand", "category"],
"ask_frame": ["哪家靠谱", "怎么挑", "有哪些值得看的", "推荐几家"]
}
模板组合 region × industry × ask_frame 先展开成题面骨架,LLM 只做两种事:把骨架扩写成自然问句、生成骨架表里没有的同义问法。这样每道题生下来就带着结构化标签,不靠事后分类回填——事后分类是标签丢失事故的重灾区。
2. 批量生成的参数口径
出题用高温度(0.8,要发散),实测采样用 0.7(要贴体感),这是两条管线的第一处分叉。出题分批跑:20 题/批、maxTokens 6000、单批超时 240s。实测思考模型单批大约 103 秒,留一倍余量给重试。批间去重键比对失败率低的时候可以连发,高的时候直接人工介入——去重失败率本身是出题质量的水位计。
3. 去重键:tier 必须参与
去重键的构成:tier + region + industry + 问法骨架哈希。三个容易忽略的点:
- 同义问法不算重复,同骨架同参数才算。「哪家靠谱」和「怎么挑」是两道题,覆盖的是客户问法的真实分布;
- 品牌词题去掉品牌名后得到的品类词题,不是重复——它们测的是两件事,两张分母;
- 去重比对在入库前、事务里做,不靠事后清洗。事后清洗永远晚一批。
function buildDedupKey(q) {
const frame = extractAskFrame(q.text); // 问法骨架:哪家靠谱/怎么挑/…
const slots = [q.query_tier, q.region_slot, q.industry_slot, hash(frame)];
return slots.join('|');
}
// 入库前:INSERT … ON CONFLICT(dedup_key) DO NOTHING,冲突计数上报
4. 零品牌校验:category 题的双闸
第一道闸是正则:题库维护一份已知企业名词表,category 题面命中即打回。第二道闸是 LLM 二次校验:名词表拦不住"合肥那家做检测的公司"这类指代性表述,让一个不带上下文的校验模型回答"这道题是否指向特定企业",答是即打回。两道闸都过才入库。
5. 题量上限与失败处理
单次检测任务题量上限 500 题,超了必须拆任务——这不是性能问题,是统计问题:题量一大,批间漂移混进来,前后题目不在同一个基线上。失败重试只做 1 次,重试把限流放大成雪崩的教训各家都有过。
踩过的两个坑
坑一:出题温度设 0,题面复读模板。最初把出题温度当精度参数调到 0,结果 600 题里出现大量仅差一个字的变体,去重键冲突率飙升。温度 0 不是严谨,是让模型把模板背给你看。发散任务就给发散参数:0.8,配合骨架抽取兜底。
坑二:LLM 生成题面里夹带推荐意图。让模型"扩写问句",它会自作主张写成「XX公司怎么样」(把槽位表里某个示例企业名当成主题)。修法:示例企业名用占位符,扩写完成后校验占位符已替换且替换值不在企业名词表内。这条和零品牌铁律是同一件事的两面——题面诱导会让测出来的命中变成复述。
这套管线防不住什么
槽位表覆盖不到的新问法(客户用方言、用错别字、用行业黑话问)进不了题库,这部分靠复测期的真实咨询记录回流补充;LLM 校验模型自己也会漏判,零品牌校验是概率闸门不是数学证明;去重键保证的是"同批不重复",跨批次同骨架题是否该复用,取决于复测对齐的需求——复测要求同批题同参数,意味着部分旧题必须保留,去重键要按批次版本管理。
你在出题管线里怎么处理同义问法和去重?评论区聊聊。
网硕互联帮助中心





评论前必须登录!
注册