Documentation
¶
Index ¶
- type IVFIndex
- func (idx *IVFIndex) Add(vec simd.Vec512, scale float32, id int)
- func (idx *IVFIndex) AddBatch(vectors []simd.Vec512, scales []float32, ids []int)
- func (idx *IVFIndex) GetListSizes() []int
- func (idx *IVFIndex) Search(query *simd.Vec512, k int) []flat.SearchResult
- func (idx *IVFIndex) SearchWithStats(query *simd.Vec512, k int) ([]flat.SearchResult, SearchStats)
- func (idx *IVFIndex) SetNProbe(nprobe int)
- func (idx *IVFIndex) Size() int
- func (idx *IVFIndex) Train(vectors []simd.Vec512, scales []float32)
- type IVFIndexOptimized
- func (idx *IVFIndexOptimized) Add(vec simd.Vec512, scale float32, id int)
- func (idx *IVFIndexOptimized) AddBatchOptimized(vectors []simd.Vec512, scales []float32, ids []int)
- func (idx *IVFIndexOptimized) GetIndexStats() IndexStats
- func (idx *IVFIndexOptimized) GetListSizes() []int
- func (idx *IVFIndexOptimized) GetMemoryUsage() int64
- func (idx *IVFIndexOptimized) SearchOptimized(query *simd.Vec512, k int) []flat.SearchResult
- func (idx *IVFIndexOptimized) SearchOptimizedWithStats(query *simd.Vec512, k int) ([]flat.SearchResult, SearchStats)
- func (idx *IVFIndexOptimized) SetNProbe(nprobe int)
- func (idx *IVFIndexOptimized) Size() int
- func (idx *IVFIndexOptimized) Train(vectors []simd.Vec512, scales []float32)
- type IndexStats
- type KMeans
- type KMeansOptimized
- type SearchStats
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type IVFIndex ¶
type IVFIndex struct {
NList int // Number of inverted lists
NProbe int // Number of lists to search
KMeans *KMeans // K-means clusterer for routing
Lists [][]int // Inverted lists (vector indices)
Vectors []simd.Vec512 // All vectors
Scales []float32 // Vector scales
IDs []int // External IDs
ListLocks []sync.RWMutex // Per-list locks for concurrent access
Trained bool
}
IVFIndex is an inverted file index for approximate search
func NewIVFIndex ¶
NewIVFIndex creates a new IVF index
func (*IVFIndex) GetListSizes ¶
GetListSizes returns the size of each inverted list
func (*IVFIndex) SearchWithStats ¶
func (idx *IVFIndex) SearchWithStats(query *simd.Vec512, k int) ([]flat.SearchResult, SearchStats)
SearchWithStats performs search and returns statistics
type IVFIndexOptimized ¶
type IVFIndexOptimized struct {
NList int // Number of inverted lists
NProbe int // Number of lists to search
KMeans *KMeansOptimized // Optimized K-means clusterer for routing
Lists [][]int // Inverted lists (vector indices)
Vectors []simd.Vec512 // All vectors
Scales []float32 // Vector scales
IDs []int // External IDs
ListLocks []sync.RWMutex // Per-list locks for concurrent access
Trained bool
// contains filtered or unexported fields
}
IVFIndexOptimized is an optimized inverted file index for approximate search
func NewIVFIndexOptimized ¶
func NewIVFIndexOptimized(nlist, nprobe int) *IVFIndexOptimized
NewIVFIndexOptimized creates a new optimized IVF index
func (*IVFIndexOptimized) Add ¶
func (idx *IVFIndexOptimized) Add(vec simd.Vec512, scale float32, id int)
Add adds a vector to the index (optimized with SIMD distance computation)
func (*IVFIndexOptimized) AddBatchOptimized ¶
func (idx *IVFIndexOptimized) AddBatchOptimized(vectors []simd.Vec512, scales []float32, ids []int)
AddBatchOptimized adds multiple vectors with enhanced batching optimizations
func (*IVFIndexOptimized) GetIndexStats ¶
func (idx *IVFIndexOptimized) GetIndexStats() IndexStats
GetIndexStats returns comprehensive index statistics
func (*IVFIndexOptimized) GetListSizes ¶
func (idx *IVFIndexOptimized) GetListSizes() []int
GetListSizes returns the size of each inverted list
func (*IVFIndexOptimized) GetMemoryUsage ¶
func (idx *IVFIndexOptimized) GetMemoryUsage() int64
GetMemoryUsage estimates memory usage in bytes
func (*IVFIndexOptimized) SearchOptimized ¶
func (idx *IVFIndexOptimized) SearchOptimized(query *simd.Vec512, k int) []flat.SearchResult
SearchOptimized performs optimized approximate search
func (*IVFIndexOptimized) SearchOptimizedWithStats ¶
func (idx *IVFIndexOptimized) SearchOptimizedWithStats(query *simd.Vec512, k int) ([]flat.SearchResult, SearchStats)
SearchOptimizedWithStats performs optimized search and returns statistics
func (*IVFIndexOptimized) SetNProbe ¶
func (idx *IVFIndexOptimized) SetNProbe(nprobe int)
SetNProbe updates the number of lists to search
func (*IVFIndexOptimized) Size ¶
func (idx *IVFIndexOptimized) Size() int
Size returns the number of vectors in the index
type IndexStats ¶
type IndexStats struct {
TotalVectors int
NumLists int
MinListSize int
MaxListSize int
AvgListSize float64
ListImbalance float64 // Higher = more imbalanced
MemoryUsage int64 // Bytes
TrainingVectors int
}
IndexStats contains comprehensive index statistics
type KMeans ¶
type KMeans struct {
K int // Number of clusters
MaxIters int // Maximum iterations
Centroids []simd.Vec512 // Cluster centroids (quantized)
Scales []float32 // Centroid scales for dequantization
Counts []int // Number of points per cluster
}
KMeans performs k-means clustering on int8 vectors
type KMeansOptimized ¶
type KMeansOptimized struct {
K int // Number of clusters
MaxIters int // Maximum iterations
Centroids []simd.Vec512 // Cluster centroids (quantized)
Scales []float32 // Centroid scales for dequantization
Counts []int // Number of points per cluster
// contains filtered or unexported fields
}
KMeansOptimized is an optimized k-means implementation with better memory management and SIMD-accelerated distance computations
func NewKMeansOptimized ¶
func NewKMeansOptimized(k int, maxIters int) *KMeansOptimized
NewKMeansOptimized creates a new optimized k-means clusterer
func (*KMeansOptimized) Fit ¶
func (km *KMeansOptimized) Fit(vectors []simd.Vec512, scales []float32)
Fit trains k-means on the given vectors with optimizations
func (*KMeansOptimized) Predict ¶
func (km *KMeansOptimized) Predict(vec *simd.Vec512) int
Predict returns the cluster assignment for a query vector (SIMD optimized)
func (*KMeansOptimized) PredictMultiple ¶
func (km *KMeansOptimized) PredictMultiple(vec *simd.Vec512, nprobe int) []int
PredictMultiple returns the nprobe nearest clusters for a query (optimized)
type SearchStats ¶
SearchStats contains search statistics