Documentation
¶
Index ¶
- Constants
- type VectorIndexCache
- func (c *VectorIndexCache) Destroy()
- func (c *VectorIndexCache) HouseKeeping()
- func (c *VectorIndexCache) Once()
- func (c *VectorIndexCache) Remove(key string)
- func (c *VectorIndexCache) Search(sqlproc *sqlexec.SqlProcess, key string, newalgo VectorIndexSearchIf, ...) (keys any, distances []float64, err error)
- type VectorIndexSearch
- func (s *VectorIndexSearch) Destroy()
- func (s *VectorIndexSearch) Expired() bool
- func (s *VectorIndexSearch) Load(sqlproc *sqlexec.SqlProcess) error
- func (s *VectorIndexSearch) Search(sqlproc *sqlexec.SqlProcess, newalgo VectorIndexSearchIf, query any, ...) (keys any, distances []float64, err error)
- type VectorIndexSearchIf
Constants ¶
View Source
const ( STATUS_NOT_INIT = 0 STATUS_LOADED = 1 STATUS_DESTROYED = 2 STATUS_ERROR = 3 )
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type VectorIndexCache ¶
type VectorIndexCache struct {
IndexMap sync.Map
TickerInterval time.Duration
// contains filtered or unexported fields
}
implementation of VectorIndexCache
var ( VectorIndexCacheTTL time.Duration = 5 * time.Minute Cache *VectorIndexCache = NewVectorIndexCache() )
func NewVectorIndexCache ¶
func NewVectorIndexCache() *VectorIndexCache
func (*VectorIndexCache) HouseKeeping ¶
func (c *VectorIndexCache) HouseKeeping()
house keeping to check expired keys and delete from cache
func (*VectorIndexCache) Once ¶
func (c *VectorIndexCache) Once()
initialize the Cache and only call once
func (*VectorIndexCache) Remove ¶
func (c *VectorIndexCache) Remove(key string)
remove key from cache
func (*VectorIndexCache) Search ¶
func (c *VectorIndexCache) Search(sqlproc *sqlexec.SqlProcess, key string, newalgo VectorIndexSearchIf, query any, rt vectorindex.RuntimeConfig) (keys any, distances []float64, err error)
Get index from cache and return VectorIndexSearchIf interface
type VectorIndexSearch ¶
type VectorIndexSearch struct {
Mutex sync.RWMutex
ExpireAt atomic.Int64
LastUpdate atomic.Int64
Status atomic.Int32 // 0 - NOT INIT, 1 - LOADED, 2 - marked as outdated, 3 - DESTROYED, 4 or above ERRCODE
Outdated atomic.Bool
Algo VectorIndexSearchIf
Cond *sync.Cond // NOTE: this is RWCond. Wait() will use mutex.RLock() and mutex.RUnlock()
}
base VectorIndex Search structure for VectorIndexSearchIf (see HnswSearch)
func (*VectorIndexSearch) Destroy ¶
func (s *VectorIndexSearch) Destroy()
func (*VectorIndexSearch) Expired ¶
func (s *VectorIndexSearch) Expired() bool
func (*VectorIndexSearch) Load ¶
func (s *VectorIndexSearch) Load(sqlproc *sqlexec.SqlProcess) error
func (*VectorIndexSearch) Search ¶
func (s *VectorIndexSearch) Search(sqlproc *sqlexec.SqlProcess, newalgo VectorIndexSearchIf, query any, rt vectorindex.RuntimeConfig) (keys any, distances []float64, err error)
type VectorIndexSearchIf ¶
type VectorIndexSearchIf interface {
Search(proc *sqlexec.SqlProcess, query any, rt vectorindex.RuntimeConfig) (keys any, distances []float64, err error)
// SearchFloat32 writes results into caller-provided slices to avoid heap allocation.
// outKeys and outDists must be pre-allocated to nQueries*rt.Limit elements.
// GPU implementations write float32 distances directly; CPU implementations convert on write.
SearchFloat32(proc *sqlexec.SqlProcess, query any, rt vectorindex.RuntimeConfig, outKeys []int64, outDists []float32) error
Load(*sqlexec.SqlProcess) error
UpdateConfig(VectorIndexSearchIf) error
Destroy()
}
Various vector index algorithm wants to share with VectorIndexCache need to implement VectorIndexSearchIf interface (see HnswSearch)
Click to show internal directories.
Click to hide internal directories.