Documentation
¶
Overview ¶
Package quantization provides vector compression techniques
Package quantization - Scalar and Binary Quantization
Index ¶
- type BinaryQuantizer
- func (bq *BinaryQuantizer) CompressionRatio() float32
- func (bq *BinaryQuantizer) Decode(encoded []byte) ([]float32, error)
- func (bq *BinaryQuantizer) Encode(vector []float32) ([]byte, error)
- func (bq *BinaryQuantizer) HammingDistance(a, b []byte) int
- func (bq *BinaryQuantizer) Load(r io.Reader) error
- func (bq *BinaryQuantizer) Save(w io.Writer) error
- func (bq *BinaryQuantizer) SearchBinary(query []byte, database [][]byte, topK int) ([]int, []int)
- func (bq *BinaryQuantizer) Train(vectors [][]float32) error
- type OptimizedBinaryQuantizer
- type ProductQuantizer
- func (pq *ProductQuantizer) CompressionRatio() float32
- func (pq *ProductQuantizer) ComputeDistance(codes []byte, query []float32) (float32, error)
- func (pq *ProductQuantizer) Decode(codes []byte) ([]float32, error)
- func (pq *ProductQuantizer) DeserializeCodebooks(data []byte) error
- func (pq *ProductQuantizer) Encode(vector []float32) ([]byte, error)
- func (pq *ProductQuantizer) SearchPQ(query []float32, codes [][]byte, topK int) ([]int, []float32)
- func (pq *ProductQuantizer) SerializeCodebooks() []byte
- func (pq *ProductQuantizer) Train(vectors [][]float32) error
- type ScalarQuantizer
- func (sq *ScalarQuantizer) CompressionRatio() float32
- func (sq *ScalarQuantizer) Decode(encoded []byte) ([]float32, error)
- func (sq *ScalarQuantizer) Encode(vector []float32) ([]byte, error)
- func (sq *ScalarQuantizer) Load(r io.Reader) error
- func (sq *ScalarQuantizer) Save(w io.Writer) error
- func (sq *ScalarQuantizer) Train(vectors [][]float32) error
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 ¶
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 ¶
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