Azure OpenAI如何映射Azure认知搜索中Edm.ComplexType的子字段?
问题解答
1. 是否可单独选择子字段?
可以单独选择复杂类型的子字段,但前提是要先确保索引中这些子字段被正确配置为可检索(searchable)和可返回(retrievable)。默认创建索引时,复杂类型的子字段可能未开启searchable属性,导致Azure OpenAI数据源向导无法识别或选择它们。
2. 是否对索引存在误解?
你遇到的问题核心是对Azure认知搜索中两类字段的索引配置逻辑理解有偏差:
- 复杂类型(如
Address)本身不能直接设置searchable,因为它是嵌套结构,必须为其内部的子字段(如City)单独配置searchable: true。 - 集合类型(如
Tags)默认可能未开启searchable,需要显式配置该属性才能被Azure OpenAI识别和调用。
具体解决步骤
步骤1:修改认知搜索索引配置
需要更新索引,为目标子字段和集合字段添加正确属性:
- 导出当前索引的JSON配置(在Azure认知搜索门户的索引页面点击“导出”)。
- 找到
Address字段的子字段City,将其searchable和retrievable设为true:"fields": [ ..., { "name": "Address", "type": "Edm.ComplexType", "fields": [ { "name": "City", "type": "Edm.String", "searchable": true, "filterable": true, "retrievable": true, "sortable": true, "facetable": false } // 其他Address子字段按需配置 ] }, ... ] - 找到
Tags字段,设置searchable: true和retrievable: true:{ "name": "Tags", "type": "Collection(Edm.String)", "searchable": true, "filterable": true, "retrievable": true, "sortable": false, "facetable": false } - 保存修改后的JSON,重新更新索引(在门户中选择“导入”或使用REST API完成更新)。
步骤2:重新集成到Azure OpenAI Chat数据源
索引更新完成后,回到Azure OpenAI聊天部署重新配置数据源:
- 数据源加载向导中会显示
Address/City等子字段和Tags字段,直接选择这些字段即可。 - 配置完成后,测试查询“阿尔伯克基”,就能返回包含对应地址、标签的文档信息。
注意事项
- 复杂类型的父字段(如
Address)不需要设置searchable,搜索和检索操作仅针对其子字段生效。 - 集合类型字段开启
searchable后,OpenAI可检索集合中的单个字符串元素,支持基于标签的匹配查询。
内容的提问来源于stack exchange,提问作者Oscar Santos
相关产品推荐
相关产品推荐

