首页
看点啥
插画图片
首页 看点啥 直播数据 LLM Wiki 实践:构建 AI 时代的知识底座

直播数据 LLM Wiki 实践:构建 AI 时代的知识底座

2026-07-06 0

将散落、矛盾、过时的数据知识,编译为AI可精准调用的统一知识库,让数据团队从重复答疑中解放。
核心内容:
1. 领域知识对AI价值的关键作用及传统RAG的局限性
2. LLM Wiki 通过“编译”过程构建统一知识底座的核心理念
3. 在指标召回、SQL生成等场景中的实际应用效果

阿里妹导读

文章内容基于作者个人技术实践与独立思考,旨在分享经验,仅代表个人观点。

一、为什么要知识库

领域知识决定了 AI 在业务中能发挥多大的价值和作用。任何 AI 系统都由模型、知识、架构三部分组成。模型由供应商提供,只能被动接受;架构常因模型能力升级而失效重做。相比之下,领域知识只能从内部积累——不可替代,且随业务演进而持续变化,是最值得长期投入的部分。

然而,领域知识的沉淀面临诸多挑战,在数据团队中尤为严重。知识散落在代码和注释、配置、钉钉文档、沟通记录等各处,没有统一载体,这带来两层后果:

数据团队中如口径答疑、问题排查、代码生成这些本可以被 AI 极大提效的场景,都卡在了"知识喂不进去"这一步。

直接套 RAG 解决不了这件事。RAG 的模式是每次查询都到原始文档碎片里现找现拼——chunk 召回、上下文拼接、模型生成——但它并不改变原始材料本身的状态。散落的还是散落的,矛盾的还是矛盾的,过期的还是过期的,只是多了一层向量索引。知识本身的问题一个没解决,只是把"人找不到"变成了"AI找到了但答不准"。

问题出在知识本身,不在检索。需要的是在检索之前加一道"编译过程"——把散落、矛盾、易腐化的源材料,预先加工为可被AI直接消费的知识。这是 LLM Wiki 的起点。

二、实际效果

先来看看实际效果,下面从指标维度召回、SQL代码生成以及数据模型迭代4个例子来介绍LLM Wiki的检索生成效果。

2.1 指标和维度召回

2.1.1 主播xxx分维度召回

以"主播xxx分用哪张表"为例,系统首先通过 index.md 定位到 basic/审核打标域,然后全域搜索召回候选表,再逐张读取详情页判断覆盖度和相关性。最终精准推荐xxx分维表作为首选,同时区分出 DWD 增量明细表(适合追溯变更历史)和主播画像宽表(适合同时需要xxx分和其他属性时),并主动排除了名称相似但实际是"讲解xxx分"的干扰项。

2.1.2 xxx交易指标召回

用户问"xxx交易指标怎么取",系统经域推断 → 多路搜索 → 详情验证三步,精准推荐 DIM 层标签表(直接有xxx字段)和 DWD 层明细表(xxx标记字段可自行聚合),并附带判定逻辑、SQL 示例和血缘链路,一次查询给出从选表到取数的完整答案。

2.2 SQL代码生成

用户问"不同主播等级的开播场次数怎么算",系统自动跨维表域和供给开播域,定位到主播基础信息宽表(主播等级)+ 主播标签预聚合表(预聚合多窗口场次数)或主播开播日汇总表(按天累加自定义范围),输出 JOIN 关联的 SQL 骨架,同时标注废弃字段、xx开播口径和多套分级体系的差异——从自然语言到可执行 SQL,一步到位。

2.3 数据模型迭代

2.3.1 背景

数据模型迭代是数仓日常工作中高频且高风险的场景。一次迭代往往涉及:

需求理解 → 查表结构 → 查血缘 → 判影响 → 估风险 → 写SQL → 验数据   ↓        ↓         ↓      ↓        ↓      ↓       ↓人工耗时   grep搜索  手动递归  看代码   凭经验   逐表改写  手写SQL

传统做法依赖人工逐表排查 SQL 代码,耗时易出错,迫切需要一种新范式,让 AI 承担"查血缘、判风险、写代码"的机械工作,将人力聚焦在"决策确认"环节。

2.3.2 基于LLM wiki的数据模型迭代

基于LLM wiki知识库,把迭代需求拆解成6个步骤,按顺序调用对应的子Skill执行,关键节点用户确认。

