向Azure Search Indexer添加技能集出错,求解决方案及教程
问题解决与说明
错误原因与修复
你遇到的错误是因为AzureOpenAIEmbeddingSkill的输出名称使用错误,该技能的标准输出字段为embedding(单数形式),而非代码中的embeddings(复数)。
另外需要注意:SplitSkill的context设置为/document/reviews_text,因此它输出的pages完整路径是/document/reviews_text/pages,嵌入技能的输入source必须匹配这个路径,否则会找不到输入数据。
修正后的嵌入技能代码如下:
text_embedding_skill = AzureOpenAIEmbeddingSkill( name="embedding", description=None, inputs=[{"name": "text", "source": "/document/reviews_text/pages"}], outputs=[{"name": "embedding", "targetName": "embeddings"}], resource_uri="xxx", deployment_id="yyy", api_key="zzz", )
关于索引与输出名称匹配的问题
是的,必须先创建搜索索引,且索引中需存在对应字段来存储嵌入结果:
- 索引里要定义一个
Edm.SingleCollection类型的字段(比如命名为embeddings),专门用于存储向量数据。 - 创建索引器时,需要配置输出字段映射,将技能输出的路径(如
/document/reviews_text/embeddings)关联到索引的对应字段。示例如下:
indexer = SearchIndexer( name="my-indexer", data_source_name="your-data-source-name", target_index_name="your-index-name", skillset_name="my-text-embedding-skillset", field_mappings=[ # 其他业务字段映射 ], output_field_mappings=[ {"sourceFieldName": "/document/reviews_text/embeddings", "targetFieldName": "embeddings"} ] )
推荐教程
- 端到端认知搜索嵌入实践:覆盖从Blob/数据库等数据源提取文本、拆分处理、生成嵌入向量、存储到搜索索引的完整流程。
- 认知搜索技能集核心指南:重点学习技能上下文路径、输入输出映射规则、索引字段配置逻辑等基础概念。
- OpenAI嵌入技能专项教程:深入了解嵌入技能的参数配置、权限要求、性能优化等细节。
内容的提问来源于stack exchange,提问作者Mike B
相关产品推荐
相关产品推荐

