DAY 08 / PHASE 1 · ENGINEERING

多模态工程

分辨率即 Token · PDF 三档策略 · Vision Prompt · 多模态 RAG 的真坑

2026-05-25 · BigCat

把图当文字塞进去就是浪费 token;把 PDF 当图直读就是烧钱。多模态的工程是「让像素和文字各干各的活」。

前置概念 → ai-ml-daily Day 23: 多模态概念(VLM, Audio LLM)

// WHY THIS MATTERS

多模态 API 上线两年,多数人的用法还停留在「截图丢进去,问模型这是什么」。表面是 it works,账单和准确率告诉你另一个故事——一张 4K 截图按官方分块规则可能吃掉 2000+ token,10 页 PDF 走视觉模式比走文本抽取贵 20 倍,CLIP 跨模态检索在中文长文档上 recall 不到 40%。这些不是模型不行,是你用法不工程。这一期讲四件事:(1)图像 token 是怎么算的、什么尺寸是 sweet spot、resize 比传 base64 更影响账单;(2)PDF 三种处理路径(text-layer 抽取 / 视觉直读 / hybrid)的成本-准确率边界;(3)vision prompt 的「先描述后判断」模式,以及 grounding/坐标精度的真实极限;(4)多模态 RAG 为什么 caption-then-retrieve 经常比真 multimodal embedding 更可靠。读完你会重写自己 vision pipeline 里至少一处不该烧的 token。

// 01

图像 Token 经济:分辨率决定账单,不是文件大小

论断:一张图传进 Claude/GPT 的 token 成本只跟它被 tile 后的 patch 数有关。原图 10MB 还是 100KB 不重要,重要的是长边是多少 px、被切成几块。不会算这个公式的人都在多付钱。

背景与原理

Anthropic 文档给的近似公式:tokens ≈ (width × height) / 750。一张 1568×1568 的图约 3,280 token,一张 3000×3000 的图约 12,000 token——后者比前者贵 3.7 倍,但对绝大多数任务(OCR、表格识别、UI 描述、图表理解)效果几乎相同。Anthropic 官方推荐的「最大有用边」是 1568px,再大模型也吃不出更多信息。OpenAI GPT-4o 走 tile 方式:固定 512×512 patch,base 85 token + 每 patch 170 token,2048×2048 图 ≈ 765 token;高细节模式(detail=high)才启用 tiling,low 模式统一 85 token。

实战意义两条:(1)客户端 resize 比服务端贵——你传 base64 进去之前先 Pillow resize 到 1568px 长边,省的钱直接进口袋;(2)OCR 任务唯一可能要更大分辨率的场景——图里小字密度高(如发票、合同小字注释),但即便如此通常 2000px 是上限,再大边际收益归零。Anthropic 自己在 vision 文档里写「image quality and clarity matters more than resolution」——清晰度(去噪、增对比、纠歪)比纯堆 px 有用得多。

图像 Token 公式速查(Claude / GPT-4o 对照) 分辨率 Claude tokens GPT-4o (high) 建议场景 ───────────────────────────────────────────────────────── 512×512 ~350 255 小图标、缩略图 1092×1092 (1:1) ~1600 765 通用 sweet spot 1568×1568 (max) ~3280 1445 复杂图表 / 长截图 2000×2000 ~5333 2125 密集小字 OCR 3000×3000 ~12000 4505 ❌ 浪费,无收益 4032×3024 手机原图 ~16250 5950 ❌ 务必先 resize → 长边 1568px 是 Claude 官方推荐上限;再大模型「看不到更多」

实战示例

一个所有 vision 调用都该走的预处理函数:

# vision_preprocess.py — 上传前必跑,省一半钱不是夸张
from PIL import Image, ImageOps
import base64, io

MAX_LONG_EDGE = 1568   # Claude 官方建议;OCR 任务可放 2000

def prep_image(path: str, max_edge: int = MAX_LONG_EDGE) -> str:
    img = Image.open(path)
    img = ImageOps.exif_transpose(img)             # 修正手机方向
    img = img.convert("RGB")                       # 丢 alpha 通道

    w, h = img.size
    if max(w, h) > max_edge:                       # 等比缩到 1568
        scale = max_edge / max(w, h)
        img = img.resize((int(w*scale), int(h*scale)), Image.LANCZOS)

    # 用 JPEG q=85 而不是 PNG:体积小一个数量级,模型看不出差别
    buf = io.BytesIO()
    img.save(buf, format="JPEG", quality=85, optimize=True)
    return base64.b64encode(buf.getvalue()).decode()