步骤

做什么

输入→输出

需求拆解

理解需求,识别需求类型

需求描述 → 需求类型 + 指标口径

知识库召回

从Wiki查目标表,拉取DDL和口径定义

表名 → 表结构 + 口径说明

血缘查询

用graph.json查全链路下游,强制完整性校验

目标表 → 下游表完整列表

风险评级

看下游SQL,判断业务影响(高/中/低)+ 风险类型

下游表 → 二维风险矩阵

SQL生成

批量生成DDL+ETL+验证SQL+回滚SQL

影响分析 → 全套SQL文件

报告输出

整合分析结果,生成影响分析报告

全流程结果 → 可交付报告

2.3.3 具体实践场景

场景一:数据源切换(data_source_switch)

需求:xxx数据从加权计算切换到大盘数据源

流程:

关键发现:间接下游表中有 3 张参与准入判定,切换后阈值需调整

场景二:新增字段(addition)

需求:xxx数据链路新增"xxx分"等字段

流程:

关键机制:路径B 强制用户确认,避免遗漏或过度传播

2.3.4 最终效果

事项

传统人工

AI 编排

提效

血缘查询时间

30min(手动递归)

2min(--impact)

15×

下游表遗漏率

20%(间接下游易遗漏)

0%(强制完整性校验)

100%

SQL 生成时间

0.5天(逐表改写)

10min(批量生成)

72×

风险判定一致性

低(凭经验)

高(二维矩阵标准化)

质变

2.3.5 总结

通过 model-iteration-analysis 编排架构:

最终效果:模型迭代影响分析从半天缩短到小时级,下游表遗漏率从 20%降到 0%,数据研发工程师从"查代码、写 SQL"的机械工作中解放,聚焦在"决策确认"的高价值环节。

三、LLM 编译器:怎么建

3.1 核心思想

LLM Wiki 不是一份"用 LLM 写出来的文档",而是一份结构化、有约束、可验证的知识资产。它和传统文档的区别在四个层面:

让 LLM 来建,不是让人来建。人工维护 Wiki 的核心问题是成本高、腐化快、难持续。LLM 作为编译器,把散落的源材料(DDL、任务代码、文档、接口配置)编译成结构化页面,人只在关键节点做确认。

整体构建过程可以抽象为六个步骤:提取 → 生成 → 归类 → 聚合 → 链接 → 验证——对应编译器的词法分析、代码生成、作用域解析、IR 构建、链接、静态分析,本质是一条将散落源材料编译为结构化知识的流水线。

3.2 LLM Wiki 与 RAG:互补而非冲突

一个常见的疑问是:有了 LLM Wiki 是否还需要 RAG?需要,但两者定位完全不同。

可以用"编译时 vs 运行时"来理解。LLM Wiki 是编译时产物,把原始材料预处理成高质量的知识页面;RAG 是运行时手段,在查询时刻做精准召回。

Wiki 在构建阶段把散落材料固化为完整语义单元——血缘关系显式记录、口径以代码为准做仲裁、层级结构支持渐进式披露、每个页面自带 frontmatter 元数据。RAG 在查询时刻基于这些页面做精准召回:frontmatter 用于硬过滤(按层级、域、血缘),正文用于语义匹配,Wiki 尚未覆盖的长尾知识仍可回退到原始材料检索。

一句话:Wiki 提供高质量语料,RAG 提供精准召回,组合起来才是完整的检索栈。

3.3 知识来源要全

Wiki 编译的目标是让 AI 能回答业务问题,而一个业务问题往往跨越多种知识载体:表定义结构、接口定义契约、看板定义消费场景、文档承载业务背景。材料缺一类,编译出的 Wiki 就有相应的盲区——只有 DDL 没有任务代码,AI 知道字段叫什么但不知道怎么算;有表没有看板,AI 知道数据存在哪但不知道谁在用。材料的完整度直接决定了 Wiki 能回答的问题边界。

因此知识来源需要从广度和深度两个维度保障:

3.4 知识构建要准

"准"是 Wiki 编译的核心挑战。源材料本身就带噪音——注释长期未更新、文档写错口径、不同来源对同一对象的描述相互矛盾;LLM 生成时存在幻觉,容易把不确定的推断写成确定的事实;像域归属、指标聚类这类判断本身就有一定主观性。仅凭"我们要保证准确"这句口号无法解决,需要一整套覆盖事前、事中、事后的工程纪律:

