ssdhelpers

package
v1.22.2 Latest Latest
Warning

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

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

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Concurrently

func Concurrently(n uint64, action Action)

func ExtractCode8 added in v1.20.0

func ExtractCode8(encoded []byte, index int) byte

Only made public for testing purposes... Not sure we need it outside

func PutCode8 added in v1.20.0

func PutCode8(code byte, buffer []byte, index int)

Only made public for testing purposes... Not sure we need it outside

Types

type Action

type Action func(taskIndex uint64)

type Centroid

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

type DLUTPool added in v1.19.6

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

func NewDLUTPool added in v1.19.6

func NewDLUTPool() *DLUTPool

func (*DLUTPool) Get added in v1.19.6

func (p *DLUTPool) Get(segments, centroids int, centers []float32) *DistanceLookUpTable

func (*DLUTPool) Return added in v1.19.6

func (p *DLUTPool) Return(dlt *DistanceLookUpTable)

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

func (*DistanceLookUpTable) Reset added in v1.19.6

func (lut *DistanceLookUpTable) Reset(segments int, centroids int, center []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 byte) []float32

func (*KMeans) Encode

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

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

func (*KMeans) String added in v1.19.6

func (k *KMeans) String() string

String prints some minimal information about the encoder. This can be used for viability checks to see if the encoder was initialized correctly – for example after a restart.

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
	TrainingLimit       int
}

type PQDistancer

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

func (*PQDistancer) Distance

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

func (*PQDistancer) DistanceToFloat added in v1.19.7

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

type PQEncoder

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

type ProductQuantizer

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

func NewProductQuantizer

func NewProductQuantizer(cfg ent.PQConfig, distance distancer.Provider, dimensions int) (*ProductQuantizer, error)

func NewProductQuantizerWithEncoders

func NewProductQuantizerWithEncoders(cfg ent.PQConfig, distance distancer.Provider, dimensions int, 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

func (*ProductQuantizer) ReturnDistancer added in v1.19.6

func (pq *ProductQuantizer) ReturnDistancer(d *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 byte) []float32

func (*TileEncoder) Encode

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

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