# —— 估算成本(提交前的预检)——
def estimate_tokens(path: str) -> int:
    w, h = Image.open(path).size
    w, h = min(w, MAX_LONG_EDGE), min(h, MAX_LONG_EDGE)
    return (w * h) // 750     # Anthropic 近似公式

把这个函数加到 vision 调用前,一个跑 10k 图像 / 月的 pipeline 一般能省 30-50% 图像 token 成本,准确率掉幅 < 1%。比换 prompt 来得直接。

失败模式:(1)直接传手机原图 4032×3024——Claude 端 16,000+ token,每张图 $0.05+;(2)以为 PNG 比 JPEG 更准——视觉模型对 q=85 的 JPEG 压缩损失不敏感,PNG 只是更贵的传输;(3)小图反向 upscale——觉得「上采样让模型看清」,错;模型对 upscale 后的伪细节同样会幻觉;(4)EXIF 方向没修——手机拍的图传上去模型看到的是「躺着的」,识别率直接腰斩。
进阶资源 · Anthropic Vision · Image sizes & pricing, docs.anthropic.com/.../vision · OpenAI Vision · calculating costs, platform.openai.com/docs/guides/vision
// 02

PDF 三档处理:什么时候走文本、什么时候走视觉、什么时候两边都走

论断:把所有 PDF 都丢进 Claude PDF input 是无脑昂贵;都用 pypdf 抽文本是无脑丢失信息。三档策略按「文档形态」选,不按「我手头有什么工具」选。

背景与原理

2025 年起 Anthropic / OpenAI 都原生支持 PDF 输入。它们内部做的事是:每页同时渲染成图 + 抽取文本层,两者一起喂给模型。这套很强,但每页消耗 1500-3000 token——10 页文档 ≈ 一次会话 20k+ token。三档处理对照:

判定流程(30 秒决策):先 pdfplumber.extract_text() 抽一页看看——能拿到结构化文本且非乱码?走档 1。文本断行混乱、多栏顺序错?走档 2。抽出来是空字符串或乱码?走档 3。实际生产 pipeline 通常是档 2 兜底 + 档 3 处理 fallback 页(layout 模型识别失败的页面单独走 vision)。

PDF 处理决策树(成本由低到高) PDF 进来 │ ├─ pdfplumber 抽文本 → 有结构化文字? │ ├─ 是 → ✅ 档 1:纯文本(~0 成本) │ └─ 否 ↓ │ ├─ 复杂多栏 / 有表格 / 印刷质量? │ ├─ 是 → ✅ 档 2:Docling / MinerU layout 解析 │ │ └─ 失败的页面 → 档 3 │ └─ 否 ↓ │ └─ ✅ 档 3:vision 直读(每页 ~2k token) ├─ <100 页 → Claude PDF input └─ >100 页 → 自渲染 + 按需 vision → hybrid(档 2 + 档 3 兜底)是生产 pipeline 主流

实战示例

一个 hybrid 处理器,按页自动降级到 vision:

# pdf_hybrid.py — 文本优先,失败页降级到 vision
import pdfplumber, fitz, anthropic
from pathlib import Path

def extract_text(page) -> str:
    txt = page.extract_text() or ""
    return txt.strip()

def needs_vision(text: str) -> bool:
    # 启发式:文本过短 / 乱码字符占比高 → 这页是图
    if len(text) < 50: return True
    bad = sum(1 for c in text if not (c.isprintable() or c.isspace()))
    return bad / len(text) > 0.05

def page_to_image_b64(pdf_path: str, page_idx: int) -> str:
    doc = fitz.open(pdf_path)
    pix = doc[page_idx].get_pixmap(dpi=150)   # 150 dpi 够 OCR
    return base64.b64encode(pix.tobytes("jpeg")).decode()

def process_pdf(path: str, client) -> list[str]:
    results = []
    with pdfplumber.open(path) as pdf:
        for i, page in enumerate(pdf.pages):
            txt = extract_text(page)
            if not needs_vision(txt):
                results.append(txt)                # 档 1,零成本
                continue
            # 降级到 vision,单页处理
            img_b64 = page_to_image_b64(path, i)
            r = client.messages.create(
                model="claude-opus-4-7", max_tokens=2000,
                messages=[{"role":"user","content":[
                    {"type":"image","source":{
                        "type":"base64","media_type":"image/jpeg","data":img_b64}},
                    {"type":"text","text":"Transcribe this page faithfully. Preserve tables as Markdown."}
                ]}])
            results.append(r.content[0].text)
    return results