3.5 知识的骨架是关系

单页内容解决"一张表是什么",但业务问题往往不是关于一张表——"改了这张表影响哪些下游""这个指标是从哪些表算出来的""这个域下有多少资产"——都是关系层面的问题。如果关系只隐含在正文段落里,每次回答都需要 LLM 重新从文本中抽取,既不稳定也不高效。

因此我们需要把关系从正文中抽出来,显式存储为图:血缘、归属、消费、引用等语义落到 frontmatter 字段,再由构建流水线统一扫描提取,沉淀为全局关系图。每条边都是结构化的、可遍历的、可计算的。

显式建图带来三个能力维度:

关系图同时也是多路召回的基础——检索命中图上任何一个节点后,可以沿边扩展关联节点,召回关键词未命中但血缘强相关的知识。

3.6 为检索而组织

知识的构建和组织不是独立环节,而是为检索服务的。怎么生成页面、怎么划分层级、怎么记录关系,最终都要回答一个问题:AI 在有限的上下文里能否快速找到最相关的知识。围绕这个目标,层级结构和关系图分别承担不同的职责:

三者配合:聚合解决信息爆炸,渐进式披露解决上下文有限,多路召回解决召回不全——这是知识库能服务 AI 检索的三个工程支点。

四、架构设计

Wiki 系统以文件为底座,但在功能上构成了一个完整的知识管理系统。其中存储层(多级文件系统)、知识模型层(Schema)、计算层(Agent 编排)是三层主干,后续章节描述的构建、检索、增量、Lint 等流程都基于这三层运行。

其架构可以与数据库系统做如下类比:

数据库系统

Wiki 系统

对应关系

存储引擎

多级文件系统

知识的物理组织和生命周期管理

索引

图索引 + 树索引

加速检索的辅助结构

DDL(建表)

Schema 定义

定义知识结构和约束

写表(INSERT/UPDATE)

Wiki 生成

按 Schema 写入结构化页面

查询(SELECT)

Wiki 检索

按索引和条件读取知识

约束检查

健康检查 + 验证机制

保证数据一致性和正确性

事务可恢复性

断点续传 + 增量构建

中断后幂等重跑,已有正确产物跳过,只补未完成部分

执行引擎

Agent 编排

调度计算任务,管理并行与串行

4.1 多级文件系统

知识库的生命周期跨越多个阶段:清单维护、材料抓取、Wiki 生成、关系图构建、健康检查。每个阶段产出的物料形态不同——清单是输入、原始材料是中间态、Wiki 是最终产出,需要分目录隔离,避免互相污染。多级文件系统的本质是把不同生命周期的物料放进不同目录,由目录承担状态语义。

知识库根目录由环境变量 KB_ROOT 指定,目录结构如下:

${KB_ROOT}/├── pre/                   # 待处理清单 + 临时下载产物(验证后移入 raw/)├── raw/│   ├── ready/             # 完整可用,直接进入 Wiki 生成│   ├── pending/           # 存在缺失或问题,需治理后晋升 ready│   └── archive/           # 已下线或弃用,不治理也不参与生成├── wiki/│   ├── tables/{db_type}/  # 表页面,按存储类型分目录│   ├── domains/{parent}/  # 域页面,按父域分目录│   ├── concepts/          # 概念页面│   ├── metrics/           # 指标页面│   ├── dimensions/        # 维度页面│   ├── dashboards/        # 看板页面│   ├── apis/              # 接口页面│   ├── datasets/          # 数据集页面│   ├── graph.json         # 全局关系图│   ├── index.md           # 全局索引│   └── overview.md        # 全景概览├── log/                   # 构建日志、域候选、健康检查报告├── tmp/                   # 跨 skill 协作的中间状态└── schema/                # 页面模板(5 个,定义 frontmatter 与正文契约)

按职能可以分两类:

主流程中 raw/ 又进一步细分为三态,承担材料质量的入口保障:

Wiki 生成阶段只读 ready/,从源头杜绝低质量材料进入编译流水线,把"材料是否可用"从隐藏字段变成目录归属的物理事实。

4.2 Schema 即契约

