ssdhelpers

package
v1.19.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 11, 2023 License: BSD-3-Clause Imports: 9 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Concurrently

func Concurrently(n uint64, action Action)

Types

type Action

type Action func(taskIndex uint64)

type Centroid

type Centroid struct {
	Center     []float32
	Calculated atomic.Bool
}

type DistanceLookUpTable

type DistanceLookUpTable struct {
	// contains filtered or unexported fields
}

func NewDistanceLookUpTable

func NewDistanceLookUpTable(segments int, centroids int, center []float32) *DistanceLookUpTable

func (*DistanceLookUpTable) LookUp

func (lut *DistanceLookUpTable) LookUp(
	encoded []byte,
	pq *ProductQuantizer,
) float32

type Encoder

type Encoder byte
const (
	UseTileEncoder   Encoder = 0
	UseKMeansEncoder Encoder = 1
)

type EncoderDistribution

type EncoderDistribution byte
const (
	NormalEncoderDistribution    EncoderDistribution = 0
	LogNormalEncoderDistribution EncoderDistribution = 1
)

type FilterFunc

type FilterFunc func([]float32) []float32

type KMeans

type KMeans struct {
	K                  int     // How many centroids
	DeltaThreshold     float32 // Used to stop fitting if there are not too much changes in the centroids anymore
	IterationThreshold int     // Used to stop fitting after a certain amount of iterations
	Distance           distancer.Provider
	// contains filtered or unexported fields
}

func NewKMeans

func NewKMeans(k int, dimensions int, segment int) *KMeans

func NewKMeansWithCenters

func NewKMeansWithCenters(k int, dimensions int, segment int, centers [][]float32) *KMeans

func (*KMeans) Add

func (m *KMeans) Add(x []float32)

func (*KMeans) Center

func (m *KMeans) Center(point []float32) []float32

func (*KMeans) Centers

func (m *KMeans) Centers() [][]float32

func (*KMeans) Centroid

func (m *KMeans) Centroid(i uint64) []float32

func (*KMeans) Encode

func (m *KMeans) Encode(point []float32) uint64

func (*KMeans) ExposeDataForRestore

func (m *KMeans) ExposeDataForRestore() []byte

func (*KMeans) Fit

func (m *KMeans) Fit(data [][]float32) error

func (*KMeans) NNearest

func (m *KMeans) NNearest(point []float32, n int) []uint64

func (*KMeans) Nearest

func (m *KMeans) Nearest(point []float32) uint64

type KMeansPartitionData

type KMeansPartitionData struct {
	// contains filtered or unexported fields
}

type PQData

type PQData struct {
	Ks                  uint16
	M                   uint16
	Dimensions          uint16
	EncoderType         Encoder
	EncoderDistribution byte
	Encoders            []PQEncoder
	UseBitsEncoding     bool
}

type PQDistancer

type PQDistancer struct {
	// contains filtered or unexported fields
}

func (*PQDistancer) Distance

func (d *PQDistancer) Distance(x []byte) (float32, bool, error)

type PQEncoder

type PQEncoder interface {
	Encode(x []float32) uint64
	Centroid(b uint64) []float32
	Add(x []float32)
	Fit(data [][]float32) error
	ExposeDataForRestore() []byte
}

type ProductQuantizer

type ProductQuantizer struct {
	ExtractCode func(encoded []byte, index int) uint64
	PutCode     func(code uint64, encoded []byte, index int)
	// contains filtered or unexported fields
}

func NewProductQuantizer

func NewProductQuantizer(segments int, centroids int, useBitsEncoding bool, distance distancer.Provider, dimensions int, encoderType Encoder, encoderDistribution EncoderDistribution) (*ProductQuantizer, error)

ToDo: Add a settings struct. Already necessary!!

func NewProductQuantizerWithEncoders

func NewProductQuantizerWithEncoders(segments int, centroids int, useBitsEncoding bool, distance distancer.Provider, dimensions int, encoderType Encoder, encoders []PQEncoder) (*ProductQuantizer, error)

func (*ProductQuantizer) CenterAt

func (pq *ProductQuantizer) CenterAt(vec []float32) *DistanceLookUpTable

func (*ProductQuantizer) Decode

func (pq *ProductQuantizer) Decode(code []byte) []float32

func (*ProductQuantizer) Distance

func (pq *ProductQuantizer) Distance(encoded []byte, lut *DistanceLookUpTable) float32

func (*ProductQuantizer) DistanceBetweenCompressedAndUncompressedVectors

func (pq *ProductQuantizer) DistanceBetweenCompressedAndUncompressedVectors(x []float32, encoded []byte) float32

func (*ProductQuantizer) DistanceBetweenCompressedVectors

func (pq *ProductQuantizer) DistanceBetweenCompressedVectors(x, y []byte) float32

func (*ProductQuantizer) Encode

func (pq *ProductQuantizer) Encode(vec []float32) []byte

func (*ProductQuantizer) ExposeFields

func (pq *ProductQuantizer) ExposeFields() PQData

func (*ProductQuantizer) Fit

func (pq *ProductQuantizer) Fit(data [][]float32)

func (*ProductQuantizer) NewDistancer

func (pq *ProductQuantizer) NewDistancer(a []float32) *PQDistancer

type TileEncoder

type TileEncoder struct {
	// contains filtered or unexported fields
}

func NewTileEncoder

func NewTileEncoder(bits int, segment int, encoderDistribution EncoderDistribution) *TileEncoder

func RestoreTileEncoder

func RestoreTileEncoder(bins float64, mean float64, stdDev float64, size float64, s1 float64, s2 float64, segment uint16, encoderDistribution byte) *TileEncoder

func (*TileEncoder) Add

func (te *TileEncoder) Add(x []float32)

func (*TileEncoder) Centroid

func (te *TileEncoder) Centroid(b uint64) []float32

func (*TileEncoder) Encode

func (te *TileEncoder) Encode(x []float32) uint64

func (*TileEncoder) ExposeDataForRestore

func (te *TileEncoder) ExposeDataForRestore() []byte

func (*TileEncoder) Fit

func (te *TileEncoder) Fit(data [][]float32) error

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL