如何在Azure Search中为非文本字段及嵌套数组配置PII实体识别技能
解决方案
你遇到的限制是Azure门户技能配置UI的下拉选项仅展示常用输入源,不需要受该限制,直接手动编辑技能组的JSON定义即可实现自定义输入源,具体操作如下:
步骤1:配置PII技能的上下文作用域
为了让PII检测技能自动遍历messages数组的每一条消息单独处理,你需要将技能的context属性设置为 /document/content/messages/*,该配置表示数组中的每一个消息对象都会作为独立的执行单元触发一次PII检测。
步骤2:自定义输入源路径
PII检测技能的两个必填输入参数text和languageCode支持手动指定数据源路径,不需要受UI下拉选项限制,直接填写对应字段的索引路径即可:
text输入的源路径设置为/document/content/messages/*/message,对应每条消息里的会话内容字段languageCode输入的源路径可根据你的实际情况设置:如果所有消息语言统一,可直接填固定值en;如果有动态语言字段,可填写对应的字段路径如/document/language
步骤3:示例PII技能配置片段
以下是符合你场景的PII检测技能JSON配置参考,你可以直接在门户技能组的「编辑JSON」界面替换对应部分:
{ "@odata.type": "#Microsoft.Skills.Text.PIIDetectionSkill", "name": "messages-pii-detection", "description": "检测每条会话消息中的PII实体", "context": "/document/content/messages/*", "inputs": [ { "name": "text", "source": "/document/content/messages/*/message" }, { "name": "languageCode", "source": "/document/language" } ], "outputs": [ { "name": "piiEntities", "targetName": "detectedPii" }, { "name": "redactedText", "targetName": "maskedMessage" } ] }
步骤4:配置输出映射
你可以根据需要将输出结果映射到索引字段:如果需要把每条消息的PII单独存储,可以将/document/content/messages/*/detectedPii映射到消息结构下的对应字段;如果需要合并所有PII到根节点的pii_entities数组,可以额外加一个整形技能(Shaper Skill)合并结果。
配置完成后重新运行索引器,即可对所有历史消息执行PII检测。
内容的提问来源于stack exchange,提问作者ChinnarajS
相关产品推荐
相关产品推荐