Wiki 系统中有多个环节需要读写页面:生成器写入、图构建器提取关系、健康检查校验结构、query 检索内容。如果每个环节对"页面长什么样"各有理解,就会出现生成器写了但检查器读不出的状况。Schema 的作用是对所有环节提供唯一的结构约定,类似微服务间的接口协议——生产者按它写,消费者按它读,任何工具用同一个 parser 就能拿到一致视图。

每个页面是 frontmatter + 正文的双层结构,两者通过 Schema 绑定,形成统一契约。frontmatter 是 YAML 格式的结构化头部,包含共性字段(title、type、description、sources、created、updated 等所有页面都有的字段)和页面特有字段(如 table 的 upstream/downstream/domain/layer,metric 的 computed_by,dashboard 的 uses_datasets 等)。这些字段承载关系和元数据,脚本可直接按字段提取,不需要解析自然语言。

正文是 Markdown 格式的语义内容,每种页面类型定义了固定的章节模板(如 table 页面包含"业务背景 / 加工逻辑 / 字段说明 / 下游 / 使用建议"五个章节)。正文承载业务背景、加工口径、字段说明这些需要 LLM 理解的内容,供检索和问答使用。

正文中的 [[表名]] Wikilink 引用是 frontmatter 关系之外的兜底机制。frontmatter 记录的是显式声明的强关系(血缘、归属、消费),Wikilink 覆盖的是行文中提到但未落到字段里的弱关联,图构建器会扫描这些链接生成 wikilink 边,确保关系图不遗漏正文中隐含的引用。

4.3 Agent 编排:编排层与干活层分离

Wiki 编译是一个多阶段、多类型的任务:材料预处理、基础页面生成、高阶聚合、图构建、健康检查,每个阶段的输入输出差异大,且 LLM 调用是主要时间瓶颈。如果用一个大 skill 串行处理所有事情,既无法并行加速,也难以独立调试某个阶段的问题。因此系统采用编排层与干活层分离的架构——编排器负责调度和协调,干活的 skill 各自只关心自己那一段的逻辑。

整个 Wiki 系统由 7 个 skill 组成,编排架构如下:

              
               wiki-orchestrator (编排层)                          │        ┌─────────┬───────┼───────┬─────────┬──────────┐        ▼         ▼       ▼       ▼         ▼          ▼   material   base    advanced  graph    health     query    -prep   -gen     -gen      -builder  -check              (4 子模块)  (3+2 阶段)

编排层(wiki-orchestrator)只做四件事:意图路由(识别用户在做哪个 Phase)、用户确认(域归属、看板归属、生成范围等关键决策点)、子 Agent 调度(spawn 并行或串行)、结果汇报(聚合各 skill 输出)。它不读原始材料、不写 Wiki 文件、不做 LLM 内容生成——职责严格收敛在"调度"这一层。

干活层的拆分遵循高内聚、低耦合原则:

拆分粒度也由这条原则决定:拆得太细破坏内聚(如把基础生成的 4 种页面拆成 4 个独立 skill,相同的调度框架要重复实现 4 遍);拆得太粗也破坏内聚(如把基础生成和高阶生成合并,但两者输入、依赖、生成方式都不同,合并后内部逻辑异质化、调试困难)。

基础 Wiki 和高阶 Wiki 的拆分正是后一类粒度的边界,是干活层切分中最关键的一刀:

维度

基础 Wiki

高阶 Wiki

性质

原子知识单元

聚合知识单元

类型

表、接口、数据集、概念

域、看板、指标、维度、index、overview

输入来源

raw/ready/ 中的源材料

已落盘的基础 Wiki

生成方式

一对一映射(每个对象生成一页)

多对一聚合(多对象按主题归并成一页)

依赖关系

不依赖其他 Wiki

必须等基础 Wiki 全部落盘

两者属于天然的两个阶段,分开建模才能让"原子生成"和"聚合归并"各自独立优化、独立调试。

综合上述拆分原则,干活层的 6 个 skill 各自覆盖编译检索流水线的一个阶段:

Skill

覆盖阶段

职责

wiki-material-prep

Phase 0 材料预处理

维护清单、抓取 DDL 和任务代码、验证分流

wiki-base-generator

Phase 1 基础生成

生成表、接口、数据集、概念四种基础页面

wiki-advanced-generator

Phase 1 高阶生成

生成域、看板、指标、维度、index、overview

wiki-graph-builder

Phase 1 图构建

扫描 frontmatter 和 Wikilink,沉淀关系图

