Documentation
¶
Index ¶
- func Concurrently(n uint64, action Action)
- func ExtractCode8(encoded []byte, index int) byte
- func PutCode8(code byte, buffer []byte, index int)
- type Action
- type BQDistancer
- type BinaryQuantizer
- func (bq *BinaryQuantizer) CompressedBytes(compressed []uint64) []byte
- func (bq *BinaryQuantizer) DistanceBetweenCompressedAndUncompressedVectors(x []float32, y []uint64) (float32, error)
- func (bq BinaryQuantizer) DistanceBetweenCompressedVectors(x, y []uint64) (float32, error)
- func (bq BinaryQuantizer) Encode(vec []float32) []uint64
- func (bq *BinaryQuantizer) ExposeFields() PQData
- func (bq *BinaryQuantizer) FromCompressedBytes(compressed []byte) []uint64
- func (bq *BinaryQuantizer) NewCompressedQuantizerDistancer(a []uint64) quantizerDistancer[uint64]
- func (bq *BinaryQuantizer) NewDistancer(a []float32) *BQDistancer
- func (bq *BinaryQuantizer) NewQuantizerDistancer(vec []float32) quantizerDistancer[uint64]
- func (bq *BinaryQuantizer) ReturnQuantizerDistancer(distancer quantizerDistancer[uint64])
- type Centroid
- type CompressionDistanceBag
- type CompressorDistancer
- type DLUTPool
- type DistanceLookUpTable
- type Encoder
- type EncoderDistribution
- type FilterFunc
- type KMeans
- func (m *KMeans) Add(x []float32)
- func (m *KMeans) Center(point []float32) []float32
- func (m *KMeans) Centers() [][]float32
- func (m *KMeans) Centroid(i byte) []float32
- func (m *KMeans) Encode(point []float32) byte
- func (m *KMeans) ExposeDataForRestore() []byte
- func (m *KMeans) Fit(data [][]float32) error
- func (m *KMeans) NNearest(point []float32, n int) []uint64
- func (m *KMeans) Nearest(point []float32) uint64
- func (k *KMeans) String() string
- type KMeansPartitionData
- type PQData
- type PQDistancer
- type PQEncoder
- type ProductQuantizer
- func (pq *ProductQuantizer) CenterAt(vec []float32) *DistanceLookUpTable
- func (pq *ProductQuantizer) CompressedBytes(compressed []byte) []byte
- func (pq *ProductQuantizer) Decode(code []byte) []float32
- func (pq *ProductQuantizer) Distance(encoded []byte, lut *DistanceLookUpTable) float32
- func (pq *ProductQuantizer) DistanceBetweenCompressedAndUncompressedVectors(x []float32, encoded []byte) (float32, error)
- func (pq *ProductQuantizer) DistanceBetweenCompressedVectors(x, y []byte) (float32, error)
- func (pq *ProductQuantizer) Encode(vec []float32) []byte
- func (pq *ProductQuantizer) ExposeFields() PQData
- func (pq *ProductQuantizer) Fit(data [][]float32) error
- func (pq *ProductQuantizer) FromCompressedBytes(compressed []byte) []byte
- func (pq *ProductQuantizer) NewCompressedQuantizerDistancer(a []byte) quantizerDistancer[byte]
- func (pq *ProductQuantizer) NewDistancer(a []float32) *PQDistancer
- func (pq *ProductQuantizer) NewQuantizerDistancer(vec []float32) quantizerDistancer[byte]
- func (pq *ProductQuantizer) ReturnDistancer(d *PQDistancer)
- func (pq *ProductQuantizer) ReturnQuantizerDistancer(distancer quantizerDistancer[byte])
- type ReturnDistancerFn
- type TileEncoder
- type VectorCompressor
- func NewBQCompressor(distance distancer.Provider, vectorCacheMaxObjects int, ...) (VectorCompressor, error)
- func NewHNSWPQCompressor(cfg hnsw.PQConfig, distance distancer.Provider, dimensions int, ...) (VectorCompressor, error)
- func RestoreHNSWPQCompressor(cfg hnsw.PQConfig, distance distancer.Provider, dimensions int, ...) (VectorCompressor, error)
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func Concurrently ¶
func ExtractCode8 ¶
Only made public for testing purposes... Not sure we need it outside
Types ¶
type BQDistancer ¶
type BQDistancer struct {
// contains filtered or unexported fields
}
func (*BQDistancer) DistanceToFloat ¶
func (d *BQDistancer) DistanceToFloat(x []float32) (float32, error)
type BinaryQuantizer ¶
type BinaryQuantizer struct {
// contains filtered or unexported fields
}
func NewBinaryQuantizer ¶
func NewBinaryQuantizer(distancer distancer.Provider) BinaryQuantizer
func (*BinaryQuantizer) CompressedBytes ¶
func (bq *BinaryQuantizer) CompressedBytes(compressed []uint64) []byte
func (*BinaryQuantizer) DistanceBetweenCompressedAndUncompressedVectors ¶
func (bq *BinaryQuantizer) DistanceBetweenCompressedAndUncompressedVectors(x []float32, y []uint64) (float32, error)
func (BinaryQuantizer) DistanceBetweenCompressedVectors ¶
func (bq BinaryQuantizer) DistanceBetweenCompressedVectors(x, y []uint64) (float32, error)
func (BinaryQuantizer) Encode ¶
func (bq BinaryQuantizer) Encode(vec []float32) []uint64
func (*BinaryQuantizer) ExposeFields ¶
func (bq *BinaryQuantizer) ExposeFields() PQData
func (*BinaryQuantizer) FromCompressedBytes ¶
func (bq *BinaryQuantizer) FromCompressedBytes(compressed []byte) []uint64
func (*BinaryQuantizer) NewCompressedQuantizerDistancer ¶
func (bq *BinaryQuantizer) NewCompressedQuantizerDistancer(a []uint64) quantizerDistancer[uint64]
func (*BinaryQuantizer) NewDistancer ¶
func (bq *BinaryQuantizer) NewDistancer(a []float32) *BQDistancer
func (*BinaryQuantizer) NewQuantizerDistancer ¶
func (bq *BinaryQuantizer) NewQuantizerDistancer(vec []float32) quantizerDistancer[uint64]
func (*BinaryQuantizer) ReturnQuantizerDistancer ¶
func (bq *BinaryQuantizer) ReturnQuantizerDistancer(distancer quantizerDistancer[uint64])
type CompressionDistanceBag ¶
type CompressorDistancer ¶
type DLUTPool ¶
type DLUTPool struct {
// contains filtered or unexported fields
}
func NewDLUTPool ¶
func NewDLUTPool() *DLUTPool
func (*DLUTPool) Get ¶
func (p *DLUTPool) Get(segments, centroids int, centers []float32) *DistanceLookUpTable
func (*DLUTPool) Return ¶
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
type EncoderDistribution ¶
type EncoderDistribution byte
const ( NormalEncoderDistribution EncoderDistribution = 0 LogNormalEncoderDistribution EncoderDistribution = 1 )
type FilterFunc ¶
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 NewKMeansWithCenters ¶
func (*KMeans) ExposeDataForRestore ¶
type KMeansPartitionData ¶
type KMeansPartitionData struct {
// contains filtered or unexported fields
}
type PQDistancer ¶
type PQDistancer struct {
// contains filtered or unexported fields
}
func (*PQDistancer) DistanceToFloat ¶
func (d *PQDistancer) DistanceToFloat(x []float32) (float32, error)
type ProductQuantizer ¶
type ProductQuantizer struct {
// contains filtered or unexported fields
}
func NewProductQuantizer ¶
func (*ProductQuantizer) CenterAt ¶
func (pq *ProductQuantizer) CenterAt(vec []float32) *DistanceLookUpTable
func (*ProductQuantizer) CompressedBytes ¶
func (pq *ProductQuantizer) CompressedBytes(compressed []byte) []byte
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, error)
func (*ProductQuantizer) DistanceBetweenCompressedVectors ¶
func (pq *ProductQuantizer) DistanceBetweenCompressedVectors(x, y []byte) (float32, error)
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) error
func (*ProductQuantizer) FromCompressedBytes ¶
func (pq *ProductQuantizer) FromCompressedBytes(compressed []byte) []byte
func (*ProductQuantizer) NewCompressedQuantizerDistancer ¶
func (pq *ProductQuantizer) NewCompressedQuantizerDistancer(a []byte) quantizerDistancer[byte]
func (*ProductQuantizer) NewDistancer ¶
func (pq *ProductQuantizer) NewDistancer(a []float32) *PQDistancer
func (*ProductQuantizer) NewQuantizerDistancer ¶
func (pq *ProductQuantizer) NewQuantizerDistancer(vec []float32) quantizerDistancer[byte]
func (*ProductQuantizer) ReturnDistancer ¶
func (pq *ProductQuantizer) ReturnDistancer(d *PQDistancer)
func (*ProductQuantizer) ReturnQuantizerDistancer ¶
func (pq *ProductQuantizer) ReturnQuantizerDistancer(distancer quantizerDistancer[byte])
type ReturnDistancerFn ¶
type ReturnDistancerFn func()
type TileEncoder ¶
type TileEncoder struct {
// contains filtered or unexported fields
}
func NewTileEncoder ¶
func NewTileEncoder(bits int, segment int, encoderDistribution EncoderDistribution) *TileEncoder
func RestoreTileEncoder ¶
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
type VectorCompressor ¶
type VectorCompressor interface { Drop() error GrowCache(size uint64) SetCacheMaxSize(size int64) GetCacheMaxSize() int64 Delete(ctx context.Context, id uint64) Preload(id uint64, vector []float32) Prefetch(id uint64) PrefillCache() DistanceBetweenCompressedVectorsFromIDs(ctx context.Context, x, y uint64) (float32, error) DistanceBetweenCompressedAndUncompressedVectorsFromID(ctx context.Context, x uint64, y []float32) (float32, error) NewDistancer(vector []float32) (CompressorDistancer, ReturnDistancerFn) NewDistancerFromID(id uint64) (CompressorDistancer, error) NewBag() CompressionDistanceBag ExposeFields() PQData }
func NewBQCompressor ¶
func NewBQCompressor( distance distancer.Provider, vectorCacheMaxObjects int, logger logrus.FieldLogger, store *lsmkv.Store, allocChecker memwatch.AllocChecker, ) (VectorCompressor, error)
func NewHNSWPQCompressor ¶ added in v1.24.1
func NewHNSWPQCompressor( cfg hnsw.PQConfig, distance distancer.Provider, dimensions int, vectorCacheMaxObjects int, logger logrus.FieldLogger, data [][]float32, store *lsmkv.Store, allocChecker memwatch.AllocChecker, ) (VectorCompressor, error)
func RestoreHNSWPQCompressor ¶ added in v1.24.1
func RestoreHNSWPQCompressor( cfg hnsw.PQConfig, distance distancer.Provider, dimensions int, vectorCacheMaxObjects int, logger logrus.FieldLogger, encoders []PQEncoder, store *lsmkv.Store, allocChecker memwatch.AllocChecker, ) (VectorCompressor, error)
Click to show internal directories.
Click to hide internal directories.