Milvus 相关的开源工具与 SDK(Pymilvus、GoMilvus)

1. 引言

Milvus 是一款高性能的 开源向量数据库,广泛应用于 AI 语义搜索、推荐系统、计算机视觉、自然语言处理(NLP) 等领域。为了让开发者能够 更方便地管理和查询 Milvus,官方提供了 多种 SDK 和开源工具,支持 Python、Go、Java、Node.js 等主流编程语言。本篇文章将介绍 Milvus 相关的开源工具与 SDK,重点解析 Pymilvus(Python SDK)、GoMilvus(Go SDK),并提供示例代码,帮助开发者快速上手。


2. Milvus 相关的开源工具与 SDK

工具 / SDK编程语言适用场景
PymilvusPythonAI 开发、机器学习、NLP、深度学习
GoMilvusGo后端服务开发、微服务、云应用
Milvus Java SDKJava企业级应用、推荐系统
Milvus Node.js SDKJavaScript / TypeScriptWeb 应用、在线搜索
Milvus-CLIShell命令行管理 Milvus
Milvus-InsightWeb UI可视化管理 Milvus

3. Pymilvus(Python SDK)

3.1 为什么选择 Pymilvus?

PymilvusMilvus 官方提供的 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 生态兼容,可结合 GingRPC 进行 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-CLIMilvus 命令行管理工具milvus-io/milvus-cli
Milvus-InsightMilvus Web UI 管理milvus-io/milvus-insight
Milvus Java SDKJava 语言 SDKmilvus-io/milvus-sdk-java
Milvus Node.js SDKNode.js 语言 SDKmilvus-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 都能帮助你快速构建高性能向量检索系统! 🚀


📌 有什么问题和经验想分享?欢迎在评论区交流、点赞、收藏、关注! 🎯

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

莫比乌斯之梦

您的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值