Vectors即将作废
The types on this page implemented the method signatures of the entity.Vector interface.
entity.BFloat16Vector
This byte slice type serves as a wrapper for BFloat16 vector embeddings. You can instantiate an entity.BFloat16Vector as follows:
import (
   "encoding/binary"
   "math"
   "math/rand"
   "github.com/milvus-io/milvus-sdk-go/v2/entity"
)
func GenBFloat16Vector(dim int64) []byte {
   ret16 := make([]uint16, 0, dim)
   for i := 0; i < int(dim); i++ {
      f := rand.Float32()
      bits := math.Float32bits(f)
      bits >>= 16
      bits &= 0x7FFF
      ret16 = append(ret16, uint16(bits))
   }
   ret := make([]byte, len(ret16)*2)
   for i, value := range ret16 {
      binary.LittleEndian.PutUint16(ret[i*2:], value)
   }
   return ret
}
vectors := make([]entity.Vector, 0, 5)
for i := 0; i < 5; i++ {
   vectors = append(vectors, entity.BFloat16Vector(GenBFloat16Vector(768)))
}
entity.BinaryVector
This byte slice type serves as a wrapper for binary vector embeddings. You can instantiate an entity.BinaryVector as follows:
import (
   "math/rand"
   "github.com/milvus-io/milvus-sdk-go/v2/entity"
)
func GenBinaryVector(dim int64) []byte {
   vector := make([]byte, dim/8)
   rand.Read(vector)
   return vector
}
vectors := make([]entity.Vector, 0, 5)
for i := 0; i < 5; i++ {
   vectors = append(vectors, entity.BinaryVector(GenBinaryVector(768)))
}
entity.Float16Vector
This byte slice type serves as a wrapper for Float16 vector embeddings. You can instantiate an entity.Float16Vector as follows:
import (
   "encoding/binary"
   "math/rand"
   "github.com/x448/float16"
   "github.com/milvus-io/milvus-sdk-go/v2/entity"
)
func GenFloat16Vector(dim int64) []byte {
   ret := make([]byte, dim*2)
   for i := 0; i < int(dim); i++ {
      v := float16.Fromfloat32(rand.Float32()).Bits()
      binary.LittleEndian.PutUint16(ret[i*2:], v)
   }
   return ret
}
vectors := make([]entity.Vector, 0, 5)
for i := 0; i < 5; i++ {
   vectors = append(vectors, entity.Float16Vector(GenFloat16Vector(768)))
}
entity.FloatVector
This float32 slice type serves as a wrapper for float vector embeddings. You can instantiate an entity.FloatVector as follows:
import (
   "math/rand"
   "github.com/milvus-io/milvus-sdk-go/v2/entity"
)
func GenFloat32Vector(dim int64) []float32 {
   vector := make([]float32, 0, dim)
   for j := 0; j < int(dim); j++ {
      vector = append(vector, rand.Float32())
   }
   return vector
}
vectors := make([]entity.Vector, 0, 5)
for i := 0; i < 5; i++ {
   vectors = append(vectors, entity.FloatVector(GenFloat32Vector(768)))
}
entity.SparseEmbedding
This interface defines the method signatures as follows:
type SparseEmbedding interface {
    Dim() int // the dimension
    Len() int // the actual items in this vector
    Get(idx int) (pos uint32, value float32, ok bool)
    Serialize() []byte
    FieldType() FieldType
}
| Method | Return Type | Description | 
|---|---|---|
| 
 | 
 | Return the dimensionality of the sparse vector. | 
| 
 | 
 | Return the length of the sparse vector. | 
| 
 | 
 | Return a slice of the sparse vector. | 
| 
 | 
 | Return the serialized representation of the vector. | 
| 
 | Return the field type of the vector. | 
You can use the entity.NewSliceSparseEmbedding() method to create a sparse vector as follows:
vectors, err := entity.NewSliceSparseEmbedding(positions []uint32, values []float32)