Documentation
¶
Index ¶
- type ADCTable
- type EncodedIndex
- type PQCode
- type ProductQuantizer
- func (pq *ProductQuantizer) ComputeADCTable(query []float32) *ADCTable
- func (pq *ProductQuantizer) ComputeDistance(codes []uint8, query []float32) float32
- func (pq *ProductQuantizer) Decode(codes []uint8) []float32
- func (pq *ProductQuantizer) Encode(vec []float32) []uint8
- func (pq *ProductQuantizer) EncodeBatch(vectors [][]float32) [][]uint8
- func (pq *ProductQuantizer) Train(vectors [][]float32)
- type SearchResult
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type ADCTable ¶
type ADCTable struct {
Distances [][]float32 // [M][KSub] distances
}
ADCTable stores precomputed distances for Asymmetric Distance Computation
type EncodedIndex ¶
type EncodedIndex struct {
PQ *ProductQuantizer
Codes []PQCode
}
EncodedIndex stores PQ-encoded vectors for search
func NewEncodedIndex ¶
func NewEncodedIndex(pq *ProductQuantizer) *EncodedIndex
NewEncodedIndex creates a new PQ-encoded index
func (*EncodedIndex) Add ¶
func (idx *EncodedIndex) Add(id int, codes []uint8)
Add adds a PQ-encoded vector to the index
func (*EncodedIndex) Search ¶
func (idx *EncodedIndex) Search(query []float32, k int) []SearchResult
Search performs approximate search using ADC
type ProductQuantizer ¶
type ProductQuantizer struct {
M int // Number of subquantizers
KSub int // Codebook size per subquantizer (typically 256 for 8-bit)
D int // Vector dimension
DSub int // Dimension per subquantizer
Codebooks [][][]float32 // Codebooks[m][k][d] - m subquantizers, k codes, d dims
Trained bool
}
ProductQuantizer performs product quantization on vectors
func NewProductQuantizer ¶
func NewProductQuantizer(d, m, ksub int) *ProductQuantizer
NewProductQuantizer creates a new product quantizer
func (*ProductQuantizer) ComputeADCTable ¶
func (pq *ProductQuantizer) ComputeADCTable(query []float32) *ADCTable
ComputeADCTable precomputes distance table for a query
func (*ProductQuantizer) ComputeDistance ¶
func (pq *ProductQuantizer) ComputeDistance(codes []uint8, query []float32) float32
ComputeDistance computes approximate distance between PQ codes and a query
func (*ProductQuantizer) Decode ¶
func (pq *ProductQuantizer) Decode(codes []uint8) []float32
Decode reconstructs a vector from PQ codes
func (*ProductQuantizer) Encode ¶
func (pq *ProductQuantizer) Encode(vec []float32) []uint8
Encode encodes a vector into PQ codes
func (*ProductQuantizer) EncodeBatch ¶
func (pq *ProductQuantizer) EncodeBatch(vectors [][]float32) [][]uint8
EncodeBatch encodes multiple vectors efficiently
func (*ProductQuantizer) Train ¶
func (pq *ProductQuantizer) Train(vectors [][]float32)
Train trains the product quantizer on a set of vectors
type SearchResult ¶
SearchResult represents a search result