Yahoo 如何用 Amazon Bedrock 扩展搜索重定向的意图识别

2026-07-31 15 预计阅读时间: 1 分钟
来源: aws.amazon.com AI 摘要 Original link

Disclaimer: This article is an AI-assisted summary. Read it together with the original source when precision matters. The summary may omit context, version differences, or edge cases and is not official documentation.

预计阅读时间:10 分钟

搜索重定向(Search Retargeting,SRT)的价值,在于把用户已经表达过的搜索意图连接到展示、视频和原生广告。Yahoo 在其 DSP 广告技术套件中引入 Amazon Bedrock,进一步增强了这项能力:识别范围不再局限于 Yahoo Search 中输入的关键词,还可以覆盖集成合作伙伴系统中的搜索活动,并通过 AI 发现更广泛的意图信号。

这类改造的重点并不是简单地让大模型“决定投什么广告”,而是让模型参与关键词理解、意图归类和候选扩展,同时把隐私控制、广告资格校验与最终投放决策留在可审计的工程链路中。

从关键词匹配走向意图匹配

传统 SRT 通常围绕关键词列表工作。例如,广告主希望触达正在考虑购买跑鞋的用户,可能提交以下词组:

  • running shoes
  • marathon shoes
  • best shoes for jogging

纯关键词方案容易遇到两个问题:同一意图有大量不同表达,而相同词语在不同上下文中又可能代表不同需求。用户搜索“半马训练装备”时,虽然没有输入“跑鞋”,仍可能表现出相关的购买意图;反过来,“跑鞋清洗方法”未必意味着用户正在选购新品。

生成式 AI 可以被放在候选生成层,将原始查询转换成结构化信号,例如:

{
  "intent": "购买长距离跑步装备",
  "category": "sports/running/footwear",
  "commercial_stage": "consideration",
  "related_concepts": ["马拉松训练", "缓震", "足弓支撑"],
  "confidence": 0.86
}

这个结果不应直接触发广告投放。更稳妥的方式是把它送入下游规则和排序系统,与广告主定向条件、频次限制、地域要求、内容安全策略以及用户授权状态共同计算。

Bedrock 适合放在链路的什么位置

基于来源摘要可以确认,Yahoo 使用 Amazon Bedrock 增强 SRT,但摘要没有披露具体模型、提示词、实时架构或评估指标。工程团队可以这样设计类似链路,以下属于可实践的参考架构,并非 Yahoo 内部实现细节:

  1. 搜索系统或合作伙伴系统产生经过授权的搜索事件。
  2. 数据治理层删除直接身份标识,并执行地区、保留期限和用户选择检查。
  3. Amazon Bedrock 承载的模型对查询执行意图分类、语义扩展或候选标签生成。
  4. 检索系统将标签映射到广告主配置的关键词、主题和受众规则。
  5. 排序与策略引擎应用置信度门槛、品牌安全、预算和频控规则。
  6. 聚合反馈进入离线评估流程,用来检查覆盖率、误匹配和类别漂移。

Bedrock 在这里提供的是模型访问与生成式 AI 基础设施。真正决定系统质量的,仍然是输入治理、输出约束、评估集以及失败时的降级路径。

可以这样实践:用 Bedrock Converse API 生成结构化意图

下面是一个可改造的 Python 示例。它调用 Amazon Bedrock Runtime 的 Converse API,把搜索词转换成 JSON 意图信号。运行前需要配置 AWS 凭证、启用所选模型访问权限,并将 BEDROCK_MODEL_ID 改成账户所在区域可用的模型 ID。

安装依赖:

python -m pip install --upgrade boto3
export AWS_REGION=us-east-1
export BEDROCK_MODEL_ID='your-enabled-model-id'

创建 intent_expander.py

import json
import os
import sys

import boto3

REGION = os.getenv("AWS_REGION", "us-east-1")
MODEL_ID = os.environ["BEDROCK_MODEL_ID"]

SYSTEM_PROMPT = """You classify advertising search intent.
Return JSON only, with this exact shape:
{
  "intent": "short description",
  "category": "taxonomy/path",
  "commercial_stage": "research|consideration|purchase|non_commercial",
  "related_concepts": ["concept 1", "concept 2"],
  "confidence": 0.0
}
Do not infer sensitive traits. Do not include personal identifiers.
Use a confidence value between 0 and 1.
"""


def classify(query: str) -> dict:
    client = boto3.client("bedrock-runtime", region_name=REGION)
    response = client.converse(
        modelId=MODEL_ID,
        system=[{"text": SYSTEM_PROMPT}],
        messages=[
            {
                "role": "user",
                "content": [{"text": f"Search query: {query}"}],
            }
        ],
        inferenceConfig={"temperature": 0, "maxTokens": 300},
    )

    text = response["output"]["message"]["content"][0]["text"]
    result = json.loads(text)

    required = {
        "intent",
        "category",
        "commercial_stage",
        "related_concepts",
        "confidence",
    }
    if set(result) != required:
        raise ValueError(f"Unexpected response fields: {sorted(result)}")
    if not 0 <= float(result["confidence"]) <= 1:
        raise ValueError("confidence must be between 0 and 1")
    return result


if __name__ == "__main__":
    query = " ".join(sys.argv[1:]) or "best cushioning for half marathon training"
    print(json.dumps(classify(query), ensure_ascii=False, indent=2))

运行:

python intent_expander.py "best cushioning for half marathon training"

生产环境还需要处理模型可能输出 Markdown、字段缺失或无效枚举值的情况。可以增加 JSON Schema 校验、有限次数重试和死信队列;当模型调用超时或结果低于置信度门槛时,则回退到原有关键词匹配逻辑。不要把未经校验的模型文本直接拼接进查询语句或投放规则。

评估不能只看点击率

增强 SRT 后,覆盖面可能扩大,但覆盖面扩大并不等于定向更准确。上线前可以准备一套人工标注查询集,至少衡量以下指标:

  • 意图准确率:模型分类是否符合查询的主要含义。
  • 扩展精确率:新增概念中有多少确实与广告主目标相关。
  • 错误触达率:非商业查询或语义歧义查询被纳入受众的比例。
  • 稳定性:相同输入在版本升级前后是否产生明显漂移。
  • 延迟与成本:每千次分类的端到端延迟、令牌消耗和调用成本。
  • 敏感类别风险:模型是否推断健康、宗教、政治倾向等不应进入广告画像的属性。

在线指标可以观察合格触达、转化和广告主效果,但需要与离线语义评估配合。仅用点击率优化,可能奖励耸动或过度宽泛的匹配,也无法证明模型正确理解了用户意图。

上线时保留清晰的控制边界

采用类似方案时,建议先让 Bedrock 承担候选生成或离线扩展,而不是直接进入实时竞价的最终决策路径。这样可以控制延迟和成本,也方便人工抽样审查输出。

上线检查表可以保持简洁:输入是否经过授权和去标识化;敏感类别是否明确禁止;输出是否有固定结构和置信度门槛;模型不可用时是否能回退;模型、提示词和分类规则是否有版本记录;扩展结果是否经过广告政策与品牌安全过滤。

Yahoo 的实践说明,生成式 AI 可以把 SRT 从字面关键词匹配推进到更丰富的搜索意图理解。真正可持续的实现,不是让模型拥有更多决策权,而是让模型在受约束、可评估、可回退的链路中提供更好的候选信号。


相关推荐