DBAPI 接入 Milvus 向量数据库:HTTP 执行器参数映射实战

DBAPI 接入 Milvus 向量数据库:HTTP 执行器参数映射实战

什么是 Milvus?

Milvus 是一款开源的向量数据库,专为 AI 应用场景设计,支持海量向量数据的存储、索引和相似度搜索。在 RAG(检索增强生成)、语义搜索、推荐系统等场景中被广泛使用。

Milvus 提供了完整的 RESTful API 接口,可以通过 HTTP 协议进行向量数据的插入、查询、搜索等操作。

为什么用 DBAPI 接入 Milvus?

直接调用 Milvus 的 HTTP API 需要在代码中拼接请求地址、构造请求参数、处理认证和鉴权。通过 DBAPI 的 HTTP 执行器接入 Milvus,您将获得:

  • 统一 API 管理:所有 Milvus 操作以 DBAPI API 的形式统一管理,权限、限流、监控开箱即用
  • 参数映射简化:自定义映射模式将业务参数自动转换为 Milvus 所需的请求格式,调用方无需关心 Milvus 接口细节
  • 安全管控:继承 DBAPI 的 Token 认证和 IP 防火墙能力
  • 零代码对接:无需编写任何集成代码,纯配置完成

关键功能:HTTP 执行器参数自定义映射

DBAPI 企业版 4.5.0 增强了 HTTP 执行器的自定义映射模式 。通过一个 JSON 模板配合 ${} 占位符和 Groovy 表达式,您可以将调用方传入的参数灵活映射为目标接口所需的请求体格式。

复制代码
调用方传入:{ "collection": "my_collection", "id": 1, "vector": [0.1, 0.2, ...], "text": "xxx" }
                │ HTTP 执行器参数映射
                ▼  
Milvus 接收:{ "collectionName": "my_collection", "data": [{ "id": 1, "vector": [0.1, 0.2, ...], "text": "xxx" }] }

实战:接入 Milvus

前置条件

  • DBAPI 企业版 4.5.0 及以上版本
  • 已部署的 Milvus 服务(本文以 Milvus HTTP API v2 为例)
  • Milvus 中已创建好集合(Collection)

第一步:创建 HTTP 数据源

在 DBAPI 管理后台进入数据源管理,点击创建数据源:

配置项
名称 Milvus 服务
类型 HTTP
地址 http://192.168.1.100:19530

地址为 Milvus 服务的 HTTP 端口,默认为 19530。

第二步:创建插入向量 API

在目标分组中创建 API,使用 HTTP 执行器。

基础信息
配置项
API 名称 Milvus 插入向量
API 路径 /milvus/insert
访问权限 private
请求参数 id(bigint)、vector(string)、text(string)

vector 参数为 JSON 字符串,如 [0.1, 0.2, 0.3, ...]

执行器配置
配置项
执行器类型 HTTP 接口代理执行器
数据源 Milvus 服务
Method POST
URL 路径 /v2/vectordb/entities/insert
Content-Type application/json
参数传递模式 自定义映射

自定义请求头:

Key Value
Authorization YOUR_MILVUS_TOKEN

如果 Milvus 开启了认证,可在自定义请求头中配置 Token,HTTP 执行器会自动注入到转发请求中。

请求体模板:

json 复制代码
{"collectionName": "news_articles", "data": [{"id": ${_parameters.id}, "vector": ${_parameters.vector}, "text": ${_parameters.text}}]}

collectionName 直接在模板中写死,调用方无需传入。

vector 参数传入 JSON 数组字符串,映射到 Milvus 的 vector 字段。

调用效果

调用方请求:

bash 复制代码
POST https://127.0.0.1:8520/milvus/insert
Content-Type: application/json

{
  "id": 1001,
  "vector": [0.352, 0.187, 0.921, 0.453, 0.672],
  "text": "DBAPI 接入向量数据库"
}

系统根据模板映射后转发给 Milvus(HTTP 执行器自动注入自定义请求头):

复制代码
POST http://192.168.1.100:19530/v2/vectordb/entities/insert
Content-Type: application/json
Authorization: YOUR_MILVUS_TOKEN

{"collectionName": "news_articles", "data": [{"id": 1001, "vector": [0.352, 0.187, 0.921, 0.453, 0.672], "text": "DBAPI 接入向量数据库"}]}

第三步:创建向量搜索 API

基础信息
配置项
API 名称 Milvus 向量搜索
API 路径 /milvus/search
访问权限 private
请求参数 vector(string)、limit(bigint)
执行器配置
配置项
执行器类型 HTTP 接口代理执行器
数据源 Milvus 服务
Method POST
URL 路径 /v2/vectordb/entities/search
Content-Type application/json
参数传递模式 自定义映射

请求体模板:

json 复制代码
{"collectionName": "news_articles", "vector": ${_parameters.vector}, "limit": ${_parameters.limit}, "outputFields": ["id", "text", "vector"]}

