ZBLOG

Milvus golang 访问

可以使用以下步骤访问 Milvus Golang:

  1. 安装 Milvus Go SDK
  1. go get github.com/milvus-io/milvus-sdk-go
  1. 连接到 Milvus 服务器
  1. import (
  2. "context"
  3. "github.com/milvus-io/milvus-sdk-go/milvus"
  4. )
  5. ctx := context.Background()
  6. client, err := milvus.NewClient(ctx, milvus.WithIPAddress("localhost"), milvus.WithPort("19530"))
  7. if err != nil {
  8. panic(err)
  9. }
  10. defer client.Close()
  1. 创建或加载集合
  1. collectionName := "test_collection"
  2. dimension := 512
  3. indexParams := map[string]string{
  4. "metric_type": "L2",
  5. }
  6. err = client.CreateCollection(ctx, collectionName, dimension, indexParams)
  7. if err != nil {
  8. if !milvus.IsAlreadyExists(err) {
  9. panic(err)
  10. }
  11. }
  12. // or
  13. collectionParam := &milvus.CollectionParam{
  14. CollectionName: collectionName,
  15. Dimension: dimension,
  16. IndexParams: indexParams,
  17. }
  18. err = client.HasCollection(ctx, collectionParam)
  19. if err != nil && !milvus.IsCollectionNotExists(err) {
  20. panic(err)
  21. } else if milvus.IsCollectionNotExists(err) {
  22. err = client.CreateCollection(ctx, collectionParam)
  23. if err != nil {
  24. panic(err)
  25. }
  26. }
  1. 插入向量
  1. vectors := make([][]float32, 1000)
  2. for i := 0; i < 1000; i++ {
  3. vector := make([]float32, dimension)
  4. for j := 0; j < dimension; j++ {
  5. vector[j] = rand.Float32()
  6. }
  7. vectors[i] = vector
  8. }
  9. ids := make([]int64, len(vectors))
  10. for i := 0; i < len(ids); i++ {
  11. ids[i] = int64(i)
  12. }
  13. insertParam := &milvus.InsertParam{
  14. CollectionName: collectionName,
  15. PartitionName: "",
  16. FieldsData: vectors,
  17. RowIDs: ids,
  18. }
  19. resp, err := client.Insert(ctx, insertParam)
  20. if err != nil {
  21. panic(err)
  22. }
  1. 构建索引
  1. indexParams := map[string]string{
  2. "metric_type": "L2",
  3. }
  4. indexType := milvus.IVF_FLAT
  5. param := &milvus.IndexParam{
  6. CollectionName: collectionName,
  7. IndexType: indexType,
  8. IndexParams: indexParams,
  9. }
  10. status, err := client.CreateIndex(ctx, param)
  11. if err != nil || !status.Ok() {
  12. panic(err)
  13. }
  1. 搜索向量
  1. searchParam := &milvus.SearchParam{
  2. CollectionName: collectionName,
  3. QueryVectors: vectors[:10],
  4. TopK: 5,
  5. Params: map[string]string{
  6. "nprobe": "16",
  7. },
  8. }
  9. resp, err := client.Search(ctx, searchParam)
  10. if err != nil {
  11. panic(err)
  12. }
  1. 删除集合
  1. err = client.DropCollection(ctx, collectionName)
  2. if err != nil {
  3. panic(err)
  4. }

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=915

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?