wiki-health-check

Phase 2 健康检查

执行结构、链接、格式等多项校验

wiki-query

运行时检索

检索页面、查询血缘、关键词搜索

每个 skill 只关心自己的输入输出契约,不感知其他 skill 的内部实现。

以上拆分(编排/干活两层 + 干活层 6 个 skill)共同带来三个收益:

五、知识编译流水线

编译流水线分为三阶段——Phase 0 材料预处理、Phase 1 Wiki 生成(基础生成 + 高阶生成 + 图构建)、Phase 2 健康检查。每个阶段都有明确的输入、输出和处理逻辑,下面依次展开。

5.1 Phase 0:材料预处理

Phase 0 负责把源材料从外部系统抓取下来,经过验证和分流,作为 Phase 1 编译的输入。

流程分为五步:

  1. 用户提供 5 类对象清单(表、任务、看板、接口、文档)。

  2. LLM 解析清单内容并写入对应的 CSV 文件。

  3. 脚本根据清单批量调用元数据接口抓取 DDL、任务代码、看板配置、接口配置、文档原文。

  4. 脚本验证每个对象的材料完整性。

  5. 按结果三态分流到 raw/ready/raw/pending/raw/archive/

其中 LLM 仅在第二步介入(把自然语言输入转为结构化清单),其余环节都是确定性脚本。

Phase 0 在设计上有三个关键考量:

完成后等待用户确认材料的分流决策,确认通过后进入 Phase 1 基础生成。

5.2 Phase 1 基础:基础 Wiki 生成

Phase 1 基础阶段负责把 raw/ready/ 中的源材料编译为 4 种基础 Wiki 页面——表、接口、数据集、概念。

流程分为三步:扫描现状(对比已有 Wiki、新增材料、sources 一致性,确定本次需要生成、修复、跳过的对象集合);按"批间串行、批内并行"的策略生成基础 Wiki 页面(含 frontmatter + 正文);所有页面生成完毕后跑一轮统一校验,未通过的标记重生成。基础 Wiki 落盘后再独立执行域候选判断,输出候选列表供用户确认,回填 domain 字段。

基础 Wiki 生成阶段有四个关键设计:

基础 Wiki 落盘后,进入高阶聚合阶段。

5.3 Phase 1 高阶:高阶 Wiki 生成

Phase 1 高阶阶段把已落盘的基础 Wiki 按业务主题聚合,产出 6 种聚合页面:域、看板、指标、维度、index、overview。

整个过程由一条 DAG 驱动——一阶段三路并行,二阶段串行汇聚:

这条 DAG 的蕴含两层设计意图:

高阶页面之所以能这样组织,关键在于聚合靠 frontmatter 字段反查。域页面、指标页面的内容来自基础 Wiki 的 frontmatter 字段聚合(如域页面列出"我下面有哪些表"是反查所有 domain 字段指向自己的表),不需要重新解析正文。这正是 4.2 frontmatter 设计的直接收益——单页关系字段化让跨页聚合可以低成本完成。

至此基础和高阶 Wiki 全部落盘,关系字段已就位,下一步进入图构建。

5.4 Phase 1 链接:图构建

Phase 1 链接阶段产出全局关系图 graph.json,由节点和边两部分组成。节点对应每个 Wiki 页面(不存储冗余信息,节点详情按需从对应页面 frontmatter 读取),共 8 种类型:

节点类型

路径前缀

table

tables/{db_type}/

domain

domains/{parent}/

concept

concepts/{business|tech}/

metric

metrics/{business_process}/

dimension

dimensions/

dashboard

dashboards/

dataset

datasets/

api

apis/

边是页面之间的关系,共 8 种正向边,按语义分四类:

边类型

含义

方向

来源字段

has_upstream

ODPS 离线血缘

当前表 → 上游表

upstream(task_type=odps)

syncs_from

同步任务血缘

当前表 → 来源表

upstream(task_type=sync)

writes_from

Flink 实时血缘

当前表 → 来源表

upstream(task_type=flink)

belongs_to

归属关系

表/接口/看板/子域 → 父域

domain / parent

computed_by

指标/维度来源

指标/维度 → 表

computed_by

uses

看板使用

看板 → 数据集

uses_datasets

queries

接口/数据集查询

接口/数据集 → 表

queries_tables

wikilink

兜底引用

引用页 → 被引页

