1. 引言
Milvus 是一款高性能的 开源向量数据库,广泛应用于 AI 语义搜索、推荐系统、计算机视觉、自然语言处理(NLP) 等领域。为了让开发者能够 更方便地管理和查询 Milvus,官方提供了 多种 SDK 和开源工具,支持 Python、Go、Java、Node.js 等主流编程语言。本篇文章将介绍 Milvus 相关的开源工具与 SDK,重点解析 Pymilvus(Python SDK)、GoMilvus(Go SDK),并提供示例代码,帮助开发者快速上手。
2. Milvus 相关的开源工具与 SDK
工具 / SDK | 编程语言 | 适用场景 |
---|---|---|
Pymilvus | Python | AI 开发、机器学习、NLP、深度学习 |
GoMilvus | Go | 后端服务开发、微服务、云应用 |
Milvus Java SDK | Java | 企业级应用、推荐系统 |
Milvus Node.js SDK | JavaScript / TypeScript | Web 应用、在线搜索 |
Milvus-CLI | Shell | 命令行管理 Milvus |
Milvus-Insight | Web UI | 可视化管理 Milvus |
3. Pymilvus(Python SDK)
3.1 为什么选择 Pymilvus?
Pymilvus 是 Milvus 官方提供的 Python SDK,适用于 机器学习、NLP、计算机视觉 等 AI 领域。
✅ 适用场景:
- AI 语义搜索(结合
Sentence-Transformers
进行文本向量化)。 - 计算机视觉(使用
OpenCV
+Milvus
进行图片相似度搜索)。 - 推荐系统(基于
Scikit-Learn
计算特征向量,存入 Milvus)。
✅ Pymilvus 的特点:
- 支持向量插入、查询、删除、索引管理。
- 兼容 Milvus 2.x,支持分布式部署。
- 简单易用,与 Python AI 生态兼容(TensorFlow、PyTorch、Transformers)。
3.2 安装 Pymilvus
pip install pymilvus
3.3 Pymilvus 基础操作示例
(1)连接 Milvus
from pymilvus import connections
connections.connect(alias="default", host="localhost", port="19530")
(2)创建 Collection
from pymilvus import FieldSchema, CollectionSchema, DataType, Collection
fields = [
FieldSchema(name="id", dtype=DataType.INT64, is_primary=True),
FieldSchema(name="vector", dtype=DataType.FLOAT_VECTOR, dim=512)
]
schema = CollectionSchema(fields, description="Example collection")
collection = Collection(name="example_collection", schema=schema)
(3)插入数据
import numpy as np
vectors = np.random.rand(10, 512).tolist() # 生成 10 个 512 维向量
collection.insert([list(range(10)), vectors])
(4)创建索引
index_params = {"index_type": "IVF_FLAT", "metric_type": "L2", "params": {"nlist": 128}}
collection.create_index(field_name="vector", index_params=index_params)
(5)进行向量查询
query_vector = np.random.rand(1, 512).tolist()
search_params = {"metric_type": "L2", "params": {"nprobe": 10}}
results = collection.search([query_vector], anns_field="vector", param=search_params, limit=3)
for hits in results:
for hit in hits:
print(f"匹配 ID: {hit.id}, 相似度: {hit.distance}")
4. GoMilvus(Go SDK)
4.1 为什么选择 GoMilvus?
GoMilvus 是 Milvus 官方的 Go 语言 SDK,适用于 后端服务、微服务架构、云应用。
✅ 适用场景:
- 高并发服务(Go 适用于云端 API,结合 Milvus 提供向量搜索服务)。
- 微服务架构(使用 Go 语言开发 REST API,提供 AI 搜索能力)。
- 数据库集成(GoMilvus + PostgreSQL/MySQL,实现混合搜索)。
✅ GoMilvus 的特点:
- 轻量级,适用于高并发应用。
- 支持批量插入、索引优化、分布式搜索。
- 与 Go 生态兼容,可结合
Gin
、gRPC
进行 API 开发。
4.2 安装 GoMilvus
go get github.com/milvus-io/milvus-sdk-go/v2
4.3 GoMilvus 基础操作示例
(1)连接 Milvus
package main
import (
"context"
"fmt"
"github.com/milvus-io/milvus-sdk-go/v2/client"
)
func main() {
ctx := context.Background()
milvusClient, err := client.NewGrpcClient(ctx, "localhost:19530")
if err != nil {
fmt.Println("连接失败:", err)
return
}
fmt.Println("成功连接到 Milvus")
}
(2)创建 Collection
schema := &entity.Schema{
CollectionName: "example_collection",
Description: "Example collection",
Fields: []*entity.Field{
entity.NewField("id", entity.FieldTypeInt64).WithIsPrimaryKey(true),
entity.NewField("vector", entity.FieldTypeFloatVector).WithDim(512),
},
}
err := milvusClient.CreateCollection(ctx, schema, 1)
(3)插入数据
vectors := make([][]float32, 10)
for i := 0; i < 10; i++ {
vectors[i] = make([]float32, 512)
}
insertResult, err := milvusClient.Insert(ctx, "example_collection", "", []*entity.Column{
entity.NewColumnInt64("id", []int64{1, 2, 3, 4, 5}),
entity.NewColumnFloatVector("vector", 512, vectors),
})
(4)进行向量查询
searchResult, err := milvusClient.Search(ctx, "example_collection", []string{},
"", []string{"id"}, []entity.Vector{entity.FloatVector(vectors[0])},
"vector", entity.L2, 3, nil,
)
5. 其他 Milvus 开源工具
工具 / 项目 | 作用 | GitHub 地址 |
---|---|---|
Milvus-CLI | Milvus 命令行管理工具 | milvus-io/milvus-cli |
Milvus-Insight | Milvus Web UI 管理 | milvus-io/milvus-insight |
Milvus Java SDK | Java 语言 SDK | milvus-io/milvus-sdk-java |
Milvus Node.js SDK | Node.js 语言 SDK | milvus-io/milvus-sdk-node |
6. 结论
SDK / 工具 | 适用场景 |
---|---|
Pymilvus(Python SDK) | 适用于 AI / 机器学习 / NLP 应用 |
GoMilvus(Go SDK) | 适用于高并发 API、微服务架构 |
Milvus Java SDK | 适用于企业级推荐系统 |
Milvus Node.js SDK | 适用于 Web 前后端 AI 搜索 |
无论是 AI 研究、Web 开发还是后端微服务,Milvus 的 SDK 都能帮助你快速构建高性能向量检索系统! 🚀
📌 有什么问题和经验想分享?欢迎在评论区交流、点赞、收藏、关注! 🎯