跳转至

Lecture 6:面向数据工程的大语言模型与面向大语言模型的数据工程

本讲从两个方向讨论数据与大语言模型(large language model,LLM)的结合:LLM 如何帮助数据分析与数据工程(LLM4Data),以及数据管理如何提升 LLM 的训练与服务(Data4LLM)。

学习目标

  • 了解提示、数据湖分析、语义算子、自然语言分析流水线与数据智能体的基本思路。
  • 掌握 LLM 数据准备中的筛选、去重、增强和数据混合问题。
  • 认识准确性、成本、可扩展性和数据质量方面的主要权衡。

1. LLM4Data:用大模型扩展数据分析

传统数据库擅长精确、结构化的查询,但复杂语义条件通常难以直接表达。LLM 能把自然语言需求映射到查询或处理计划,并利用上下文和推理能力分析文本等非结构化数据;代价是可能产生幻觉(hallucination)、结果不稳定、调用成本高,复杂任务也更容易出错。实践中应结合领域知识、执行验证和成本控制,而不是把模型输出当作事实。

1.1 提示与上下文学习

上下文学习(in-context learning)通过提示中的任务说明和示例引导模型,而不更新模型参数。

  • 零样本提示(zero-shot prompting):描述任务,不提供示例。
  • 指令提示(instruction prompting):补充明确步骤、约束及输出格式。
  • 少样本提示(few-shot prompting):提供少量输入—输出示例,展示期望行为。

例如,结构化查询语言(Structured Query Language,SQL)查询改写提示应说明目标数据库、等价性要求和延迟目标;提供示例时还需覆盖可能出现的边界情况。提示质量会影响生成结果,但必须在目标数据库上执行并检查结果。

1.2 数据湖与语义分析

数据湖(data lake)可存放关系表等结构化数据、CSV/JSON 等半结构化数据,以及邮件、文档和 PDF 等非结构化数据。数据湖常缺少统一模式,字段含义和文档布局也未必一致,因此直接进行分析较困难。SQL 适合精确查询关系数据,但复杂语义条件通常难以直接表达。

常见方法包括:

  1. 结构化信息抽取:从文档抽取字段和值,形成结构化表,再用 SQL 分析。LLM 可辅助发现候选模式并生成抽取代码,但应检查字段覆盖率与抽取准确率。
  2. 手写程序编排:由程序调用 LLM 完成语义判断或抽取,再将结果交给传统处理代码。流程可控,但开发者需要自行设计、优化和维护步骤。
  3. 自然语言到流水线(NL2Pipeline):将自然语言问题映射到预先定义的过滤、连接、聚合等算子,并据此生成执行计划。难点是计划逻辑正确性和执行效率。
  4. 数据智能体(data agent):结合数据理解、任务规划、工具调用、记忆与反思,自主分解并执行数据相关任务。它可协调数据库、代码和可视化工具,但需要解决工具选择、权限、调度及多智能体协作问题。

结构化抽取还可利用重复出现的文档模板:先从样本文档归纳字段或标题层次,再把模板用于其他文档。若文档结构变化,基于固定位置或固定模板的抽取容易失效,需要对不同模板进行识别和验证。

1.3 语义算子与查询执行

语义算子(semantic operator)是由自然语言条件参数化的数据变换,可用于过滤、映射、连接、聚合或排序等操作。与普通关系算子不同,语义判断可能需要 LLM 理解文本含义。

一种执行策略是把自然语言问题转换成 SQL,并在需要语义判断的位置调用模型用户定义函数(user-defined function,UDF)。这能复用数据库的批处理和查询执行能力,但大量逐行模型调用会造成较高延迟与费用。可在允许的任务中先用嵌入相似度、分类器或蒸馏模型处理简单样本,把 LLM 留给困难样本;近似筛选则可能牺牲准确性,需通过抽样评估控制风险。

另一种方式是先由模型生成多步骤计划,再映射为 SQL、Python 或视觉问答等工具操作。显式计划有助于组合多模态数据,但生成计划可能逻辑错误、串行执行效率低;因此需要验证中间结果,并优化可并行的步骤。

1.4 自然语言查询与 Text-to-SQL

