请设计一个 JSON-LD 描述方案,记录每条样本的原始来源、清洗算子、时间戳。
解读
面试官想验证三件事:
- 你是否理解大模型数据治理中“可追溯”与“可审计”的刚性合规要求(网信办《生成式 AI 管理办法》第十三条)。
- 你是否能把技术元数据(清洗算子、版本、哈希)与业务元数据(来源、授权、标签)在同一套语义化 Schema 里表达,方便下游 LLMOps 做影响分析与回滚。
- 你是否熟悉JSON-LD 的图模型,能把“一条样本”拆成多个节点(实体),避免冗余,同时保证可扩展(未来新增算子或合规字段无需改表结构)。
回答时务必体现:
- @context 自主可控(国内主机厂、云厂商都要求本地化部署,不能硬引用外网词汇表)。
- 时间戳用 RFC 3339 且带 Asia/Shanghai 时区,满足等保 2.0 审计要求。
- 清洗算子用可执行 URI 命名空间,方便 CI/CD 通过 URI 反查容器镜像 digest,实现“数据-代码”双链路溯源。
知识点
- JSON-LD 核心概念:@context、@id、@type、@graph,用于把扁平 JSON 映射成 RDF 三元组,支持联邦查询。
- 数据血缘(Data Lineage):每条样本必须记录“上游数据集 → 清洗任务 → 输出”三段式,方便出现合规风险时一键断流。
- SHA-256 内容寻址:样本内容无论落地到对象存储还是 NAS,都用多哈希校验防止“静默篡改”。
- 清洗算子版本化:算子=Docker 镜像 URI+digest,保证可复现;同时把算子参数做成 key-value,方便 A/B 对比。
- 国内合规字段:必须预留 dataLicense(授权链)、personalInfo(是否含个人信息)、securityLevel(核心数据/重要数据/一般数据)三个枚举,方便通过数据分类分级工具自动打标签。
答案
给出一套可直接落地的最小可用 JSON-LD 模板,并逐行解释设计意图。
{
"@context": {
"@vocab": "https://example.com/llmops/datalineage#",
"xsd": "http://www.w3.org/2001/XMLSchema#",
"prov": "http://www.w3.org/ns/prov#",
"dataLicense": {"@type": "@id"},
"cleanStep": {"@type": "@id"},
"inputOf": {"@type": "@id"},
"outputOf": {"@type": "@id"}
},
"@id": "https://example.com/dataset/sample/s_7f8a3c",
"@type": "Sample",
"rawSource": {
"@id": "https://example.com/datasource/wiki_zh_2024q1",
"name": "中文维基2024Q1快照",
"dataLicense": "https://example.com/license/cc-by-sa-4.0",
"personalInfo": false,
"securityLevel": "一般数据"
},
"contentHash": "sha256:9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08",
"cleanStep": [
{
"@id": "https://example.com/operator/remove_html@v1.3.2",
"name": "HTML标签清洗",
"image": "registry.cn-shanghai.aliyuncs.com/llmops/remove_html@sha256:4a8a08f…",
"params": {"keepTable": true, "unicodeNorm": "NFKC"},
"startedAt": "2024-04-21T14:23:45+08:00",
"endedAt": "2024-04-21T14:23:47+08:00"
},
{
"@id": "https://example.com/operator/pii_mask@v2.0.1",
"name": "国内手机号脱敏",
"image": "registry.cn-shanghai.aliyuncs.com/llmops/pii_mask@sha256:7b3c19a…",
"params": {"maskChar": "*", "keepLast": 4},
"startedAt": "2024-04-21T14:23:48+08:00",
"endedAt": "2024-04-21T14:23:50+08:00"
}
],
"timestamp": "2024-04-21T14:23:50+08:00",
"outputOf": {
"@type": "prov:Activity",
"prov:startedAtTime": "2024-04-21T14:23:45+08:00",
"prov:endedAtTime": "2024-04-21T14:23:50+08:00"
}
}
设计要点
- @context 采用私有域名,完全本地化,避免访问外网失败导致解析错误。
- contentHash 字段用 sha256 保证样本级完整性;若样本大于 10 MB,可改用分片哈希+ Merkle Tree。
- cleanStep 数组按执行顺序排列,每个算子带 image+digest,实现“数据-代码”双链路锁定。
- timestamp 取最后一个算子结束时间,与 prov:Activity 对齐,方便统一时序查询。
- rawSource 块预留了 dataLicense、personalInfo、securityLevel,可直接对接数据分类分级平台,一键生成合规报告。
拓展思考
- 联邦查询场景:若公司同时用图数据库 NebulaGraph做血缘存储,可把上述 JSON-LD 直接转成 RDF Turtle,通过 SPARQL 查询“某算子升级后影响到的所有样本”,实现灰度回滚。
- 流式清洗:对日均 50 TB 的日志流,可把 JSON-LD 拆成头信息(静态)和体信息(动态),头信息存入Hive Metastore,体信息用Avro + Kafka传输,降低 30% 网络开销。
- 合规自动化:在 CI 阶段引入策略即代码(PaC) 引擎,如 Open Policy Agent,规则示例:
deny if sample.securityLevel == "核心数据" and cleanStep.image not contains "cn-shanghai",防止跨境传输风险。 - 样本去重:利用 contentHash 构建布隆过滤器,可在数据湖入湖前秒级去重,节省 15% 存储;同时把去重记录写成另一条 JSON-LD,接入同一套血缘图,保证“去重”本身也可追溯。