深度解析Milvus 3.0:高效写入与特征回填技术

近期,DeepSeek开源的DeepSeek Harness(简称DSH)引发了AI Agent领域的广泛关注。这款工具在开源首日就斩获3万Star,次日突破8万,截至目前Star数已攀升至19万,其提出的“一切皆插件”架构理念,有望成为未来Agent基础设施的主流标准。
针对如何让向量数据库即插即用接入DSH生态,我们开发了专用插件,帮助Agent快速获得向量数据库访问能力,相关代码已开源共享。本文将分享插件的开发思路、设计逻辑以及完整的实战流程。
一、DSH插件化架构的核心价值
DSH开源后,“Everything is a Plugin(一切皆插件)”的理念贯穿整个项目。不同于传统Agent框架将Agent循环、文件访问、工具注册等核心逻辑固化在框架内部,DSH基于微内核架构,仅负责插件的加载、卸载、依赖管理和服务协作,所有业务能力都通过插件提供。
无论是模型适配、文件系统访问、工具集,还是驱动Agent思考调用的主循环,都可以作为独立插件存在。这种深度的架构解耦,带来了极高的灵活性和极简的能力搭配逻辑。
举个例子,之前Agent访问的是本地文件目录,后续如果需要切换到远程沙箱环境,只要上层暴露的接口保持一致,Agent无需感知底层实现的差异,能力切换即可无缝完成。
向量数据库的接入也是同样的逻辑:无需修改DSH的核心代码,只要按照DSH的插件接口提供一组向量数据库能力,Agent就能自动获得数据库访问工具,快速融入现有生态。
二、选择插件化设计的原因
要让Agent访问向量数据库,通常有两种常规方案:通过MCP连接数据库服务,或者编写Skill让模型自行驱动查询。这两种方式在技术上并不复杂,但都存在不少繁琐的流程和潜在的风险。
首先,需要将数据库操作包装为工具,定义工具Schema告知模型可用参数,再将工具注册到Agent运行时;其次,需要管理数据库的Endpoint、Token和数据库实例,对请求参数进行校验,将返回结果转换为模型可消费的格式;此外,还需要定义单次查询的数据返回量、可访问字段范围、禁用操作等规则。
当涉及生产环境部署时,还需要考虑权限控制和可观测性:Agent是否拥有写入、删除权限?数据库Token是否会泄露到上下文?
一个真正可用的Agent与数据库集成方案,核心难点并不在于最终的数据库查询调用,而在于对这些边缘规则和权限的管理。这也是我们没有将向量数据库调用封装为Skill的原因:Skill更适合沉淀经验性的知识和策略,比如“面对陌生集合先查询Schema”、“生产环境查询控制返回量”等,这些是给模型的提示性规则,但模型存在产生幻觉的可能。
而插件则可以直接将这些规则固化为执行边界:比如将单次查询的最大返回量限制为50条,不对外暴露删除工具,即使模型想要查询5000条数据或者执行删除操作,也无法获得对应的能力。
因此,第一版的向量数据库插件仅开放了核心只读能力:列出集合、查看集合Schema、执行标量查询、语义搜索和混合搜索,未开放插入、更新、删除、创建/删除集合等写操作。同时,数据库Token不再交由模型自行处理,而是集成到DSH的凭证管理系统中,实现了Skill负责知识策略、插件负责执行边界的清晰分工。
三、实战流程:从插件安装到Agent查询数据
本次实战的目标是启动DSH,安装向量数据库插件,连接本地或云服务向量数据库,让无数据库先验知识的Agent自动完成数据查询。
1. 准备数据库环境
首先需要启动向量数据库实例:可以通过Docker启动本地独立版向量数据库,默认地址为http://127.0.0.1:19530;如果使用云服务,则填写对应的HTTPS地址和访问Token。
2. 配置开发环境
DSH Web需要Node.js 22.19以上版本,推荐使用Node.js 24。首先在终端确认当前Node版本:
node --version
然后安装与当前插件匹配的DSH CLI:
npm install -g @deepseek-ai/dsh@0.1.0-rc.7
确认CLI安装成功:
dsh --version
3. 安装向量数据库插件
本次使用DSH Web界面,因此需要将插件安装到Web Profile中:
dsh plugin --profile web add @vector/dsh-milvus
插件安装完成后启动DSH Web:
dsh web --port 3080
在浏览器中访问http://127.0.0.1:3080即可进入DSH界面。如果此前已经启动了DSH Web,安装插件后需要重启服务,因为插件仅在Web运行时启动时加载,旧进程不会自动加载新插件。
4. 配置数据库连接
进入设置页面,选择插件选项,找到向量数据库插件:
- 本地向量数据库:填写Endpoint地址,例如http://127.0.0.1:19530,数据库默认名为default
- 云服务向量数据库:填写HTTPS地址、访问Token,根据集群类型填写数据库名称(免费版和Serverless版无需填写,否则会导致查询报错)
配置完成后依次点击:创建配置文件 → 测试连接 → 设为新会话默认使用配置。
这里有一个重要细节:配置文件是绑定新会话的。如果已经打开聊天窗口后修改了配置,原有会话不会自动切换,建议修改配置后直接新建聊天窗口。
5. 让Agent自动查询数据
首次与数据库交互时,建议不要直接发起查询,而是先让Agent列出所有可用集合:
列出所有向量数据库集合
Agent会调用milvus_list_collections工具,这一步不仅验证了整个链路的连通性,更重要的是让Agent自主获取数据库内的集合信息,无需用户手动提供集合名称。
假设返回结果中包含集合hybrid_code_chunks_d0f16d93,可以继续让Agent描述该集合的Schema:
描述 hybrid_code_chunks_d0f16d93
Agent会调用milvus_describe_collection工具,获取该集合的完整字段信息、类型和相关元数据。
获得Schema后,就可以发起正式的数据查询:
查询 hybrid_code_chunks_d0f16d93,返回id、relativePath、startLine、endLine,最多3条
Agent会调用milvus_query工具,根据真实字段发起标量查询,并将结果返回至聊天窗口。
你也可以发起语义搜索,查询与特定内容相似的向量数据:
在集合中帮我搜索记录了哪些北京美食信息?
Agent会调用milvus_search工具,基于语义相似性召回相关数据。
最后,可以在调用轨迹中查看完整的插件调用链路,通常会依次看到milvus_list_collections、milvus_describe_collection、milvus_query、milvus_search等工具的调用记录。
四、总结与展望
尽管DSH已经获得了19万Star,但依然处于早期开发阶段。这一项目背后反映出一个有趣的行业趋势:未来AI领域的竞争,是最强模型吞噬软件,还是Agent吞噬模型?
如果后者成为主流,那么模型能力将逐渐趋同,Agent系统长期需要关注的不仅是Prompt工程,更需要关注其拥有的能力集合,以及这些能力如何被安装、复用和治理。DSH的插件化架构正是这一方向的优秀实践。
该插件的开源代码仓库地址为:https://github.com/zilliztech/dsh-milvus/