Text-to-SQL 将自然语言问题转换为数据库查询。一个稳健流程至少应:

  1. 提供准确的表、字段、类型、主外键和业务术语说明;
  2. 生成受限的只读查询,并检查其语法、权限和查询成本;
  3. 执行查询,检查结果是否符合预期;
  4. 在需要时把结果整理为自然语言答案,并保留数据来源。

SQL 可以精确表达过滤、连接和聚合,却不总能表达“相关”“值得注意”等开放语义;纯语义检索也可能难以高效处理严格的数值过滤或大规模批量处理。结合数据库查询与受控语义判断,可以利用两者的优势。查询改写也必须保持语义等价,不能只因文本或执行计划看起来更短就视为优化成功。

2. Data4LLM:用数据工程改善大模型

LLM 生命周期包括预训练(pretraining)、监督微调(supervised fine-tuning,SFT)、基于人类反馈的强化学习(reinforcement learning from human feedback,RLHF)、提示、检索增强生成(retrieval-augmented generation,RAG)和智能体应用。数据管理贯穿这些阶段,并影响模型效果、训练效率与部署成本。

2.1 数据准备

数据准备(data preparation)将规模大、质量不一的数据整理为适合训练或评估的集合。典型环节包括数据发现、选择、清理、去重、增强、标注、合成、处理、优化与存储。流程需要在质量、覆盖面、成本和合规要求之间权衡。

2.2 数据选择与质量评估

数据选择(data selection)希望用较少但高质量的数据维持或改善训练效果。常见方法有:

  • 规则筛选:依据语言、长度、符号比例、重复程度等启发式规则过滤;速度快,但规则可能误删特定领域内容。
  • 分类筛选:用精选语料训练分类器,估计其他样本与高质量数据的相似程度;需要可靠的代表性样本。
  • 困惑度筛选(perplexity-based selection):用语言模型衡量文本在目标分布下的可预测性。困惑度较低表示模型认为文本更符合该分布,不等于事实正确或内容有价值。
  • 标准打分:按写作质量、专业性、事实密度和教育价值等维度评价样本,可将人工偏好转化为评分或排序模型。

领域数据选择还可比较领域语料与通用语料对样本的概率或交叉熵,以估计某样本是否更接近目标领域。任何自动评分都可能偏向某些风格,应使用独立样本和下游任务评估筛选效果。

2.3 去重、增强与数据混合

数据去重(data deduplication)可减少重复训练、降低资源浪费并缓解重复内容带来的记忆风险:

  • 精确匹配可使用规范化文本后的哈希或 URL 去重;
  • 近似匹配可使用 MinHash 等方法估计文本重叠;
  • 语义去重可利用向量嵌入和聚类发现内容相近的文档。

布隆过滤器(Bloom filter)以较小内存快速判断元素“可能存在”或“一定不存在”,但存在误报的可能,不能据此无条件删除文档。近似去重阈值也会影响误删与漏删,需要抽样复核。

数据增强(data augmentation)通过变换或补充样本扩展训练数据。图像可做裁剪、旋转或颜色变换,文本可做改写或同义表达替换,医学等领域还可使用符合专业约束的变换。增强样本必须保持标签和语义有效,不能因扩大数量而引入不真实或偏置数据。

数据混合(data mixing)决定训练语料中不同领域或来源的采样比例。小规模来源若过度采样会放大噪声,代码等领域的比例也可能影响语言能力与推理能力。比例可通过小规模实验或代理模型评估,再根据目标任务与整体能力调整;单一固定比例未必适用于所有模型和目标。

3. 关键实践原则

  • 把 LLM 放在可审计的数据流程中:输入、提示、工具调用和结果都应有边界。
  • 将生成、抽取和语义判断结果与原始数据及查询关联,支持复核。
  • 对关键 SQL 使用只读权限、语句限制、超时和资源配额;简单文本检查不足以构成安全边界。
  • 对近似筛选、去重和增强进行抽样评估,记录误报、漏报和对下游效果的影响。
  • 保护数据授权、隐私和敏感信息,并评估外部模型调用的成本。

4. 开放问题

LLM4Data 的研究方向包括数据智能体与面向数据任务的基础模型;Data4LLM 包括数据织物(data fabric)与数据飞轮(data flywheel);两者还需要共同设计数据、模型和执行系统。实际系统仍需提升可靠性、规划效率、跨数据源语义一致性以及大规模服务能力。