正文 [[...]]

图的构建过程:扫描所有 Wiki 页面目录,提取每个页面的 frontmatter,按字段映射到 8 种边类型——例如表的 upstream 字段产生血缘类边(具体类型由 task_type 决定),看板的 uses_datasets 字段产生 uses 边。整个过程由脚本完成,不依赖 LLM。

图构建完成后会反哺 Wiki:基于血缘类正向边反向计算每张表的下游列表,回填到 frontmatter 的 downstream 字段。只读 Wiki 不读图的工具也能直接拿到下游信息,避免轻量消费场景强制依赖 graph.json

"只存正向边 + 反向按需 + 回填关键反向字段 + 文件存储"带来了三个收益:

编译产出已完整,最后一步是健康检查兜底。

5.5 Phase 2:健康检查

Phase 2 健康检查是编译流水线的最后一道质量门禁,对编译产物做全局对账,决定本次构建是否对外发布。

健康检查覆盖结构和格式两类维度,共 6 项:

检查项

检查内容

数量一致性

DDL、Wiki 页面、graph.json 节点三方对账,确保对象数量对齐

结构完整性

按页面类型校验 frontmatter 字段集(必填项齐全、类型正确、枚举值合法)

链接有效性

Wikilink 断链检测、孤岛页面检测(无入边的页面)

Domain 格式

域字段是否符合层级正则(一级域/二级域/...)

YAML 语法

graph.json 和所有页面 frontmatter 的 YAML 语法合法性

Graph 完整性

节点路径合法、边类型在白名单、边两端节点存在

任意一项检查未通过都视为本次编译失败,输出诊断报告到 log/wiki-health-check-{timestamp}.md,标记具体不通过的对象和原因,未通过的编译产物不对外发布。

健康检查与流水线前序阶段构成两道校验关卡:5.2 的"生成完后统一校验"是页面级、生成时的字段一致性检查(如表结构列出的字段是否真实存在于 DDL),5.5 是全局、构建后的对账与契约检查(如 Wiki 总数与 DDL 数量、graph.json 的边是否都连接到合法节点)。两者互补——前者保证单页正确,后者保证整体一致,共同实现 3.4 提出的"正确性可度量"和 4.2 提出的"Schema 即契约"在流水线层面的兜底。

健康检查通过后,本次编译产出对外发布,一次完整的 Wiki 编译流水线结束。

六、知识检索

检索是 Wiki 的最终消费场景,前面的构建和组织最终都要服务于它。前面已经从构建侧给出了"为检索而组织"的设计原则——聚合、渐进式披露、多路召回。从查询侧看,完整的检索栈分为三步:意图识别、多路召回、重排序输出。

6.1 意图识别

任何一次查询请求进入检索前,先做意图识别,按查询特征分为三类:

模糊搜索之前强制做域推断:先读 index.md,根据用户关键词的语义匹配相关域(同时考虑生产方域和消费方域),将搜索范围从全库收敛到 2~3 个相关域。这一步不可跳过——它在召回阶段就把搜索空间大幅缩小,是后续召回质量的前提,也是 3.6 渐进式披露原则在检索侧的直接落地。

6.2 多路召回

模糊搜索的核心是基于域、关键词、图的多路召回,分两阶段执行。

阶段一:缩小范围并生成候选——两路并行。域召回:基于 index.md 推断出的相关域,读取对应的域页面,召回域下挂载的相关表,用业务主题做硬过滤。关键词召回:在 frontmatter 字段和正文上做加权关键词匹配,按字段重要性分配权重(标题、描述、域、上下游等结构化字段权重高于正文),输出按 score 排序的候选集;当用户提到具体字段名时退化为精确匹配。两路并行执行,一个走层级一个走文本,从不同维度切入相同的搜索空间。

阶段二:图扩展——基于阶段一命中的候选表,沿关系图的血缘边向上下游扩展,把"用户搜了 ADS 表,但答案在它的 DWS 上游"这类跨节点场景兜进来。

阶段一和阶段二的产出合并去重,输出 4~6 张候选表交给精排。这种两阶段的设计——先用层级和关键词从全库收敛到候选集,再用图扩展补全血缘相关知识——同时利用了 3.6 中树(聚合)和图(多路召回)的两类组织能力。

6.3 重排序输出