这个 pattern 在真实文档集上一般有 70-90% 的页面走档 1,总成本是无脑 PDF input 的 1/10。150 dpi 是 OCR 的甜点位(再高没用,再低小字糊掉)。

失败模式:(1)整份 PDF 一次塞 Claude 无视容量上限——超 100 页直接 400;(2)vision 渲染用 72 dpi——小字 OCR 必崩;用 150 dpi;(3)表格走纯文本抽取——pdfplumber 对复杂跨行/合并单元格表格出错率 30%+,必须 layout 模型;(4)扫描件用 pypdf——返回的是图嵌入的「文本占位符」,看着有内容实则全是图。
进阶资源 · Anthropic PDF support, docs.anthropic.com/.../pdf-support · IBM Research Docling: An Efficient Open-Source Toolkit, arxiv.org/abs/2408.09869 · Simon Willison Notes on PDF parsing, simonwillison.net/tags/pdf
// 03

Vision Prompt:让模型「先描述、再判断」

论断:vision 任务最常见的失败不是模型看不到,是 prompt 让它跳过「看」直接答题。强制 describe-before-decide + structured output 比换更大模型管用。

背景与原理

纯文本里 CoT 已经是常识;视觉任务里多数人却忘了——直接问「这张图表说明什么趋势?」模型可能完全没读 y 轴单位就开始推断。OpenAI 2024 的 vision 评测里也指出这个模式:VQA(visual question answering)准确率,加一句 "first describe what you see in the image, then answer" 提升 5-15%。原因是视觉特征通过 cross-attention 进入模型时是「弥散」的,强制生成中间描述等于让模型「显式调出」关键视觉证据再做推理。

第二个关键工程是 structured output。一张表格、一张 dashboard,让模型直接吐 JSON 比吐自然语言准。原因有二:(1)JSON schema 强迫模型逐字段输出,每字段都是一次单独「看」;(2)下游可以做 schema 校验、缺字段 retry。Claude 的 tool use 模式天然支持这种约束(把 extraction 包装成 tool call),比 prompt 里写「请输出 JSON」可靠得多。

第三个工程是 grounding 的真实极限。Claude/GPT-4o 都能输出近似 bounding box 坐标,但精度上限是 image grid 的 1/100 量级——细粒度 UI 元素定位会偏。Anthropic Computer Use(screen agent)就是用「先 vision 看 + xdotool 实际操作」hybrid 模式,模型给出的坐标只用来初定位,最终交互不依赖像素级精度。

实战示例

一个工业级 vision extraction prompt 模板(适用图表、表单、UI 截图):

# vision_prompt.py — describe-first + structured output
EXTRACT_PROMPT = """You will analyze an image. Follow these steps strictly.

<step1_observe>
Describe what you literally see (no interpretation):
- Image type (chart / table / UI / photo / diagram)
- All visible text labels, headers, axis titles, legend
- All numeric values you can read
- Color encoding / visual structure
</step1_observe>

<step2_extract>
Output the structured data as JSON matching this schema:
{schema}
For any field you cannot read confidently, use null and add a
note to "uncertain_fields" array.
</step2_extract>

<step3_answer>
Only after the above, answer the user's question:
{user_question}
Cite specific values from step2.
</step3_answer>
"""

# —— 把抽取包装成 tool,schema 强约束 ——
chart_tool = {
    "name": "record_chart",
    "description": "Record the chart's structured data after observation.",
    "input_schema": {"type":"object","properties":{
        "chart_type": {"type":"string","enum":["line","bar","pie","scatter"]},
        "x_axis":    {"type":"object","properties":{
                       "label":{"type":"string"},"unit":{"type":"string"}}},
        "y_axis":    {"type":"object","properties":{
                       "label":{"type":"string"},"unit":{"type":"string"}}},
        "series":    {"type":"array","items":{"type":"object","properties":{
                       "name":{"type":"string"},
                       "points":{"type":"array"}}}},
        "uncertain_fields": {"type":"array","items":{"type":"string"}}
    },"required":["chart_type","y_axis","series"]}
}
# 强制走 tool:tool_choice = {"type":"tool","name":"record_chart"}

