AI 时代的非结构化数据怎么管?文档、图片、音视频的数据湖怎么建?

第 1217 题 约 2 分钟读完

本文目录
  1. 面试怎么回答
  2. 非结构化数据的特点
  3. 数据湖的分层设计
  4. 治理要点
  5. 增量处理

面试怎么回答

非结构化数据体量大、格式多、要提取后才能用,敏感信息藏在内容里,版本和来源也复杂。我会类比数仓分层:原始层把文件存对象存储并开版本,配一张文件元数据表记录来源、格式、哈希、负责人、权限和敏感级别;解析层存文本、OCR、语音转写、图片描述,关联原始文件和解析器版本;加工层存切片、向量和抽取出的结构化信息;服务层提供向量索引、全文检索和抽取结果表。元数据和加工结果用 Iceberg 或 Lance 这类表格式管理。治理上做到全量登记、按哈希去重、继承来源权限并传递到派生数据、解析时识别敏感信息、删除能级联到所有派生数据,并按哈希和修改时间做增量处理。

先把这段讲顺;面试官追问时,再展开下面的原理和细节。

详细讲解

以前数据团队主要管结构化数据:表、字段、指标。现在大模型应用需要大量非结构化数据:合同、工单、客服录音、产品图片、会议视频。很多公司这些数据散落在网盘、邮件、各业务系统里,没人知道有多少、在哪里、能不能用。面试官问这题,想看你能不能把数仓的治理方法延伸到非结构化数据。

非结构化数据的特点

  • 体量大:一个客服录音几 MB,一段视频几百 MB;
  • 格式多:PDF、Word、图片、音频、视频;
  • 信息要「提取」才能用:原始文件不能直接查询,需要解析、转写、生成描述、向量化;
  • 敏感信息隐藏在内容里:合同里的金额、录音里的手机号,字段级的权限管理不适用;
  • 版本和来源复杂:同一份文档有多个版本、多个副本。

数据湖的分层设计

可以类比数仓分层:

  1. 原始层:原始文件存对象存储,保持原样,开启版本管理;配一张文件元数据表:文件 ID、来源系统、路径、格式、大小、哈希、创建时间、负责人、权限、敏感级别;
  2. 解析层:解析后的文本、OCR 结果、语音转写、图片描述、提取出的表格,每条记录关联原始文件 ID,记录使用的解析器和版本;
  3. 加工层:切分后的片段、向量、抽取出的结构化信息(比如从合同里抽出的签约方、金额、到期日);
  4. 服务层:向量索引、全文检索、结构化的抽取结果表,供 RAG 和分析使用。

用 Iceberg 或 Lance 这类表格式管理元数据表和加工结果,可以获得版本、增量、时间旅行这些能力。

治理要点

  • 目录:所有非结构化数据都在元数据表里登记,知道有什么、在哪里;
  • 去重:用文件哈希识别重复文件,避免重复处理和重复检索;
  • 权限:继承来源系统的权限,比如网盘的共享设置,处理后的片段和向量也要带着权限信息;
  • 敏感信息:在解析层识别内容中的敏感信息,打标签或脱敏;
  • 生命周期:保留期限、删除请求的处理要能级联到所有派生数据(文本、片段、向量);
  • 处理成本:解析、转写、向量化都有成本,按需处理,记录每一步的成本。

增量处理

用文件的哈希和修改时间判断是否需要重新处理,新增和修改的文件走增量流水线,避免每次全量。