重排序分粗排和精排两步。粗排由脚本完成:基于关键词命中权重和通用性指标计算 score,按分排名输出 4~6 张候选表;脚本不做语义判断,只用确定性规则做初筛。精排由 LLM 完成:对粗排输出的每张候选表逐一读取详情(frontmatter + 正文),判断它是否真正满足查询需求。

精排有一条硬约束:LLM 必须对每张候选表都读详情,不允许在前几张匹配度高时提前停止。靠后的候选可能因为通用性、覆盖度更高而成为最终推荐,跳过详情读取就无法识别这种情况。

精排基于三个维度:

通用性单独成维的设计是为了对抗数仓中的重复建设——一张被广泛使用的表如果用户不知道,往往会另建一张高度相似的表,长期累积形成数据负债。把通用性显式纳入排序维度,让用户在检索时能感知到现有的公共依赖,资产复用率自然提升。

排序逻辑分两层:覆盖度是硬门槛——不满足用户需求的表直接淘汰,无论其他维度多突出。在覆盖度合格的候选中,LLM 根据查询意图综合权衡相关性和通用性——查询意图明确具体时(如"我要查某个特定指标"),相关性优先;查询意图偏探索时(如"这个域有哪些常用表"),通用性优先。最终输出最推荐表 + 候选列表 + 血缘链路。

整条检索链——意图识别按查询类型路由,多路召回利用树和图同时从层级和关系两个维度收敛候选,重排序由 LLM 在结构化候选上做最终判断——是前面"为检索而组织"在查询侧的具体落地,也是构建阶段所有结构化投入(Schema、关系图、域树)的最终消费场景。

七、增量编译与持续 Lint

知识库不是一次性建完就锁起来的——它每天都在变。新表上线、口径调整、任务代码迭代都会让源材料变化,如果每次变更都全量重建,LLM 成本和构建时间都不可接受。增量编译的目标是让构建成本只和变化量相关,而不是和总规模相关:未变化的部分跳过,变化的部分按依赖关系局部重跑。

增量识别的关键是扫描现状对账。每次构建前先比对三方状态:

差异决定本次需要触发哪些阶段的子集执行——这部分逻辑已在 5.2 基础生成的"扫描现状"环节落实,增量编译沿用同一套对账机制。

增量编译可以覆盖三类典型场景:

Lint 是把健康检查从"构建后一次性兜底"扩展为"持续性质量巡检"。健康检查的 6 项规则(数量一致性、结构完整性、链接有效性、Domain 格式、YAML 语法、Graph 完整性)作为知识库的 Lint 规则集,每周或在重大变更后定期跑一次,发现断链、孤岛、格式退化、节点冗余等问题;不通过的项进入治理待办,由对应阶段触发增量重生成。Lint 让知识库的健康度从"构建时合格"变成"持续合格",与第三章 3.4 提出的"正确性可度量"形成构建期 + 运维期的双重保障。

八、总结

一句话:用 LLM 编译思维替代人工写 Wiki,把散落的源材料编译成结构化、有约束、可验证的知识资产。

这套实践由几条相互支撑的设计决策构成:源材料用代码即真相做仲裁,解决多源冲突;生成阶段坚持生成与判断分离,让 LLM 不做主观推断;产出经过结构、语义、人工三层校验,使正确性可度量;所有页面遵循 Schema 即契约,跨工具消费时按字段直接读取;页面之间的关系显式存储为图,业务主题聚合为树并支持渐进式披露,Agent 在有限上下文里也能高效消费;编排和干活分层协作,高内聚、低耦合,让流水线可并行、可调试、可单独复用。

回到开篇——领域知识决定了 AI 在业务中能发挥多大价值,而它只能从内部积累,无法从外部获取。LLM Wiki 提供的是一套系统化的沉淀方法:把散落、矛盾、易腐化的领域知识编译为结构化、可验证的知识资产。这是 AI 时代最值得长期投入的基础设施。

九、未来规划

千问云-为Agent而生,驱动AI生产力
扫描下方二维码,直达千问云体验

点击阅读原文即可体验!

喜欢(0)

上一篇

企业可以这样落地 AI 能力(五):价值闭环

企业可以这样落地 AI 能力(五):价值闭环

下一篇

字节跳动最新AI Coding实践曝光:我总结了7 条反常识的结论

字节跳动最新AI Coding实践曝光:我总结了7 条反常识的结论
猜你喜欢