- 对整个 markdown 文档进行预处理:
- 将每段开头的数字类似于1、1.1、1.1.1所在的行,分别转化成一级标题、二级标题、三级标题(如:1.1 → # 1.1)
- 将无数字开头的一级标题转换成正文格式,例如:# 引言 → 引言
- 将文档内所有括号转换成为半角字符,例如: '(',')' → '(', ')'
-
文档分块 语义分块:将文档分为三种类型:
- 标题:heading
- 段落(正文):paragraph
- 表格:list token分割:对语义分割后的块列表通过embedding模型计算token,若小于max_token则将合并一起
-
逐块优化 将以上分割后的块列表,根据其所属类型对每块文档进行优化
默认选择本地 embedding 模型 ./Qwen2.5-7B
代码中默认通过Ollama的api访问使用 qwen2.5:14b