pq

package
v1.0.2 Latest Latest
Warning

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

Go to latest
Published: Feb 11, 2026 License: MIT Imports: 2 Imported by: 0

Documentation

Index

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

func (*ADCTable) Distance

func (table *ADCTable) Distance(codes []uint8) float32

ADCDistance computes distance using precomputed ADC table

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 PQCode

type PQCode struct {
	ID    int
	Codes []uint8
}

PQCode represents a product quantized vector

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

type SearchResult struct {
	ID    int
	Score float32
}

SearchResult represents a search result

Jump to

Keyboard shortcuts

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