quantization

package
v2.13.0 Latest Latest
Warning

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

Go to latest
Published: Mar 20, 2026 License: MIT Imports: 8 Imported by: 0

Documentation

Overview

Package quantization provides vector compression techniques

Package quantization - Scalar and Binary Quantization

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type BinaryQuantizer

type BinaryQuantizer struct {
	Dimension int
	Threshold []float32 // Threshold per dimension
	Trained   bool
}

BinaryQuantizer implements binary quantization (1-bit vectors)

func NewBinaryQuantizer

func NewBinaryQuantizer(dimension int) *BinaryQuantizer

NewBinaryQuantizer creates a new binary quantizer

func (*BinaryQuantizer) CompressionRatio

func (bq *BinaryQuantizer) CompressionRatio() float32

CompressionRatio returns the compression ratio for binary quantization

func (*BinaryQuantizer) Decode

func (bq *BinaryQuantizer) Decode(encoded []byte) ([]float32, error)

Decode reconstructs a vector from binary encoding

func (*BinaryQuantizer) Encode

func (bq *BinaryQuantizer) Encode(vector []float32) ([]byte, error)

Encode binarizes a vector

func (*BinaryQuantizer) HammingDistance

func (bq *BinaryQuantizer) HammingDistance(a, b []byte) int

HammingDistance computes Hamming distance between binary vectors

func (*BinaryQuantizer) Load

func (bq *BinaryQuantizer) Load(r io.Reader) error

Load deserializes the quantizer

func (*BinaryQuantizer) Save

func (bq *BinaryQuantizer) Save(w io.Writer) error

Save serializes the quantizer

func (*BinaryQuantizer) SearchBinary

func (bq *BinaryQuantizer) SearchBinary(query []byte, database [][]byte, topK int) ([]int, []int)

SearchBinary performs fast binary search using Hamming distance

func (*BinaryQuantizer) Train

func (bq *BinaryQuantizer) Train(vectors [][]float32) error

Train learns thresholds from training data

type OptimizedBinaryQuantizer

type OptimizedBinaryQuantizer struct {
	BinaryQuantizer
	Projections [][]float32 // Random projections for LSH
}

OptimizedBinaryQuantizer with learned projections

func NewOptimizedBinaryQuantizer

func NewOptimizedBinaryQuantizer(inputDim, outputDim int) *OptimizedBinaryQuantizer

NewOptimizedBinaryQuantizer creates an optimized binary quantizer with LSH

func (*OptimizedBinaryQuantizer) Project

func (obq *OptimizedBinaryQuantizer) Project(vector []float32) []float32

Project applies random projections before binarization

type ProductQuantizer

type ProductQuantizer struct {
	M         int           // Number of subspaces
	K         int           // Number of centroids per subspace
	D         int           // Original dimension
	SubDim    int           // Dimension per subspace (D/M)
	Codebooks [][][]float32 // M codebooks, each K x SubDim
	Trained   bool
	TrainSize int
}

ProductQuantizer implements Product Quantization for vector compression

func NewProductQuantizer

func NewProductQuantizer(dimension, numSubspaces, numCentroids int) (*ProductQuantizer, error)

NewProductQuantizer creates a new PQ instance

func (*ProductQuantizer) CompressionRatio

func (pq *ProductQuantizer) CompressionRatio() float32

CompressionRatio returns the compression ratio achieved by PQ

func (*ProductQuantizer) ComputeDistance

func (pq *ProductQuantizer) ComputeDistance(codes []byte, query []float32) (float32, error)

ComputeDistance computes approximate distance between PQ codes and a query vector

func (*ProductQuantizer) Decode

func (pq *ProductQuantizer) Decode(codes []byte) ([]float32, error)

Decode reconstructs a vector from PQ codes

func (*ProductQuantizer) DeserializeCodebooks

func (pq *ProductQuantizer) DeserializeCodebooks(data []byte) error

DeserializeCodebooks loads codebooks from bytes

func (*ProductQuantizer) Encode

func (pq *ProductQuantizer) Encode(vector []float32) ([]byte, error)

Encode compresses a vector to PQ codes

func (*ProductQuantizer) SearchPQ

func (pq *ProductQuantizer) SearchPQ(query []float32, codes [][]byte, topK int) ([]int, []float32)

SearchPQ performs approximate nearest neighbor search on PQ-compressed vectors

func (*ProductQuantizer) SerializeCodebooks

func (pq *ProductQuantizer) SerializeCodebooks() []byte

SerializeCodebooks serializes codebooks to bytes for storage

func (*ProductQuantizer) Train

func (pq *ProductQuantizer) Train(vectors [][]float32) error

Train learns the codebooks from training data

type ScalarQuantizer

type ScalarQuantizer struct {
	Dimension int
	Min       []float32 // Min value per dimension
	Max       []float32 // Max value per dimension
	NBits     int       // Bits per component (1-8)
	Trained   bool
}

ScalarQuantizer implements scalar quantization for vector compression

func NewScalarQuantizer

func NewScalarQuantizer(dimension int, nbits int) (*ScalarQuantizer, error)

NewScalarQuantizer creates a new scalar quantizer

func (*ScalarQuantizer) CompressionRatio

func (sq *ScalarQuantizer) CompressionRatio() float32

CompressionRatio returns the compression ratio

func (*ScalarQuantizer) Decode

func (sq *ScalarQuantizer) Decode(encoded []byte) ([]float32, error)

Decode reconstructs a vector from quantized bytes

func (*ScalarQuantizer) Encode

func (sq *ScalarQuantizer) Encode(vector []float32) ([]byte, error)

Encode quantizes a vector to bytes

func (*ScalarQuantizer) Load

func (sq *ScalarQuantizer) Load(r io.Reader) error

Load deserializes the quantizer

func (*ScalarQuantizer) Save

func (sq *ScalarQuantizer) Save(w io.Writer) error

Save serializes the quantizer

func (*ScalarQuantizer) Train

func (sq *ScalarQuantizer) Train(vectors [][]float32) error

Train learns the value ranges from training data

Jump to

Keyboard shortcuts

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