← 返回文章
作者 ··约 5 分钟阅读·AI 用进真实工作

一篇文章放进知识库之前,为什么要先被“切碎”?

知识库不是把整篇文章原样塞进去。切片决定了以后提问时,AI 能找回哪一段完整、够用、可以核对的证据。

一篇文章放进知识库之前,为什么要先被“切碎”?

哈喽,我是阿梦。这个公众号,我会持续记录自己怎么把 AI 用进真实的工作,成功的、失败的、返工的,都是我的来时路~

去微信公众号「是哆啦 AI 梦」看看 →

哈喽,我是阿梦。这个博客,我会持续记录自己怎么把 AI 用进真实的工作,成功的、失败的、返工的,都是我的来时路~

前面几篇,我写了怎么用 OCR 把图片变成文字,也写了资料进入知识库之前,为什么需要先清理乱码、重复内容和过期版本。

资料终于变得干净了。

但它还不能直接进入知识库。

在正式检索之前,我还要把一篇完整的文章,切成很多小段。

这个过程叫作“切片”。

文章保持完整,不是更好吗?

我刚开始做知识库时,也觉得切片有点多余。

一篇文章保持完整,标题、前因后果和上下文都在,AI 不是应该更容易理解吗?

后来我才发现,知识库回答问题时,并不会把所有文章从头到尾重新读一遍。

它更常见的工作方式是:

  1. 我提出一个问题;
  2. 系统从知识库里寻找相关内容;
  3. 把找到的内容交给 AI;
  4. AI 根据这些内容生成答案。

知识库从用户提问、检索相关切片到 AI 生成答案的流程

真正影响答案的,往往是第二步:系统到底找回了什么?

假设我收藏了一篇很长的文章,里面同时讲了行业背景、用户需求、执行步骤、案例和总结。

我问的是:“这个方法具体应该怎么执行?”

真正能回答我的,也许只有文章中间的三四段。

如果整篇文章被当成一个检索单位,系统只能把几千字一起拿回来。答案虽然藏在里面,大量无关内容也会跟着进来。

切片,是在提前决定“以后怎么找”

所谓切片,就是把一篇长文章拆成多个可以独立检索的小单元。

比如一篇文章原本有五个部分:

  • 为什么要做这件事;
  • 开始之前需要准备什么;
  • 第一步怎么做;
  • 第二步怎么做;
  • 常见问题有哪些。

切片以后,它们可以分别进入检索。

当我询问“开始前需要准备什么”,系统不必把整篇文章都交给 AI,只需要找到与准备工作有关的部分。

切片真正影响的是:以后我提出一个问题时,知识库会把哪一段内容找回来。

切得太大,重点会被埋住

如果每个切片都很大,它确实能保留更多上下文。

但我只问一个具体步骤,知识库却可能返回一整章。真正相关的内容只占很小一部分,剩下的文字都在陪跑。

切片太大,容易出现几个问题:

  • 一个切片里同时包含多个主题;
  • 系统只能判断它“大概相关”;
  • 真正重要的证据被无关内容包围;
  • 多份资料一起返回时,重点更容易被淹没。

这就像我只想找一句会议结论,系统却把整份会议记录都递给了我。

切得太小,上下文又会断掉

既然切得太大会带回太多无关内容,那是不是越小越好?

也不是。

方案 A 只适合资料数量较少、更新频率不高的情况。如果资料每天都在变化,更适合使用方案 B。

如果机械地从中间切开,知识库可能只留下后半句:“更适合使用方案 B。”

AI 确实找到了结论,却不知道方案 B 对应的前提是什么。

切得太碎,还可能出现:

  • 结论和原因被分开;
  • 问题和答案不在同一个切片;
  • 标题被切掉,正文失去主题;
  • 表格的表头和数据分家;
  • “这个方案”“上述方法”找不到对应对象。

切片太大与太小时,知识库分别会遇到重点被埋没和上下文断裂的问题

真正难的,不是切多长,而是从哪里切

很多工具会提供一种直接的做法:每隔固定字数切一次,比如每 500 字生成一个切片。

这种方法简单、快速,也方便批量处理,但它并不知道文章在说什么。

一句话可能刚好在第 500 个字结束,一个完整步骤也可能被拦腰切开。

尽量沿着标题切

如果文章有清晰的大标题和小标题,我会优先保留这种结构。同一个标题下面的内容,通常在回答同一类问题。

即使这一节仍然太长,需要继续拆分,标题也应该跟着切片一起保留下来。

尽量沿着完整段落切

我会尽量避免在一句话中间切开,也不希望把原因和结论分到两边。

切片不一定要长度完全一致。比起每段都一样长,我更在意每一段能不能表达一个相对完整的意思。

给相邻切片留一点联系

有些内容无法刚好落在一个切片里。这时,可以让前后两个切片保留少量相同内容,这个做法叫作“重叠”。

它能避免交界处的句子突然失去上下文,但重叠也不能太多,否则检索时可能连续返回几个几乎一样的片段。

特殊内容要单独处理

文章、表格、会议记录、问答和操作手册,不能全部使用同一种切法:

  • 表格要让表头和对应数据留在一起;
  • 问答不能把问题和答案分开;
  • 操作步骤要尽量保留前后顺序;
  • 会议记录需要保留主题和必要背景。

被切开以后,还要记得自己是谁

文章被切成很多段以后,还有一个容易被忽略的问题:每一段都能被单独找到,却不知道自己来自哪里。

所以,我不会只保存切片里的正文。每个切片还要尽量带上:

  • 原文章标题和当前章节标题;
  • 原始文件或链接;
  • 作者和日期;
  • 所属项目和版本状态;
  • 它在原文中的位置。

每个切片都要携带标题、来源、日期、版本和原文位置等身份信息

这些信息就像切片的身份卡。

AI 找到一段内容以后,不仅能看到它写了什么,还能知道它来自哪份资料、什么时候产生,以及能不能回到原文核对。

写在最后

以前我以为,知识库就是把资料保存进去。

后来才发现,从清理、切片到检索,每一步都在影响 AI 最后能看到什么。

切片不是把文章随便剪碎,而是在提前决定:以后我问一个问题时,AI 能带回哪一段完整、够用、可以核对的证据。

切得好,AI 拿到的是上下文清楚的证据。

切得不好,它拿到的可能只是一堆彼此认识、却被强行分开的句子。

但知道“为什么要切”,只是第一步。

到底应该切多大、切多少段,又该怎么在答案质量、处理成本和检索速度之间做选择,并没有一个适合所有知识库的标准答案。

下一篇,我再继续写:知识库切得越碎,答案就越准吗?