循序渐进 · 教学 · 文档处理 Document processing

把 PDF 变成可检索的知识

海量非结构化知识藏在 PDF 和图片里。这一篇讲怎样用 Pipeline Builder 把文档提取成文本、切成小块、嵌入成向量, 最终让语义搜索能精准命中原文——还能把原 PDF 渲染在侧边供核对。

原文 Document processing 预计阅读 12 分钟 互动演示 + 6 道测验
本文来源 · Source 内容整理自 Palantir Foundry 官方文档:
https://www.palantir.com/docs/foundry/ontology/document-processing/
原始标题:Document processing

一句话速览

把 PDF 变成可检索的知识:海量非结构化知识藏在 PDF 和图片里。这一篇讲怎样用 Pipeline Builder 把文档提取成文本、切成小块、嵌入成向量,最终让语义搜索能精准命中原文——还能把原 PDF…

1 这一篇在讲什么
本篇给出一份基础指南:用 Pipeline Builder 解析 PDF,做语义搜索;
2 数据提取流水线(概览)
要把 PDF 接入语义搜索,原文给出的导入与提取步骤是
3 为什么要"分块(chunking)"
分块,就是把大段文本切成更小的文本段
4 Chunk string 板卡的四个参数
分块由 Pipeline Builder 里的 Chunk string 板完成
1

这一篇在讲什么?

从 PDF / 图片里提取数据,喂给语义搜索。

本篇给出一份基础指南:用 Pipeline Builder 解析 PDF,做语义搜索;并建议在只要纯文本时, 如何在 Workshop 应用里把信息呈现出来。

Semantic search is a powerful tool to use with PDFs, particularly if the content is broken down into smaller "chunks" that are embedded separately, helping users and workflows find important information that might otherwise be hard to access. 语义搜索与 PDF 配合非常强大,尤其是当内容被拆成更小的"块"分别嵌入时——能帮助用户和工作流找到原本难以获取的重要信息。

核心思路一句话:上传 PDF → 提取文本 → 把文本分块 → 对每块做嵌入 → 把结果变成可检索的本体对象, 搜索命中后,把对应的原 PDF 渲染在侧边,供用户"回到源头"核对。

2

数据提取流水线(概览)

用 Pipeline Builder 解析 PDF 的四步。

要把 PDF 接入语义搜索,原文给出的导入与提取步骤是:

步骤 1把 PDF 导入为媒体集
Import the PDFs as a media set
先在 Foundry 里把 PDF 注册成一个"媒体集(media set)",作为后续处理的统一来源。
步骤 2加入 Pipeline Builder
Add the media set to Pipeline Builder
把媒体集作为数据源加进 Pipeline Builder,开始搭建转换流程。
步骤 3Get Media References 板
展开媒体引用
用 Get Media References 板,把媒体集引用展开成可逐条处理的行。
步骤 4Text Extraction 板
抽取纯文本
用 Text Extraction 板,从 PDF / 图片里抽取出纯文本,准备进入分块与嵌入。

点开每一层看细节。这四步产出的是一份"每行一个文档、带 object_text 文本列"的数据集,后面分块就在这上面做。

3

为什么要"分块(chunking)"?

长文本切成小块,再分别嵌入,检索才准。

分块,就是把大段文本切成更小的文本段。原文强调它有两个关键好处:

① 嵌入模型有最大输入长度
超出长度模型装不下;切块保证每段都在上限内。
② 小块语义更清晰
更短的文本在搜索时"语义更独特",更容易被精准命中。
关键约束:目标是把长文本切成更小的 chunk,每个 chunk 都关联(link)回原始对象。 这样搜到某个 chunk,就能顺藤摸瓜找到它来自哪份文档的哪一段。
4

Chunk string 板卡的四个参数

在 Pipeline Builder 里用 Chunk string 板配置分块;把下面的参数拖到正确解释。

分块由 Pipeline Builder 里的 Chunk string 板完成。加好板后,要配置这几个参数:

点每个参数右边的按钮选解释,答完自动给反馈。

5

分块示例拆解(无代码)

用 Pipeline Builder 把一行文档变成多行 chunk。

原文用一个最简例子演示:一个两行数据集,列是 object_idobject_text

object_idobject_text
abcgold ring lost
xyzfast cars zoom

逐步发生了什么

① Chunk String 板
新增一列 chunks,是 object_text 被切出的数组。例:["gold","ring","lost"]。文档建议每块约 256 字符、overlap 约 20 字符。
② Explode Array with Position 板
把数组展开成多行,每行带一个 struct:{position, element}
③ 拉出 position / element
把 struct 里的位置与文本拆成独立列。
④ 造唯一 chunk_id
把数组下标转成字符串拼到原 object_id 上(如 abc_0),并删掉多余列。

最终得到的表里,每行是一个 chunk,带 object_id(用于关联)、新主键 chunk_id、以及要嵌入的 chunk 文本:

object_idchunkchunk_idembedding
abcgoldabc_0[-0.7, …, 0.4]
abcringabc_1[0.6, …, -0.2]
abclostabc_2[-0.8, …, 0.9]
xyzfastxyz_0[0.3, …, -0.5]
进阶:更复杂的分块策略,原文建议用代码仓库(code repository)写进 pipeline,而非完全无代码。
6

动手演示:一份文档从上传到可检索

点"运行下一步",看 pipeline 如何一步步把 PDF 变成可语义检索的对象。

动手试试 · 文档处理流水线

从"上传 PDF"到"可检索",共 8 步。点"运行下一步"逐步推进。

一页带走

① 先提文本
PDF → 媒体集 → Pipeline Builder → 提取文本。
② 再分块
chunk size / overlap / separators;每块关联回原对象。
③ 后嵌入
每块调嵌入模型得到向量。
④ 建对象索引
chunk 变对象、可检索,原 PDF 侧边供核对。

延伸阅读 · 相关页面

按主题横向跳转,不必顺着目录一篇篇读。

常见问题速答 · FAQ

关于「把 PDF 变成可检索的知识」,读者最常问的几个问题。

这一篇在讲什么?
本篇给出一份基础指南:用 Pipeline Builder 解析 PDF,做语义搜索;并建议在只要纯文本时,如何在 Workshop 应用里把信息呈现出来。
数据提取流水线(概览)是什么?
要把 PDF 接入语义搜索,原文给出的导入与提取步骤是。
为什么要"分块(chunking)"?
分块,就是把大段文本切成更小的文本段。原文强调它有两个关键好处。
Chunk string 板卡的四个参数是什么?
分块由 Pipeline Builder 里的 Chunk string 板完成。加好板后,要配置这几个参数。