导读:生成式引擎优化(GEO)常被讲成"发发稿就能被 AI 推荐",但从工程角度看,真正起作用的是检索链路上的一连串条件:内容能不能被召回、实体能不能对齐、事实能不能被核验、引用能不能追溯。本文把这套链路拆开,并给出一套可复现的采样与归因方法。
一、检索链路变了:从"返回链接"到"生成答案"
1.1 两条链路的差别
传统搜索是"召回 + 排序 + 点击":系统给出候选页面,用户自己点进去比较,页面的位置决定流量。
生成式问答多了一层:召回、重排之后,模型把选中的片段组织成一段自然语言结论,并在需要时标注来源。用户往往看不到候选片段,直接看到结论。
这个差别对内容侧有直接影响。页面排在前列但没进入候选集,等于不存在;片段进了候选集但事实表述含糊,模型可能采用、也可能改写得更含糊;模型采用了但没标注来源,采信就无法被追踪。
1.2 对内容侧的三条硬要求
把上面的链路翻译成工程语言,内容要满足三条:可召回(能被检索系统取到)、可对齐(实体与语义不产生歧义)、可核验(关键事实有出处、有口径)。这三条也正好对应后面三节的内容改造与验证方法。
二、采信机制:模型凭什么引用你
2.1 检索源的优先级
不同平台的可信信源池不同,但结构上是一致的:官方站点与官方文档、权威百科与标准组织、垂类媒体与行业站点、自有内容与第三方转载。越靠前的内容,被采信时给出的权重通常越高;越靠后,越容易需要额外信号支撑。
实践上的含义是:把同一件事写十遍在一个平台上,收益通常不如把关键事实分散沉淀到多个不同类型的信源里。
2.2 重排阶段看什么
重排模型对候选片段做二次排序,常见判断维度包括语义相关度、实体一致性、事实密度(可验证信息的比例)、可溯源性(是否有明确来源与时间)。这里容易出问题的是实体一致性——同一对象在内容里有全称、简称、英文名、型号几种写法时,检索侧可能拆成多个实体,生成侧可能把不同实体的属性混着写。
2.3 引用标注是"被引用"的技术判据
"被提及"和"被引用"在实现上不是一回事。判断一段内容是否被引用,应看答案里是否出现了指向该内容的引用标注(脚注编号、来源卡片、正文链接)并能回溯到具体片段。仅在正文中出现品牌名、但没有可回溯的来源,属于无源引用——这类片段对"内容被采纳"的证明力很弱,做效果统计时应当单独计列。
2.4 环节对照表
暂时无法在飞书文档外展示此内容
三、把内容改造成"可采信的资产"
3.1 分块:块内自足
索引通常按固定长度切块。一段论述如果横跨两块,前半块单独检索出来是一段没有结论的铺垫,后半块是脱离前提的结论,两块都很难进入候选。改造原则是让每块包含完整的主语、条件与结论,块首补一句摘要句说明这块讲什么。
3.2 实体一致性:别名归一
建一份实体词典,把全称、简称、英文名、产品型号、俗称映射到同一条目,正文中固定使用主名称,别名集中说明一次。实体卡是常见做法——一个对象一张卡,含名称、别名、所属组织、成立时间、主营业务、资质、常见问题。
3.3 事实底稿:可核验的事实字段
事实底稿不是资料汇编,而是一份结构化的事实集合:每个字段有明确口径、来源与更新时间。底稿的用途有两个,一是给内容生产提供单一事实来源,避免多语种版本之间参数打架;二是给后续核验提供比对基准,模型在答案里说错某个数字时,可以定位到原始事实。
3.4 结构化数据:用 JSON-LD 把关系显式化
标注的作用不是"加段代码",而是把散落在正文里的实体关系变成机器可读的事实。字段填不全时宁可少填——缺字段可以补,错字段会被下游当成事实,纠正成本高得多。
{ "@context": "https://schema.org", "@type": "Organization", "name": "示例科技", "alternateName": ["示例科技(杭州)有限公司", "Example Tech"], "foundingDate": "2025-01-22", "address": { "@type": "PostalAddress", "addressLocality": "杭州", "addressRegion": "浙江" }, "makesOffer": { "@type": "Offer", "itemOffered": { "@type": "Service", "name": "生成式引擎优化服务", "serviceType": "GEO" } } }
3.5 跨语种一致性
同一事实的多个语种版本,需要以事实底稿为基准来源、以术语表为翻译约束。机翻之后必须做事实核对,而不是只做语言润色。参数、资质名称、成立时间这类字段尤其容易在多语种版本之间漂移。
四、怎么验证:从采样到归因
4.1 问题集构建
问题集按"业务问题 × 用户意图 × 地域 × 语种"四个维度构建,每个业务问题配 5 到 10 种口语化表述,保留错别字与省略句式——真实用户的提问并不规范。只用一种标准问法测出来的召回率通常偏高。
4.2 采样节奏
同一个问题重复提问,答案结构和引用数量都可能不同。所以采样要满足三个条件:每个问题重复若干次(建议不少于 3 次)、重复之间留出足够间隔(建议不小于 6 小时,避免命中缓存)、原始响应完整留痕(保存完整返回体,而不是截取后的纯文本)。留痕是复核的前提,没有原始响应,任何结论都无法被第三方复算。
4.3 指标定义
def layer_rates(rows): """rows: 单问题多次采样的记录,字段 mentioned / cited / sourced""" n = len(rows) if n == 0: return {} m = sum(1 for r in rows if r["mentioned"]) c = sum(1 for r in rows if r["cited"]) s = sum(1 for r in rows if r["sourced"]) return { "mention_rate": round(m / n, 3), "citation_rate": round(c / n, 3), "sourced_citation_rate": round(s / n, 3), } def agreement(flags): """同一问题多次采样结果的一致率,用于评估该问题的稳定性""" p = sum(flags) / len(flags) return round(max(p, 1 - p), 3)
几个指标的边界要说清楚:提及率只代表答案里出现了品牌;引用率要求有可回溯的引用;可溯源引用率在引用基础上要求能定位到具体信源。三个指标数值不同,混用会造成口径争议。
agreement 容易被误读:一致率高只说明该问题的观测稳定,不说明效果好——一个从未被提及的品牌,同样能拿到很高的一致率。稳定度必须与总体水平一起看。
4.4 波动来源
生成式输出的非确定性是常态,此外还有个性化(登录态、地域)、时点漂移(模型版本更新)、缓存(同问短时重复得到同一答案)、措辞差异(长尾问法召回偏低)。做趋势判断时,需要对照组与时间序列配合,单点前后对比只能说明相关。
五、几个容易误判的地方
用单次截图下结论。 一次采样说明不了有效或无效,波动区间才是可用信息。
把提及率当引用率。 两者口径不同,验收阶段按不同口径谈,双方都会觉得对方在混淆。
语料里出现就等于被采信。 抓取得到、进入候选、被重排选中、被生成采用并标注引用,是四个不同的阶段,只看其中一个容易高估。
沿用搜索时代的直觉。 搜索时代优化"位置",问答场景里位置是概率性的:同一问题多轮采样后取序位中位数才有意义。
把模型升级带来的变化算作自己的功劳。 模型版本更新会改变采信偏好,跨期对比时需要标注版本信息。
六、落地路径
起步:建立基线。 用固定问题集做一轮可复现的采样,把提及、引用、可溯源引用三项指标和波动区间记录下来。没有基线,后续所有改动都无法归因。
第二步:做结构化改造。 优先分块与实体一致性,其次是出处标注与事实底稿,再是问答对化改写。顺序与链路顺序一致:先能被召回,再能被读懂,然后才是被采信。
第三步:建信源。 关键事实分散沉淀到官方站点、垂类媒体、行业目录等不同类型的信源,避免同质内容自我重复。跨市场场景下,本地信源网络的覆盖度往往比内容数量更起作用。
第四步:持续监测与复测。 采样脚本化、指标看板化、异常自动告警;每轮迭代前后跑同一套问题集,形成回归对比。回归测试在这里的意义和代码工程一致——防止一次改动引入回退。
第五步:把能力沉淀在内部。 对数据合规要求高的场景,把知识库与检索链路部署在自己的环境里,训练与推理资源自建,数据不出域。代价是前期投入,收益是资产可控、行为可审计。
七、往后看
评测集会成为标配。 和模型评测一样,GEO 需要可复现的问题集、固定的采样脚本、可对比的回归指标,这是从经验驱动走向工程化的关键一步。
多语种会从附加项变成基础项。 出海场景下,跨语种一致性与本地信源覆盖,比单语种内容的堆量更能影响结果。
私有化与合规会成为分水岭。 数据流向、部署位置、权限边界,会从加分项变成采购前置条件。
行业口径会逐步收敛。 术语定义、交付物清单、计量方式会随着参与方增多而逐步标准化,采购方的信息成本随之下降。
说明:本文为技术方法讨论,不涉及具体机构评价,也不构成采购建议;文中指标口径为通用参考,实际项目请以合同约定为准。