源数据嵌入(第0步):构建基础

本文解释了我们如何将所有可发现的源内容(产品、零件和站内页面)嵌入到共享的向量空间中,以支持跨SEO和搜索流程的语义匹配。

问题:通过含义匹配查询与内容

用户使用多种不同的措辞来描述其意图。当查询措辞与目录措辞不重叠时,关键词匹配就会失效。

我们使用语义嵌入,以便查询和源内容都可以根据含义进行比较(通常通过余弦相似度)。

嵌入的内容

我们嵌入用户可以发现且流程可以路由到的所有内容:

  • 产品:可销售的目录项(标题 + 特性文本 + 任何策划/AI生成文案)。

  • 零件:可销售的组件和配件(名称 + 规格)。

  • 站内页面:文章(/a/)以及其他可以出现在搜索和内部链接中的可导航页面。

嵌入所有可发现的内容支持跨类型检索(例如,一篇文章可以针对产品导向的查询进行排名,而一个产品在适当时也可以针对信息类查询进行排名)。

高层架构

flowchart TD
    A[目录 + 零件 + 页面] --> B[规范化并构建描述]
    B --> C[按规范URL去重]
    C --> D[增量嵌入]
    D --> E[源嵌入矩阵 + 键索引]
    E --> F[下游:匹配、路由、相关搜索、搜索服务]

嵌入流程

步骤 A:整合源数据

  • 目的:构建一个规范的源项目数据集。

  • 输入:产品目录、零件数据集和页面内容。

  • 输出:一个整合的源数据集,包含:

    • 键:规范URL(用作稳定标识符)
    • 描述:用于嵌入的文本
    • 类型:产品 / 零件 / 文章 / 页面(用于下游路由)
  • 过程:

    1. 从每个源提取项目。
    2. 为每个项目构建描述。
    3. 按规范URL去重,确保每个URL只出现一次。

步骤 B:增量嵌入

我们使用增量学习原则,以避免为未更改的内容重新计算嵌入。

  • 目的:仅嵌入新的/已更改的项目,同时重用未更改项目的缓存嵌入。

  • 输入:整合的源数据集和嵌入缓存(来自之前的运行)。

  • 输出:更新的嵌入矩阵和键索引。

  • 过程:

    1. 加载缓存的键和嵌入。
    2. 为每个项目计算一个变更信号(基于项目的嵌入文本)。
    3. 仅使用配置的模型嵌入新的/已更改的项目(参见嵌入策略)。
    4. 将缓存的嵌入和新计算的嵌入按URL键控的稳定顺序合并。

步骤 C:持久化工件

嵌入以高效的数值格式(通常通过NumPy)存储,同时有一个单独的键索引,以便下游步骤可以将向量行映射回规范URL。

描述构建(我们嵌入的文本内容)

产品

产品描述由以下内容构建:

  • 简化名称:产品名称和关键标识符(例如,SKU/系列名称)。

  • 特性文本:产品特性的人类可读表示(参见SKU结构)。

  • 长文案:可用的策划或AI生成的文案(参见内容AI生成)。

示例(说明性):

<产品名称>
<简短描述>
<关键特性亮点>

零件

零件描述由以下内容构建:

  • 面向客户的名称

  • 内部名称(技术标识符)

  • 类别

  • 规格/属性(渲染为文本)

站内页面

页面描述由以下内容构建:

  • 标题

  • 正文片段(介绍/导语部分)

  • 上下文标识符(适用的类别/系列标签)

目标是生成稳定、能代表内容的文本,并在页面含义变化时随之变化。

去重规则

每个规范URL在整合的数据集中只出现一次。

  • 原因:多个源可能通过不同的生成路径描述同一个URL;重复会破坏路由、匹配和下游索引。

  • 方法:构建一个以规范URL为键的字典,并在整合时强制唯一性。如果发现重复项,脚本会打印计数并移除它们。

其他步骤如何使用源嵌入

  • 产品匹配:通过语义相似度将聚类或查询匹配到最接近的源项目(参见SEO产品匹配)。

  • 相关搜索:相关搜索生成器使用嵌入相似度来建议相关的导航链接(参见SEO相关搜索)。

  • 搜索服务:在线搜索可以使用索引嵌入上的向量相似度(参见搜索服务架构)。

另请参阅

参考资料

总结

  • 是什么:将产品、零件和可发现页面嵌入到共享的向量空间中。

  • 如何做:按规范URL整合和去重,然后仅增量嵌入已更改的项目。

  • 为什么:这使得跨流程(匹配、相关搜索和在线向量搜索)的语义检索和路由成为可能。


← 返回文档索引