录音、图片、视频 — 一条「先变成文字」的统一策略
这一章讲三件事: 没有文字可搜的东西怎么进库; 为什么书里给的办法只有一条、而不是每种格式各一套; 以及这一招真正的代价在哪(答案:一次不会报错的信息丢失)。 位置:入库线第一 步的最后一块。读完这一章,「读进来」就讲完了,接着是第 05 章「切成小块」。
1. 先看现象:一段两小时的会议录像
你们组每周开会都录像,存了两年。现在你想问: 「上个季度那次关于供应商切换的讨论,最后结论是什么?」
这份资料是有的,但它在一个搜不了的形态里。
- 录像里有人说话——但那是声音,不是文字;
- 屏幕上有幻灯片——但那是像素,不是文字;
- 你能记得大概在第二个小时——但没有任何东西能把「时间点」和「内容」对起来。
第 01 章那套办法在这里完全用不上:没有文字,就算不出嵌入,就没法比远近。
这一章讲的就是:怎么把这类东西弄成可搜的。
这段录像不是随手举的例子,它是这一章的主走查。 第 8 节会拿它从头走到尾, 每一步旁边写出具体的时间点、文件名和字串——这一章的每个机制都在那条线上占一步。
2. 顶层全景:一条策略,不是七种技巧
书里第 1 章后半部分的七个配方,分别讲音频、图片、扫描件、表格里的图 、多媒体 PDF 和视频。 看起来是七件事,其实是同一条策略的七次应用:
录音 ──语音转文字──┐
视频里的说话声 ────┤
扫描件 ──认字────┤
图片 ──让模型讲一遍──┼──→ 一段文字 ──→ 走第 01 章那条线:切块 → 算嵌入 → 进库
表格 ──让模型提炼──┤
幻灯片截图 ────────┘
图说:漏斗的出口只有一个——文字。所有花招都发生在漏斗口之前。
为什么只能这样? 书里在讲多媒体 PDF 时说了实话。先把它用的一个词说清: 第 01 章那个「把一段文字变成一串数」的模型,原文叫文本嵌入模型。
人类可以轻松理解这些元素,但 RAG 系统靠的是擅长处理文字、 却对付不了图像的文本嵌入模型。要弥合这个鸿沟, 就用能看图的模型把图片和表格分析、总结成文字1。
这句话是整章的地基。 记住它,后面每一节都是它的一个实例。
先说清一个词:能同时读图和读字的模型,叫多模态模型 (「模态」指信息的形态——文字是一种,图像是一种,声音是一种)。
书里用的是 OpenAI 的 GPT(这三个字母是 OpenAI 给自家这一系列模型起的名字, ChatGPT 里的 GPT 就是它)家族里的 GPT-4o,并提到 Anthropic 的 Claude 3.5 Sonnet、 Google 的 Gemini 1.5 也是好选择2。
3. 声音:先转成字
怎么做
用语音转文字(把录音里的话变成文字)的模型。书里对这类模型的描述是: 它们在多种语言、成千上万小时的音频上训练过,近年提升明显, 能自动识别语种,也能应付很吵的背景噪音3。
书里用的是 OpenAI 的 Whisper。代码短到只有一次调用:给它 文件路径和模型名,拿回一段文字。
这里要先说清一个词:接口(英文 API:你的程序按约定的格式把数据发给别人家的服务、再拿回结果)。 本文后面一律叫「接口」。
作者在这里写了一句我觉得全书最诚实、也最刺的话:
一次接口调用,你的产品就可以打上「AI 驱动」的标签了。4
一个真实的取舍:云上跑,还是自己跑
书里把这个决定说得很清楚,而且判据只有一条:
| 情况 | 该怎么选 | 书里的理由 |
|---|---|---|
| 要快速搭起来、要能扛量 | 用云服务(AWS、Azure、GCP 之类) | 省事、扛得住量5 |
| 数据敏感 | 把开源(源代码公开、谁都能自己下载来跑)的模型装在自己公司的机器上跑 | 这样只有你自己能碰到这些数据6 |
第一行那句「扛得住量」在原文里就只有这 么一个词,我们把它拆开说清楚 ——以下这层展开是我们补的: 云服务的意思是量一大就自动多派机器、量小了自动撤掉, 你不必自己备一屋子机器,也不必为闲着的机器付钱。
注意第二行的分量。 把会议录音发给第三方服务,等于把会议内容发出去了。 书里没有展开,但这是这一章里唯一一处涉及合规的决定。
判断(我们的,不是书里的): 这条取舍比书里写的更不对称。 一旦选了云服务,后面所有多模态的步骤都会跟着上云—— 因为看图、写摘要用的也是同一家厂商的服务。 所以这不是「音频这一步怎么办」的局部决定,它实际上决定了你整条入库线的数据边界。 如果错,会错在: 如果你的厂商提供了明确的「不用于训练、不留存」的合同条款, 并且你的合规要求接受这一点,那这条顾虑就降级成一个采购问题,不是架构问题。
顺带补一句书里没给的背景: Whisper 出自 2022 年 12 月的一篇论文, 它在 68 万小时的多语言、多任务音频上训练——一个人不吃不睡连着听,要听 78 年; 论文的主张是它在没有针对性微调 (拿一个已经训练好的模型,再用你自己的少量数据接着训一小段,让它更贴合你的场景) 的情况下,就能在标准评测上接近「拿人工核对过的数据从头训一遍」的水平7。