collectionName 在模板中写死,调用方只需传入向量和限制条数。

调用效果

调用方请求:

bash 复制代码
POST https://127.0.0.1:8520/milvus/search
Content-Type: application/json

{
  "vector": [0.350, 0.190, 0.910, 0.450, 0.670],
  "limit": 5
}

系统映射后转发给 Milvus:

复制代码
POST http://192.168.1.100:19530/v2/vectordb/entities/search
Content-Type: application/json
Authorization: YOUR_MILVUS_TOKEN

{"collectionName": "news_articles", "vector": [0.350, 0.190, 0.910, 0.450, 0.670], "limit": 5, "outputFields": ["id", "text", "vector"]}

第四步:创建按 ID 查询 API

基础信息
配置项
API 名称 Milvus 查询向量
API 路径 /milvus/query
访问权限 private
请求参数 collection(string)、id(bigint)
执行器配置
配置项
执行器类型 HTTP 接口代理执行器
数据源 Milvus 服务
Method POST
URL 路径 /v2/vectordb/entities/query
Content-Type application/json
参数传递模式 自定义映射

请求体模板:

json 复制代码
{"collectionName": "news_articles", "filter": ${"id == " + _parameters.id}, "outputFields": ["id", "text", "vector"]}

通过 Groovy 表达式拼接过滤条件 id == 1001,无需调用方感知 Milvus 的查询语法。

调用效果

调用方请求:

bash 复制代码
POST https://127.0.0.1:8520/milvus/query
Content-Type: application/json

{
  "id": 1001
}

系统映射后转发给 Milvus:

复制代码
POST http://192.168.1.100:19530/v2/vectordb/entities/query
Content-Type: application/json
Authorization: YOUR_MILVUS_TOKEN

{"collectionName": "news_articles", "filter": "id == 1001", "outputFields": ["id", "text", "vector"]}

更多参数映射技巧

复杂嵌套结构

如果 Milvus 集合有多个向量字段或嵌套字段,可以通过模板灵活构造:

json 复制代码
{"collectionName": ${_parameters.collection}, "data": [{"id": ${_parameters.id}, "titleVector": ${_parameters.titleVector}, "contentVector": ${_parameters.contentVector}, "metadata": {"author": ${_parameters.author}, "tags": ${_parameters.tags}}}]}

参数运算

对传入的参数做预处理:

json 复制代码
{"collectionName": ${_parameters.collection}, "vector": ${_parameters.vector}, "limit": ${_parameters.limit + 10}, "offset": ${(_parameters.page - 1) * _parameters.pageSize}}

条件赋值

根据参数值动态设置搜索参数:

json 复制代码
{"collectionName": ${_parameters.collection}, "vector": ${_parameters.vector}, "limit": ${_parameters.limit}, "params": {"nprobe": ${_parameters.precision == "high" ? 64 : 16}}}

总结

通过 DBAPI HTTP 执行器的参数自定义映射功能,对接 Milvus 向量数据库变得极其简单:

  • 调用方只需传递业务语义的参数,无需了解 Milvus API 的细节
  • 参数映射模板集中管理,Milvus 接口变更时只需修改模板,调用方不受影响
  • 接口复用 DBAPI 的鉴权、限流、监控等企业级能力
  • 完全零代码,纯配置完成集成

版本要求:DBAPI 企业版 4.5.0 及以上版本支持 HTTP 执行器参数自定义映射功能。

相关推荐
Ze3G90nYt2 小时前
Redis 分布式锁进阶第一百二十篇
数据库·redis·分布式
Fuly10242 小时前
LangGraph学习-(1)跑通一个最小状态图
数据库·学习
计算机安禾2 小时前
【数据库系统原理】第5篇:关系的完整性约束:实体、参照与用户定义的逻辑守卫
数据库·oracle
snow@li2 小时前
数据库:Schema = 数据库的“蓝图“或“命名空间“
数据库
如竟没有火炬2 小时前
恢复二叉搜索树
数据结构·数据库·python·leetcode·动态规划
星川皆无恙2 小时前
基于BERT+LSTM+CRF与知识图谱的医疗智能问答系统实战:Neo4j图数据库+实体识别+意图分析完整项目
数据库·人工智能·深度学习·bert·lstm·知识图谱·neo4j
Upsy-Daisy2 小时前
Hermes Agent 学习笔记 03:CLI 与 TUI 使用体验,让 Agent 真正进入终端工作流
服务器·前端·数据库
数据库小学妹2 小时前
MySQL并行复制原理与调优实战:LOGICAL_CLOCK到WRITESET_SESSION全链路优化
数据库·经验分享·mysql·性能优化·dba
周杰伦fans2 小时前
深入浅出AutoCAD .NET二次开发:HostApplicationServices完全解析
数据库·.net