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

如何通过Azure文本拆分技能集保存分块的源页码?

解决Azure AI搜索PDF分块页码保存问题

核心方案

使用SplitSkill按页拆分PDF时,分块的源页码可通过配置技能输出、索引字段映射两步保存到索引元数据中,具体实现如下:

1. 调整SplitSkill配置,输出页码信息

修改你的SplitSkill,新增pageNumbers输出项,拆分后每个分块对应的原生页码会被同步生成:

{
  "@odata.type": "#Microsoft.Skills.Text.SplitSkill",
  "name": "#2",
  "description": "Split skill to chunk documents",
  "context": "/document",
  "defaultLanguageCode": "en",
  "textSplitMode": "pages",
  "maximumPageLength": 2000,
  "pageOverlapLength": 500,
  "maximumPagesToTake": 0,
  "inputs": [
    {
      "name": "text",
      "source": "/document/content"
    }
  ],
  "outputs": [
    {
      "name": "textItems",
      "targetName": "pages"
    },
    {
      "name": "pageNumbers",
      "targetName": "pageNumbers"
    }
  ]
}

2. 在目标搜索索引中添加页码字段

确保你的vector索引包含一个存储页码的字段,示例定义如下:

{
  "name": "source_page_number",
  "type": "Edm.Int32",
  "searchable": false,
  "filterable": true,
  "sortable": true,
  "facetable": false
}

3. 修改索引投影映射,关联页码到索引字段

在indexProjections的映射规则中,添加页码字段的关联配置,这里提供两种可选方式:

  • 方式一:使用SplitSkill输出的原生页码
    利用pages与pageNumbers数组的一一对应关系,通过分块索引匹配页码:
    "indexProjections": {
      "selectors": [
        {
          "targetIndexName": "vector",
          "parentKeyFieldName": "parent_id",
          "sourceContext": "/document/pages/*",
          "mappings": [
            {
              "name": "chunk",
              "source": "/document/pages/*"
            },
            {
              "name": "source_page_number",
              "source": "/document/pageNumbers[$index]"
            }
          ]
        }
      ]
    }
    
  • 方式二:使用分块的上下文索引(轻量替代)
    若无需依赖原生页码输出,可直接用分块在数组中的位置(从0开始)加1作为页码:
    "indexProjections": {
      "selectors": [
        {
          "targetIndexName": "vector",
          "parentKeyFieldName": "parent_id",
          "sourceContext": "/document/pages/*",
          "mappings": [
            {
              "name": "chunk",
              "source": "/document/pages/*"
            },
            {
              "name": "source_page_number",
              "source": "@odata.index + 1"
            }
          ]
        }
      ]
    }
    

4. 调整技能执行顺序(关键)

确保SplitSkill在AzureOpenAIEmbeddingSkill之前执行,因为嵌入技能依赖拆分后的分块数据,调整后的技能数组顺序如下:

"skills": [
  {
    "@odata.type": "#Microsoft.Skills.Text.SplitSkill",
    // SplitSkill完整配置
  },
  {
    "@odata.type": "#Microsoft.Skills.Text.AzureOpenAIEmbeddingSkill",
    // EmbeddingSkill完整配置
  }
]

完成以上修改后,重新运行索引器,分块的源页码会被自动保存到source_page_number字段中,搜索时可直接过滤、返回该字段获取页码信息。

内容的提问来源于stack exchange,提问作者Trygve Leithe Svalheim

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 05:53:11