Azure中用SplitSkill拆分大文档:认知搜索+OpenAI集成遇阻
Azure认知搜索与OpenAI集成优化问题
我正尝试优化Azure认知搜索与OpenAI集成的性能,从SharePoint索引大体积文档时遇到问题:需要拆分文档,让认知搜索仅返回OpenAI所需的片段而非完整文档。使用#Microsoft.Skills.Text.SplitSkill技能集时,无法将content拆分为名为pages的数组,最终目标是将内容拆分为多个保留原文件路径的文档。
当前索引结构
{ "name" : "{{index-name}}", "fields": [ { "name": "id", "type": "Edm.String", "key": true, "searchable": false }, { "name": "metadata_spo_item_name", "type": "Edm.String", "key": false, "searchable": true, "filterable": false, "sortable": false, "facetable": false }, { "name": "metadata_spo_item_path", "type": "Edm.String", "key": false, "searchable": false, "filterable": false, "sortable": false, "facetable": false }, { "name": "metadata_spo_item_content_type", "type": "Edm.String", "key": false, "searchable": false, "filterable": true, "sortable": false, "facetable": true }, { "name": "metadata_spo_item_last_modified", "type": "Edm.DateTimeOffset", "key": false, "searchable": false, "filterable": false, "sortable": true, "facetable": false }, { "name": "metadata_spo_item_size", "type": "Edm.Int64", "key": false, "searchable": false, "filterable": false, "sortable": false, "facetable": false }, { "name": "content", "type": "Edm.String", "searchable": true, "filterable": false, "sortable": false, "facetable": false }, { "name": "pages", "type": "Collection(Edm.String)", "searchable": true, "filterable": false, "sortable": false, "facetable": false } ] }
当前技能集配置
{ "name": "{{skillset-name}}", "description": "SharePoint skillset", "skills": [ { "@odata.type": "#Microsoft.Skills.Text.SplitSkill", "name": "#1", "description": null, "context": "/document/id", "defaultLanguageCode": "en", "textSplitMode": "pages", "maximumPageLength": 5000, "inputs": [ { "name": "text", "source": "/document/content" } ], "outputs": [ { "name": "textItems", "targetName": "pages" } ] } ] }
问题排查与解决要点
- 修正上下文配置:当前SplitSkill的
context设为/document/id,会导致拆分片段关联到文档ID而非整个文档对象,需改为/document,确保pages数组直接附加到文档根对象。 - 补充字段映射:检查索引器的字段映射规则,添加
pages字段的映射,确保技能集输出正确同步到索引:{ "sourceFieldName": "/document/pages", "targetFieldName": "pages", "mappingFunction": null } - 验证拆分逻辑:若使用
pages模式拆分,需确认文档包含标准分页符;若无分页符,可切换为sentences模式并调整maximumPageLength参数,确保拆分生效。 - 实现多文档拆分:若要将单个文档拆分为多个独立索引文档(共享同一文件路径),需结合
ShaperSkill生成新文档对象,并配置索引器保留metadata_spo_item_path等元数据字段。
内容的提问来源于stack exchange,提问作者KevJo
相关产品推荐
相关产品推荐

