表格和数据库 — 三条完全不同的路,选错就答错
这一章讲三件事: 为什么表格不能照着文章那样处理; 书里给的三条路各自能回答什么问题、答不了什么问题; 以及选错路时系统为什么不会报错,只会给你一个错答案。 位置:仍在入库线的第一步,但表格是这一步里唯一一类「换个思路就得换整套架构」的资料。
1. 先看现象:同一张表,三个问题,只有一条路全答得对
假设你有一张员工信息表,四万八千行、十五列(年龄、部门、学历、职位、收入……)—— 这正是书里示例用的那份公开数据的规模1。 用户可能这么问:
| 问题 | 长什么样 |
|---|---|
| 甲 | 「64 号候选人的学历是什么?」——只看一行就够 |
| 乙 | 「这张表大概讲了什么?哪几列比较重要?」——要看全貌,但不用算 |
| 丙 | 「本科学历的人里,年收入超过 5 万的占多大比例?」——必须把四万八千行都数一遍 |
第 01 章那套办法(切块、变成一串数、比谁离得近)只能答对甲。
乙勉强,丙必然错——而且不是「答不上来」,是给你一个像模像样的百分比。 因为检索只会搬来几十行「看起来最相关」的记录,模型照着这几十行算了个比例, 它不知道自己只看到了千分之一都不到的数据。
这一章讲的就是:怎么让丙这 类问题也答得对。
2. 顶层全景:一张决策图
用户会问什么样的问题?
│
├─ 查具体某一条 ────────→ 路一:把每一行改写成一句话,当普通文字入库
│
├─ 看整张表的样子 ──────→ 路二:把整张表直接贴进给模型的话里(表得小)
│
└─ 加总/算比例/排名 ────→ 路三:把表放进数据库,让模型写一句查询语句去算
图说:书里明说这是「三种根本不同的方式」,不是三个可以叠着用的技巧。
决定用哪条的不是你的数据,是你的用户会问什么。
书里的原话就是这个意思:处理 Excel 和 CSV——最朴素的那种表格文件, 每行一条记录、列与列之间用逗号隔开,用记事本就能打开—— 有三种根本不同的方式2。
还有一个词后面反复用:加总(行话叫「聚合」)就是把很多行合成一个数—— 求和、算平均、算比例、数个数,都算。
3. 为什么表格是个特例
书里在讨论里点破了根子上的原因,一句话:
大语言模型和嵌入模型,都是为「文字」设计的3。
表格不是文字。 一张表的意思有一半藏在排版里: 第 3 行第 5 列的那个「1」,只有对照着列头「是否本科」才有意义。 你把它抽成纯文字,列与列的对应关系就散了。
一张表: 姓名 年龄 部门 收入
张三 34 供应链 62000
粗暴抽成文字: 张三 34 供应链 62000
↑ 34 是什么?年龄?工龄?工号?—— 对应关系没了
图说:表格的信息一半在格子里,一半在「哪个格子对哪个列头」里。后者是最容易丢的。
三条路,本质上是三种不同的「把对应关系保住」的办法。
4. 路一:把每一行改写成一句话
怎么做
书里给的说明特别好懂:
把 CSV 的每一行变成一句能独立成立的话。 想象你在跟一个从没见过这份数据的小孩解释它—— 拿一行出来,对着列头,用大白话说清这些数字是什么意思4。
例子:
原始一行: age=34, workclass=供应链, education=本科, income=>50K
改写之后: 「这位候选人 34 岁,在供应链部门工作,拥有本科学历,年收入超过 5 万。」
图说:列头被写进了句子里。对应关系从「排版」搬进了「文字」——这才是这一招真正做的事。
改写完之后,这些句子就是普通文字了,走第 01 章那条线:切块、算嵌入、进库5。
书里的示例用的是一份公开的「人口收入」数据集,15 列、48000 行, 用一个固定模板给每一行套出一句话1。