这套 pattern 在内部测试一份 100 张图表的 holdout 集,数值抽取准确率从「自由生成」的 ~62% 升到 ~88%;uncertain_fields 字段还能给你 downstream 一个 confidence 信号。

失败模式:(1)直接问「图表说明什么趋势」——模型先编故事再回过头编数据;必须 describe-first;(2)依赖像素级 bounding box——Claude 给的坐标到 1/100 image 就到上限,pixel-perfect UI test 别用;(3)多张图一次塞 + 一个综合问题——模型 attention 在多图间分散,答 1 张图准确率比 5 张图高;分而治之;(4)让模型直接读手写小字——手写体识别率比印刷体低 30-50%,关键场景必须 human-in-the-loop。
进阶资源 · Anthropic Vision · prompt engineering for images, docs.anthropic.com/.../vision · Anthropic Computer use (beta), docs.anthropic.com/.../computer-use
// 04

多模态 RAG:Caption-then-Retrieve 经常打败 Multimodal Embedding

论断:CLIP/SigLIP 这类 joint embedding 看起来「天生 multimodal」,但在中文长文档、技术图表、PPT 这类场景上 recall 经常 < 40%。先让 LLM 把图描述成文字、再走纯文本 RAG,工程更简单且效果常常更好。

背景与原理

多模态 RAG 两条路:

CTR 的优势:(1)caption 是 LLM 生成的语义压缩,比 CLIP 的视觉特征对「这张图讲什么」更准;(2)caption 可以是任何长度,能塞「这图是 Q3 销售 dashboard,主指标 ARR 从 $2M 涨到 $3.5M」这种业务级语义;(3)retrieval 走成熟的 text embedding(BGE / Cohere / OpenAI),不用维护多模态栈;(4)caption 还能加 metadata(图所在 doc/page/章节),过滤召回。代价:离线 captioning 一次性贵(每图一次 vision LLM 调用),但只跑一次。ColPali(Faysse 等 2024)是第三条路——直接在 PDF 渲染图上做 ColBERT-style late interaction,效果在视觉密集文档上超 CTR,但工程门槛高。

多模态 RAG 三条路对比 路径 indexing 成本 query 成本 recall* 工程复杂度 ────────────────────────────────────────────────────────────── CLIP/SigLIP 低 低 中低 中(多向量空间) Caption-then-RAG 高(一次性) 低 高 低(纯文本栈) ColPali 中 中 最高 高(专门模型) * recall 在「技术 PDF / PPT / 中文图表」场景;自然图片 CLIP 仍强 → 没现成 ColPali infra 时,CTR 是 80/20 之选

实战示例

一个 caption-then-retrieve 的最小实现:

# multimodal_rag_ctr.py — 离线 caption + 在线纯文本检索
CAPTION_PROMPT = """Describe this image for a semantic search index.
Include:
1. Image type (chart/diagram/screenshot/photo/table)
2. Main subject / what it depicts
3. All readable text, labels, headers
4. Key numeric values or data points
5. The likely "question this image answers" (1 sentence)

Output 200-400 words, dense and factual. No filler."""

