必须通过自定义Bot+HTTP API网关方式接入Milvus,即部署FastAPI代理层调用pymilvus执行向量检索,再由Coze Bot通过HTTP节点调用该代理,实现政务文档毫秒级语义检索。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

要在扣子(Coze)中接入Milvus向量数据库,支撑海量政务知识文档的毫秒级语义检索,必须绕过扣子原生插件市场中缺失的Milvus直连能力,通过自定义Bot + HTTP API网关方式打通数据链路。整个过程不依赖Coze官方插件,而是将Milvus作为后端向量服务,由Bot调用你自主部署的API代理层完成向量化与检索闭环。
准备Milvus服务与政务文档向量化管道
先确保Milvus服务已就绪:使用Docker Compose部署Milvus 2.4.0单机版,或直接选用Milvus MCP Server云实例——后者免运维,且免费 tier 支持10万条向量存储,足够政务试点场景起步。
政务文档需预处理为纯文本段落(如每段≤512 token),再经嵌入模型转为稠密向量。推荐使用BGE-M3或tao-8k模型:前者开源、多语言强;后者支持8192上下文,适合长政策原文分块处理。
向量入库前,Collection必须定义含主键(int64)、文本字段(varchar)、向量字段(float_vector, dim=1024)的Schema,并为向量字段创建HNSW索引,metric_type设为COSINE——这是政务语义匹配最稳定的组合。
【务必关闭自动flush】批量插入时禁用auto_flush,改用insert→flush显式提交,否则小批量写入会触发高频磁盘刷写,拖慢整体吞吐。
搭建轻量API代理层(关键枢纽)
Coze Bot无法直连Milvus,必须架设一层HTTP代理。推荐用FastAPI写一个极简服务,暴露两个端点:/search(接收自然语言query,返回top-k匹配文本)和/health(供Coze健康检查)。
在/search逻辑中,先调用嵌入模型API(如Xinference托管的tao-8k)将用户query转为向量,再用pymilvus连接Milvus执行search,filter表达式可附加时间范围或部门标签等标量条件,实现“语义+属性”混合检索。
返回结果只保留text字段和score,JSON结构扁平化,例如[{"text":"《XX市养老服务条例》第三章规定...","score":0.872}]——Coze Bot后续解析无压力。
该API需部署在公网可访问地址(如阿里云ECS或Vercel),并配置HTTPS与简单Token鉴权(Coze Bot请求头带X-API-Key即可)。
在Coze中创建自定义Bot并绑定API
第一步:进入Coze后台 → Bot管理 → 新建Bot → 选择“自定义开发”模式,关闭所有预置插件。
第二步:在Bot工作流中添加「HTTP请求」节点,Method选POST,URL填你部署好的https://your-api-domain.com/search,Body类型选JSON,输入字段映射为{"query": "{{user_input}}"}。
第三步:设置Headers,添加X-API-Key: your-secret-token;响应体提取路径写$.data[0].text(若需首条结果)或$.data[*].text(全量列表)。
第四步:将HTTP节点输出接入「发送消息」组件,格式设为纯文本。测试时输入“残疾人两项补贴如何申领”,应秒级返回政策原文片段。
注意:Coze对HTTP超时默认设为5秒,若Milvus集群负载高或网络延迟大,需在Bot设置里手动调高「HTTP请求超时时间」至8秒,避免误判失败。
优化政务检索准确率的三处实操配置
方法一:在Milvus search参数中启用consistency_level="Strong"。政务问答不容许脏读,必须保证每次检索都看到最新插入的向量,尤其适用于每日更新的政策库。
方法二:对用户query做前置规则清洗——移除“请问”“能不能”“怎么操作”等口语虚词,保留核心实体词(如“公租房”“生育津贴”“跨省通办”),再送入嵌入模型。这步用Python正则re.sub(r'^(请问|我想知道|怎么|如何|能否)\s*', '', query)一行搞定,大幅提升向量表征纯净度。
方法三:在FastAPI代理层增加缓存层。对相同query(MD5哈希后)缓存30秒内结果,使用Redis或内存字典均可。政务高频问题(如“退休年龄规定”)重复率极高,缓存后QPS可提升3倍以上,Milvus实际负载降低近半。


















