知识库/知识库存储结构与分段规则

4.4 知识库存储结构与分段规则

Pop 的知识库(Knowledge Base)之所以能实现高质量检索和精准回答,核心在于:
⭑ 文档解析 → 清洗 → 分段(Chunking) → 嵌入向量 → 存储结构化数据

本节将详细介绍 Pop 如何将文档拆分为可检索的片段,以及它在底层是如何存储的。


🗂️ 一、知识库存储结构概览

每个知识库的数据由三大部分组成:

知识库(KB)
 ├── 文档(Documents)
 ├── 文档片段(Chunks)
 ├── 索引结构(Indexes)
       ├── 向量索引(KNN)
       └── BM25 文本索引

流程示意图:

原始文档 → 解析 → 文本清洗 → 自动分段 → 生成 Embedding → 写入索引

📄 二、文档解析(Parsing)

Pop 会根据不同格式自动解析文档:

文档类型 解析方式
PDF 文本解析 + OCR(扫描版)
Word / PPT 直接读取文本内容
Markdown 按标题结构解析
HTML / URL 自动提取正文(去广告)
代码文件 作为普通文本处理

解析后会得到较为整洁的原始文本,进入下一步清洗。


🧹 三、文本清洗(Cleaning)

为了获得高质量的向量表示,Pop 会对解析后的内容做进一步处理:

  • 去除页眉、页脚、页码
  • 去除多余空白行、特殊符号
  • 合并被硬换行拆散的段落
  • 删除重复内容
  • 修正格式混乱的标题、列表

这样可以显著提升分段效果与语义检索准确性。


🔀 四、文档分段(Chunking)核心逻辑

分段(Chunk)是知识库最关键的步骤之一。
好的分段能让 AI 更容易找到正确的内容,差的分段则会导致答非所问。

Pop 使用混合的智能分段策略:


4.1 按标题结构切分

适用于 Markdown、PDF、Word 等格式:

例如:

# 1. 系统概述
## 1.1 功能列表
### 1.1.1 用户模块

不同层级标题会作为切分根节点,确保结构完整。


4.2 按语义自动切分

在标题结构基础上,进一步按自然段落进行拆分:

  • 避免太长
  • 避免太短
  • 保持语义连贯
  • 保留上下文关联

典型策略:

  • 目标长度:250–500 中文字符 / Chunk
  • 允许上下容差:200–600 字
  • 自动合并过短段落
  • 自动拆分过长段落

4.3 特殊内容的分段处理

不同格式采用不同的优化:

内容类型 处理方式
列表(bullet / number) 整体保留为一个 chunk
表格 视为连续文本(自动格式化)
代码块 作为独立 Chunk
表单字段 自动压缩为键值对形式
图像(OCR) 从 OCR 文本中抽取有效内容

🧩 五、Chunk 存储结构

每个 Chunk 会被存储为结构化对象,如:

{
  "id": "chunk_xxx",
  "kb_id": "kb_abc",
  "document_id": "doc_123",
  "content": "...",
  "tokens": 356,
  "embedding": [0.12, -0.44, ...],
  "order": 17,
  "metadata": {
      "title": "1.2 系统功能",
      "page": 5,
      "source": "xxx.pdf"
  }
}

字段说明:

字段 描述
id 每个 chunk 的唯一 ID
kb_id 所属知识库
document_id 所属文档 ID
content 该片段的文本内容
tokens token 数量
embedding 向量数据
order 在整个文档的顺序
metadata 标题、页码、来源等信息

🔎 六、索引结构

Pop 构建两类索引:

6.1 KNN 向量索引

用于语义检索:

  • 用选定的向量模型生成 embedding
  • 存入本地向量数据库
  • 支持高维检索(如 768D、1024D)
  • 用于基于语义的召回

6.2 BM25 文本索引

适用于:

  • 精准关键词搜索
  • FAQ 类内容
  • 术语定位

两者共同支持 Hybrid 检索。


🧠 七、为什么分段如此重要?

分段是 RAG(检索增强生成)的基础,它直接影响:

  • AI 召回是否准确
  • 是否能找到正确答案
  • 回答是否包含上下文
  • 引用是否能追溯到原文

好的 Chunk = 高质量 RAG。

糟糕的 Chunk = 模型永远答不准。

Pop 使用的智能分段策略在多数情况下能达到一致稳定的效果。


📌 总结

Pop 在知识库底层实现了:

  • 文档解析
  • 清洗去噪
  • 智能分段
  • 语义向量生成
  • BM25 索引
  • 高性能存储结构

这些共同构成了 Pop 知识库的核心能力,使得 Pop 能够在问答中基于文档内容给出准确且可验证的回答。