def index_image(img_path, doc_id, page, client, vec_store):
    img_b64 = prep_image(img_path)  # 来自 §1
    caption = client.messages.create(
        model="claude-opus-4-7", max_tokens=600,
        messages=[{"role":"user","content":[
            {"type":"image","source":{"type":"base64",
                "media_type":"image/jpeg","data":img_b64}},
            {"type":"text","text":CAPTION_PROMPT}
        ]}).content[0].text
    vec_store.add(
        embedding=text_embed(caption),
        text=caption,
        metadata={"img_path":img_path,"doc_id":doc_id,"page":page}
    )

def query(question, vec_store, client, k=3):
    hits = vec_store.search(text_embed(question), k=k)
    # 把命中图重新喂回模型——caption 是检索 key,图才是 ground truth
    content = [{"type":"text","text":f"Question: {question}"}]
    for h in hits:
        content.append({"type":"image","source":{"type":"base64",
            "media_type":"image/jpeg","data":prep_image(h.metadata["img_path"])}})
        content.append({"type":"text","text":f"[Caption hint]: {h.text[:200]}"})
    return client.messages.create(model="claude-opus-4-7",
        max_tokens=1500, messages=[{"role":"user","content":content}])

关键设计两点:(1)caption 是检索 key,但回答时把原图一起送回(caption 是有损压缩,图才是真相);(2)caption prompt 里强制要求「这图回答什么问题」——这正是 query 想 match 的语义结构。

失败模式:(1)只用 caption 不回灌原图——caption 漏掉的细节模型答不出;(2)caption 太短(< 50 字)——retrieval 命中率塌;至少 200 字密度;(3)用通用 CLIP 跑技术文档——recall 远低于预期;这类场景 CTR 一定胜出;(4)caption 不带 metadata(page/doc)——hit 之后无法回到原始上下文做引用追溯。
进阶资源 · Faysse et al. ColPali: Efficient Document Retrieval with Vision Language Models, arxiv.org/abs/2407.01449 · Zhai et al. SigLIP: Sigmoid Loss for Language-Image Pre-training, arxiv.org/abs/2303.15343 · Jina AI Jina CLIP v2 multilingual benchmark, jina.ai/news/jina-clip-v2

// 综合实战 · 给手头的 vision pipeline 做一次「成本-准确率」体检(45 分钟)

挑一个你正在跑(或想跑)的 vision/PDF 任务,按以下 6 步逐项过一遍:

  1. 测当前每次调用的图像 token(§1,5 min):随机抽 20 张正在用的图,用 estimate_tokens() 算一遍。中位数 > 3000 token?说明你在烧钱。
  2. 加 resize(§1,10 min):把 prep_image() 接进 pipeline,长边设 1568。跑一个 20 样本的小 eval 对比准确率——掉幅 < 1% 就立刻全量上。
  3. PDF 任务分档(§2,10 min):拿 5 份代表性 PDF,每份抽 3 页跑 pdfplumber.extract_text。统计有多少页能走档 1。如果 70%+ 能,立刻把 hybrid 处理器接上,省 10 倍成本。
  4. 给 vision prompt 加 describe-first(§3,10 min):找最容易出错的 5 个 vision query,prompt 前面加 <step1_observe>,再跑一遍。准确率提升 > 5% 就固化。
  5. 评估 RAG 路径(§4,5 min):如果你在用 CLIP-based multimodal RAG,挑 10 个真实 query 看 top-3 recall。< 40% 就计划迁到 CTR。
  6. 记账(5 min):写下「优化前 / 优化后」每千张图的成本与准确率两个数。下次老板问「为啥 AI 账单这么贵」你有答案。

45 分钟下来一般至少能砍掉 30% 图像 token、5-10% 准确率提升。多模态优化的 ROI 普遍比换模型/调 prompt 高一个数量级,因为多数人在这一层根本没做过工程。

// ENGLISH GLOSSARY

Image Tokens
视觉模型把图切 patch 后产生的 token 数。Claude 近似 w×h/750;GPT-4o 用 512×512 tile 计算。
Tile / Patch
视觉模型把图切成固定尺寸的子块再 embedding,每 patch 对应固定 token。
Long Edge / Max Edge
图像长边像素数;Claude 推荐上限 1568px,再大无收益。
EXIF Transpose
根据 EXIF 方向元数据旋转图像;手机拍图必做,否则模型看到「躺着的」图。
PDF Input (native)
Claude/GPT 原生 PDF 接口;内部把每页同时渲染成图 + 抽取文本层。
Text Layer Extraction
从 PDF 内嵌字符流抽取文本(pypdf/pdfplumber);扫描件无效。
Layout Parsing
用 vision/ML 模型分割版面(标题/正文/表格/图)再分块抽取,Docling/MinerU 为代表。
Hybrid PDF Pipeline
文本抽取兜底 + vision 兜底失败页;生产 pipeline 主流。
VQA (Visual Question Answering)
给图+问题、模型答题的任务;vision benchmark 核心范式。
Describe-First / Observe-Then-Decide
Vision prompt 模式:强制模型先描述、再回答,提升准确率 5-15%。
Grounding / Bounding Box
模型给出物体在图中的坐标;Claude/GPT 精度上限约 1/100 图像。
Joint Multimodal Embedding
把图和文嵌入同一向量空间(CLIP/SigLIP),cosine 跨模态对比。
Caption-then-Retrieve (CTR)
先用 LLM 把图描述成文字,再走纯文本 RAG;技术文档场景常胜过 CLIP。
ColPali
2024 出的 vision-based document retrieval,PDF 渲染图上做 ColBERT 风格 late interaction。

// 深入思考

视觉模型未来会不会让 OCR、layout parsing、CTR 这些中间层全部消失?
会萎缩但不会消失。三个理由:(1)token 经济学——只要视觉直读每页 2k token,便宜 100 倍的文本抽取就有存在空间,硬件指数级降价也跟不上数据指数级增长;(2)可追溯性——CTR 的 caption / layout 的 bbox 是中间产物,能引用、可审计;纯端到端推理目前还做不到「逐项 cite 原图」;(3)失败模式不同——文本抽取错就是错(容易发现),vision 幻觉是「看似合理但错」(难发现)。生产系统需要前者来给后者做交叉验证。中间层会变薄,但断点检测、可解释性是它们的长期价值。
为什么 CLIP 在中文技术文档上效果差,跟训练数据是中文还是英文关系大吗?
关系小,主因是 CLIP 训练分布。CLIP 训练用的是 web image + alt-text,自然图像占主导(猫、狗、风景、网红照),技术图表/PPT/学术 figure 在分布尾端。模型学到的是「视觉风格 + 通用语义」,对「这张柱状图讲 Q3 销售」这种需要先理解图表结构再做语义抽象的两步推理弱。中文 CLIP 落后另有数据规模原因(LAION 中文子集小),但即便英文 CLIP 在英文技术 PDF 上效果也远不如 CTR。这是 CLIP 的范式局限,不是单纯训练数据问题。ColPali 之所以效果好,是它跳过了「先编码图整体语义」这一步,直接做 patch 级的 fine-grained matching。
Computer Use / browser agent 路线(让模型直接「看」屏幕操作)会取代 GUI API 调用吗?
长期可能是补丁不是替代。GUI API 调用(Playwright、xdotool)是确定性的,模型给坐标只是「输入」,执行时仍走稳定接口;这套适合可重复任务、CI/CD、监控。Computer Use 适合:(1)没有 API 的遗留系统;(2)需要随时适应 UI 变化的探索任务;(3)人类示范-模型模仿的训练数据采集。但纯 vision 路线有三个硬伤:延迟(每步 2-5s vision 调用)、成本(每步几百 token)、不可重复(OS 渲染微差异导致 flaky)。Anthropic 自己 Computer Use API 也明确建议 hybrid——vision 决定做什么,xdotool/keyboard 实际执行。所以 GUI API 不会消失,新增的是「不写 API binding 也能跑」的兜底能力。
多模态 embedding(CLIP/SigLIP)和 LLM caption 各自适合什么场景?有判断准则吗?
有一个简单 heuristic——「这张图的语义能否用一句自然语言概括」。能(如「日落海滩」「红色 SUV」)→ CLIP 类很好;不能(如「Q3 销售 dashboard,ARR 涨 75%」要图里多个元素组合)→ CTR 胜。第二条:query 是否「按视觉相似度」(找类似风格 logo、找相似产品照)→ CLIP;query 是否「按内容/事实」(找讲 ARR 增长的图)→ CTR。第三条:indexing 预算——CTR 每图一次 LLM 调用,10 万图量级要 $100+;如果索引规模到千万级、且 query 偏视觉相似,CLIP 经济性显著好。实战是两套混合:CLIP 做粗召回(cheap、recall 偏向视觉相似),CTR caption 做 rerank(贵但语义准)。
多模态 RAG 之后下一个会被「工程化」的模态是什么?音频?视频?还是 3D?
大概率是长视频,且比图像/PDF 难一个数量级。理由:(1)应用需求清晰——会议录像、教学视频、监控、Vlog——RAG 化价值巨大;(2)当前最大瓶颈是时序——视频是图+音+时间序列,CLIP 这类静态 embedding 不够,需要时序感知的 chunking(按场景切、按 transcript 切、按 visual change 切);(3)token 经济学最严峻——一小时视频原生处理 token 数到百万级,没缓存 / 没分层就是钱包黑洞。Gemini 1.5 / 2.5 长视频上下文是一个 frontier,但工程层(chunking / indexing / retrieval / temporal grounding)还是早期。音频相对成熟(Whisper + text-RAG 已 work);3D / point cloud 还在等 killer use case。视频是下一个 RAG 大坑也是大金矿。

// 延伸阅读