首页/AI/RAG 与向量库速查/表格切片:整表或按行成记录

表格切片:整表或按行成记录

表格不要与正文混合硬切:整表转 Markdown 作为一个切片,或按“表头 + 每行”拆成记录;命名与元数据带上表名,检索更易命中。

RAG 与向量库速查AI更新于 2026-10-13

表格切片怎么处理

表格是最容易被切分破坏的结构:表头与数据行一旦分离,单看数据行根本无法解读——不知道那一列是功率还是尺寸,也不知道单位。通行做法有两条:小表整体转成 Markdown 作为一个切片,保证表头与全部行在一起;超大表按行分组切片,但每一块都要复制表头,并在元数据里写入表名。表格切片还应在文本里保留表名与用途说明,这样检索“某型号的并发上限”时能命中正确的表。

基本信息

首选做法整表转 Markdown,作为一个或少数几个切片
大表策略按行分组,每组复制一份表头
元数据写入表名、所在章节、页码
文本补充切片中保留表名与表格用途的一句话说明
风险表头与数据分离、宽表单行过长超限

典型使用场景

  • 参数对照表:用户按型号查规格,必须整表可读
  • 价格与配置表:行列交叉关系强,拆开就失去意义
  • 合规条款附表:每个条件对应若干取值,需成组出现
  • 跨页表格:解析后合并同一张表的多个分页片段
  • 检索增强说明:给表格补一句“本表列出各型号并发上限”,提升语义召回

表格转 Markdown

表格转 Markdown
def table_to_markdown(head, rows):
    lines = ['| ' + ' | '.join(head) + ' |',
             '|' + '---|' * len(head)]
    lines += ['| ' + ' | '.join(str(c) for c in row) + ' |' for row in rows]
    return '\n'.join(lines)

print(table_to_markdown(['型号', '并发上限'], [['X1', '10'], ['X2', '20']]))

大表按行分组复制表头

大表按行分组复制表头
def group_rows(head, rows, per=20):
    for i in range(0, len(rows), per):
        yield table_to_markdown(head, rows[i:i + per])   # 每组自带表头
# 每组切片再补一句用途说明与页码,命中后引用才完整

表格形态与切法

表格形态切法注意点
小表(<20 行)整表一块保留表名与单位说明
大表(数十行以上)按行分组 + 复制表头组间不要重叠,避免重复命中
跨页表合并后再切页眉行要先去掉
超宽表拆列或转纵向列表单行过长会触发长度截断
表格切片的元数据要写清表名与章节,检索命中后用户才能判断这张表是否适用于自己的场景;只有数字没有语境的分片几乎无法被人核对。

易错点

  • 表格与正文一起硬切,表头与数据行分离后数字无法解读
  • 极宽表格转 Markdown 后单行过长,超过长度上限被截断,右侧列整列丢失
  • 跨页表格未合并,同一个表被切成互不相关的小块,检索只能命中半张表
  • 按行切片时不复制表头,检索到的片段只有裸数字
  • 表格切片缺少表名与单位说明,用户拿到数字却无法判断适用范围

数据来源与参考

  • Unstructured 官方文档(Table 元素与分块)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