资讯动态

如何将 cookiecutter-spacy-fastapi 集成到 Azure Search:自定义认知技能实战教程

发布时间:2026/8/25 9:39:56 来源:尧图企业网站定制
如何将 cookiecutter-spacy-fastapi 集成到 Azure Search自定义认知技能实战教程【免费下载链接】cookiecutter-spacy-fastapiCookiecutter API for creating Custom Skills for Azure Search using Python and Docker项目地址: https://gitcode.com/gh_mirrors/co/cookiecutter-spacy-fastapicookiecutter-spacy-fastapi 是一个开箱即用的 Python Cookiecutter 项目模板只需一条命令即可生成一个兼容Azure Search 自定义认知技能Custom Cognitive Skill的命名实体识别NERAPI 项目。它基于 spaCy FastAPI Docker 三大核心组件帮你把文本智能分析能力快速接入 Azure Search 认知搜索是新手构建企业级 NLP 技能服务的最短路径。一、它是什么为什么新手需要这个模板 先说清楚两个概念Azure Search 认知技能Cognitive SkillAzure Search 在索引文档时可以调用各种 AI 能力语言检测、实体识别、关键短语提取等把分析结果写回索引让搜索结果更懂你的数据。自定义认知技能如果你有一套自己的 AI 算法比如一个 Python API只要接口符合 Azure 规范就能注册为自定义认知技能融入 Azure Search 的技能流水线。而cookiecutter-spacy-fastapi解决的就是让你不用从零搭 API直接生成一个符合自定义认知技能接口规范的 NER 服务。核心组件作用spaCy工业级自然语言处理库负责加载模型并批量抽取实体FastAPI高性能 Python Web 框架自动生成 OpenAPI 文档Docker一键打包部署镜像内自动下载 spaCy 模型二、一条命令生成你的 NER 项目 ⚡1. 安装 Cookiecutterpip install --user cookiecutter2. 获取模板仓库git clone https://gitcode.com/gh_mirrors/co/cookiecutter-spacy-fastapi3. 运行生成器cookiecutter ./cookiecutter-spacy-fastapi生成器会依据cookiecutter.json中的变量定义交互式地向你询问 4 个问题变量说明project_name项目名默认为 spaCy FastAPI Azure Cognitive Skillproject_slug由项目名自动生成的目录名下划线格式short_description项目简介自动生成spacy_model关键选项选择 spaCy 官方预训练模型如en_core_web_sm回答完毕一个完整的可运行项目就落在你的磁盘上了 三、生成的项目结构一览 {{project_slug}}/ ├── app/ │ ├── api.py # FastAPI 路由/entities 与 /entities_by_type │ ├── models.py # 请求/响应模型 实体类型映射表 │ ├── spacy_extractor.py # SpacyExtractor 批量实体抽取封装 │ ├── data/example_request.json # 示例请求报文 │ └── tests/test_api.py # 接口自动化测试 ├── main.py # 本地启动入口uvicorn0.0.0.0:8080 ├── Dockerfile # 容器镜像构建脚本 ├── requirements.txt # 依赖清单 └── README.md # 运行与部署说明几个关键文件值得花 30 秒了解app/api.py应用启动时一次性加载 spaCy 模型spacy.load并注册两个 POST 路由这是整个技能的门面。app/spacy_extractor.pySpacyExtractor类使用nlp.pipe()对文档批量做实体抽取比逐条处理高效得多还负责把实体按名称归并、记录起止位置。app/models.py定义了RecordsRequest/RecordsResponse等 Pydantic 模型——这正是 Azure Search 自定义认知技能的标准请求/响应格式其中的ENT_PROP_MAP把 spaCy 的 18 种实体标签PERSON、ORG、LOC、DATE、MONEY……映射为技能接口友好的属性名people、organizations、locations、dates、money……。四、本地运行3 步调试你的 NER API 进入生成的项目目录按顺序执行cd ./你的项目目录 bash ./create_virtualenv.sh uvicorn app.api:app --reload然后打开浏览器访问http://localhost:8000/docs即可看到 FastAPI 自动生成的 OpenAPI 交互文档界面直接在线调试接口上图/entities接口的在线调试页面。把示例报文填入 Request body点击 Execute 即可看到 spaCy 抽取出的命名实体。项目还内置了app/data/example_request.json示例请求测试时可一键填入另有tests/test_api.py供你回归验证接口行为。五、两个接口一个灵魂/entities_by_type 生成的 API 暴露了两个端点理解它们的分工是接入 Azure Search 的关键1️⃣POST /entities—— 通用实体列表输入一批带recordId和text的记录返回每条记录抽取到的全部实体名称、标签、文本位置。适合本地开发调试或自有业务系统直接调用。2️⃣POST /entities_by_type—— 技能接口灵魂所在✨返回结果按实体类型分组例如一段文本会被整理为{ values: [ { recordId: a1, data: { organizations: [Microsoft], products: [Echo, Dot], people: [Siri, Alexa] } } ] }这个结构完全对齐 Azure Search自定义认知技能接口规范因此可以原样部署后注册进 Azure Search 的 Skillset 中。接入流程可以概括为你的文档 → Azure Search 索引器 → 调用你部署的 /entities_by_type 端点 → spaCy 批量抽取实体 → 实体写回索引字段 → 用户可按人名/机构/地点/日期精准检索简言之部署 → 在 Azure 门户的索引器 Skillset 中登记你的 API 地址 → 索引时自动跑 NER三步完成集成。六、用 Docker 一键部署上线 生成的Dockerfile已做好全部准备基于tiangolo/uvicorn-gunicorn-fastapi生产级基础镜像构建时自动执行spacy download {你选的模型}把 NLP 模型打进镜像服务监听 8080 端口默认 2 个 Web 并发构建并运行docker build -t my-ner-skill . docker run -p 8080:8080 my-ner-skill镜像推到容器注册表后即可部署到 Azure Kubernetes ServiceAKS等托管环境。项目的README.md中也提供了配合 Azure Pipelines 搭建 CI/CD 的指引方便持续交付。七、新手常见问题 FAQ Q1spacy_model 可以随便填吗不行。cookiecutter.json中明确要求它必须是 spaCy 官方预训练模型如en_core_web_sm、en_core_web_md等。小模型sm起步足够追求精度再升md/lg。Q2模型加载会不会拖慢每次请求不会。app/api.py在应用启动时只执行一次spacy.load请求阶段用nlp.pipe()批量推理性能友好。Q3我不打算用 Azure Search这个 API 还有用吗当然有。它就是一个标准 FastAPI 服务/entities接口可直接服务于任何需要实体抽取的业务场景Azure Search 集成属于锦上添花。Q4接口测试怎么跑项目内置tests/test_api.py启动服务后执行测试即可验证两个端点的行为是否符合预期。八、小结 步骤耗时说明生成项目~1 分钟一条 cookiecutter 命令本地调试~5 分钟uvicorn 启动 OpenAPI UI 在线测试容器化部署~10 分钟Docker 构建 推送注册表接入 Azure Search视环境在 Skillset 中登记 API 端点cookiecutter-spacy-fastapi 把spaCy 模型 FastAPI 服务 Docker 部署 Azure Search 技能规范这四件事打包成了一条命令。对新手而言它是理解自定义认知技能接口规范的最佳范本对团队而言它是把自研 NLP 能力接入 Azure Search 认知搜索的快速通道。现在去生成你的第一个命名实体识别技能吧 【免费下载链接】cookiecutter-spacy-fastapiCookiecutter API for creating Custom Skills for Azure Search using Python and Docker项目地址: https://gitcode.com/gh_mirrors/co/cookiecutter-spacy-fastapi创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价