You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从使用Split Skillset的Azure AI Search索引获取正确页码?

解决Azure AI Search拆分块页码与原文档不符的问题

问题根源

你遇到的chunk_id页码和原文档实际页码不符的情况,是因为Split Skillset的text_split_mode="pages"并不是按原文档物理页码计数,而是按拆分后的逻辑文本块计数。如果原文档某一页的内容长度超过maximum_page_length=2048,该页会被拆分成多个逻辑块,导致逻辑块的页码计数(比如26)远大于实际物理页码(比如21)。

解决方案

要获取并存储原文档的真实物理页码,需要结合Document Extraction Skill提取原生页码元数据,再将其关联到拆分后的每个块中,具体步骤如下:

1. 添加Document Extraction Skill提取物理页码

在现有技能集中添加该技能,用于从PDF等结构化文档中提取原生物理页码信息。配置示例:

{
  "@odata.type": "#Microsoft.Skills.Util.DocumentExtractionSkill",
  "name": "extract-physical-pages",
  "description": "Extract physical page numbers from source document",
  "context": "/document",
  "inputs": [
    {
      "name": "file_data",
      "source": "/document/file_data"
    }
  ],
  "outputs": [
    {
      "name": "page_numbers",
      "targetName": "physical_page_numbers"
    }
  ],
  "configuration": {
    "extractPageNumbers": true,
    "mode": "default"
  }
}

该技能会在/document/physical_page_numbers中生成原文档每一页的页码列表,以及对应文本的位置映射。

2. 关联物理页码与拆分后的块

Split Skill拆分后,每个块会包含offset(在原文档中的字符偏移量),可以通过以下方式匹配对应的物理页码:

  • 借助Conditional Skill结合偏移量范围,从physical_page_numbers的位置映射中匹配页码;
  • 使用自定义Web技能,根据块的offset和length,精准定位对应的物理页码,这种方式灵活性更高。

3. 更新索引与技能输出映射

  • 在现有索引中添加physical_page_number字段(类型选Edm.Int32,若需存储跨页范围则选Edm.String);
  • 在技能集的输出字段映射中,将匹配到的物理页码关联到索引的physical_page_number字段,或者直接追加到chunk字段末尾(例如格式化为"{chunk} [页码: {physical_page_number}]")。

4. 处理跨页逻辑块

如果某个逻辑块跨越了原文档的多个物理页,可在自定义技能中返回页码范围(比如21-22),或取起始页码作为该块的关联页码,根据业务需求调整。

替代方案:自定义前置拆分逻辑

如果内置技能无法满足需求,可直接在数据导入阶段(比如用Azure Function)先按原文档物理页码拆分文本,再将拆分后的块上传到Azure AI Search,同时手动添加物理页码字段,完全规避Split Skill的逻辑计数问题。

内容的提问来源于stack exchange,提问作者Hakuna0001

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 04:07:12