Skip to main content
在处理文档时,了解处理结果的来源和位置对于调试、验证和优化处理流程至关重要。xParse 提供了丰富的元数据信息,支持完整的结果回溯和可视化功能。

为什么需要结果回溯?

结果回溯可以帮助您:
  • 验证处理结果:确认解析、分块和向量化的结果是否正确
  • 调试问题:当检索结果不理想时,可以追溯到原始文档位置
  • 优化策略:通过分析处理过程,优化分块和向量化策略
  • 用户展示:在 RAG 应用中,向用户展示检索结果的原始位置
  • Agent决策支持:在Agent应用中,为Agent决策提供”证据链”,增强决策的可信度和可解释性
  • 质量控制:审核和校正处理结果,确保数据质量

回溯机制概览

xParse 通过以下机制支持结果回溯:
  1. 元素 ID(element_id):每个元素的唯一标识符,基于内容、位置和文件信息生成
  2. 元数据(metadata):包含文件信息、页面位置、坐标等溯源信息
  3. 原始元素追踪(orig_elements):分块后可以追溯到组成块的原始元素
  4. 数据源信息(data_source):记录文件的来源、版本和处理时间
  5. 坐标信息(coordinates):精确定位元素在原始页面上的位置

元数据字段详解

文件信息

每个元素都包含以下文件信息,用于追溯到原始文件:
  • filename:文件名,用于识别源文件
  • filetype:文件的 MIME 类型
  • last_modified:文件最后修改时间(Unix 毫秒时间戳)

页面位置信息

  • page_number:元素所在的页码(从 1 开始)
  • page_width:页面宽度(像素)
  • page_height:页面高度(像素)
这些信息可以帮助您快速定位到原始文档的特定页面。

坐标信息(coordinates)

坐标信息用于精确定位元素在页面上的位置:
坐标格式为 [x1, y1, x2, y2, x3, y3, x4, y4],表示一个四边形的四个顶点坐标,按顺时针排列:
坐标系统说明:
  • 原点位于页面左上角
  • 坐标为归一化坐标,范围在 [0, 1] 之间,保留4位小数
  • 坐标值相对于页面尺寸(page_width × page_height)进行归一化

层级关系

  • parent_id:父节点 ID,用于构建元素之间的层级关系
  • category_depth:在同类元素中的层级深度(如标题等级:H1=0, H2=1, H3=2)

数据源信息(data_source)

data_source 字段包含完整的数据源信息:
  • record_locator:记录原始文件的归档信息
    • protocol:协议类型(如 files3ftp 等)
    • remote_file_path:远程文件路径
  • url:原始文件的 URL 地址
  • version:原始文件的版本号
  • date_created:文件创建时间(毫秒时间戳)
  • date_modified:文件修改时间(毫秒时间戳)
  • date_processed:文件处理时间(毫秒时间戳)

分块结果溯源

当使用分块功能时,可以通过 orig_elements 字段追溯到组成块的原始元素。

启用原始元素追踪

在分块配置中设置 include_orig_elements=true

解码原始元素

orig_elements 字段是一个 gzip 压缩后的 Base64 字符串,需要按以下步骤解码:

完整示例:追踪分块来源

坐标可视化

利用坐标信息,您可以在原始文档上可视化元素位置,这对于验证处理结果和用户展示非常有用。 xParse 提供了多种可视化方案:

开源前端可视化 SDK

@xparse-kit/visualizer 是一个开源的前端可视化 SDK,可以直接在浏览器中可视化文档解析结果,支持缩放、旋转、页面导航等交互功能。详见前端可视化 SDK 教程

Python 后端可视化

使用 PIL/Pillow 等库在服务端生成可视化图片,适合批量处理和自动化场景。 坐标可视化示例 以下示例展示如何在原始页面上绘制元素边界框:
高亮检索结果 在 RAG 应用中,当用户查询得到结果时,可以在原始文档上高亮显示匹配的元素:

完整回溯流程示例

以下示例展示如何从向量检索结果回溯到原始文档:

最佳实践

  1. 启用原始元素追踪:在分块配置中设置 include_orig_elements=true,以便后续追溯
  2. 保存原始文件路径:确保 filenamedata_source.url 信息完整,便于定位源文件
  3. 利用坐标信息:使用 coordinates 字段在原始文档上可视化元素位置
  4. 记录处理时间:利用 data_source.date_processed 追踪处理时间,便于版本管理
  5. 构建元素映射:在处理大量文档时,可以构建 element_id 到元素的映射,加速回溯

相关文档