Documentation
¶
Index ¶
- Constants
- func CheckSupportedPropertyIndexType(indexType PropertyIndexType)
- func IsIndexTypeSupportedByStrategy(indexType PropertyIndexType, strategy string) bool
- func IsSupportedPropertyIndexType(indexType PropertyIndexType) bool
- type BackupState
- type Config
- type DB
- func (db *DB) AbortReplication(class, shard, requestID string) interface{}
- func (db *DB) AddBatchReferences(ctx context.Context, references objects.BatchReferences, ...) (objects.BatchReferences, error)
- func (db *DB) AddReference(ctx context.Context, className string, source strfmt.UUID, propName string, ...) error
- func (db *DB) Aggregate(ctx context.Context, params aggregation.Params) (*aggregation.Result, error)
- func (db *DB) AggregateNeighbors(ctx context.Context, vector []float32, class string, properties []string, ...) ([]classification.NeighborRef, error)
- func (db *DB) BackupDescriptors(ctx context.Context, bakid string, classes []string) <-chan backup.ClassDescriptor
- func (db *DB) Backupable(ctx context.Context, classes []string) error
- func (db *DB) BatchDeleteObjects(ctx context.Context, params objects.BatchDeleteParams, ...) (objects.BatchDeleteResult, error)
- func (db *DB) BatchPutObjects(ctx context.Context, objs objects.BatchObjects, ...) (objects.BatchObjects, error)
- func (db *DB) ClassExists(name string) bool
- func (db *DB) ClassObjectSearch(ctx context.Context, params dto.GetParams) ([]*storobj.Object, []float32, error)
- func (db *DB) ClassObjectVectorSearch(ctx context.Context, class string, vector []float32, offset int, limit int, ...) ([]*storobj.Object, []float32, error)
- func (db *DB) ClassSearch(ctx context.Context, params dto.GetParams) ([]search.Result, error)
- func (db *DB) ClassVectorSearch(ctx context.Context, class string, vector []float32, offset, limit int, ...) ([]search.Result, error)
- func (db *DB) CommitReplication(class, shard, requestID string) interface{}
- func (db *DB) DeleteIndex(className schema.ClassName) error
- func (db *DB) DeleteObject(ctx context.Context, class string, id strfmt.UUID, ...) error
- func (db *DB) DigestObjects(ctx context.Context, class, shardName string, ids []strfmt.UUID) (result []replica.RepairResponse, err error)
- func (db *DB) Exists(ctx context.Context, class string, id strfmt.UUID, ...) (bool, error)
- func (db *DB) FetchObject(ctx context.Context, class, shardName string, id strfmt.UUID) (objects.Replica, error)
- func (db *DB) FetchObjects(ctx context.Context, class, shardName string, ids []strfmt.UUID) ([]objects.Replica, error)
- func (db *DB) GetIndex(className schema.ClassName) *Index
- func (db *DB) GetIndexForIncoming(className schema.ClassName) sharding.RemoteIndexIncomingRepo
- func (db *DB) GetNodeStatuses(ctx context.Context) ([]*models.NodeStatus, error)
- func (db *DB) GetQueryMaximumResults() int
- func (db *DB) GetUnclassified(ctx context.Context, class string, properties []string, ...) ([]search.Result, error)
- func (db *DB) IncomingGetNodeStatus(ctx context.Context) (*models.NodeStatus, error)
- func (db *DB) ListBackupable() []string
- func (db *DB) ListClasses(ctx context.Context) []string
- func (db *DB) Merge(ctx context.Context, merge objects.MergeDocument, ...) error
- func (db *DB) MultiGet(ctx context.Context, query []multi.Identifier, ...) ([]search.Result, error)
- func (db *DB) Object(ctx context.Context, class string, id strfmt.UUID, ...) (*search.Result, error)
- func (db *DB) ObjectByID(ctx context.Context, id strfmt.UUID, props search.SelectProperties, ...) (*search.Result, error)
- func (db *DB) ObjectSearch(ctx context.Context, offset, limit int, filters *filters.LocalFilter, ...) (search.Results, error)
- func (db *DB) ObjectsByID(ctx context.Context, id strfmt.UUID, props search.SelectProperties, ...) (search.Results, error)
- func (db *DB) OverwriteObjects(ctx context.Context, class, shardName string, vobjects []*objects.VObject) ([]replica.RepairResponse, error)
- func (db *DB) PutObject(ctx context.Context, obj *models.Object, vector []float32, ...) error
- func (db *DB) Query(ctx context.Context, q *objects.QueryInput) (search.Results, *objects.Error)
- func (db *DB) ReleaseBackup(ctx context.Context, bakID, class string) error
- func (db *DB) ReplicateDeletion(ctx context.Context, class, shard, requestID string, uuid strfmt.UUID) replica.SimpleResponse
- func (db *DB) ReplicateDeletions(ctx context.Context, class, shard, requestID string, docIDs []uint64, ...) replica.SimpleResponse
- func (db *DB) ReplicateObject(ctx context.Context, class, shard, requestID string, object *storobj.Object) replica.SimpleResponse
- func (db *DB) ReplicateObjects(ctx context.Context, class, shard, requestID string, objects []*storobj.Object) replica.SimpleResponse
- func (db *DB) ReplicateReferences(ctx context.Context, class, shard, requestID string, ...) replica.SimpleResponse
- func (db *DB) ReplicateUpdate(ctx context.Context, class, shard, requestID string, ...) replica.SimpleResponse
- func (db *DB) ResolveReferences(ctx context.Context, objs search.Results, props search.SelectProperties, ...) (search.Results, error)
- func (db *DB) SetSchemaGetter(sg schemaUC.SchemaGetter)
- func (db *DB) Shards(ctx context.Context, class string) []string
- func (db *DB) ShardsBackup(ctx context.Context, bakID, class string, shards []string) (_ backup.ClassDescriptor, err error)
- func (db *DB) Shutdown(ctx context.Context) error
- func (db *DB) StartupComplete() bool
- func (db *DB) VectorClassSearch(ctx context.Context, params dto.GetParams) ([]search.Result, error)
- func (db *DB) VectorSearch(ctx context.Context, vector []float32, offset, limit int, ...) ([]search.Result, error)
- func (db *DB) WaitForStartup(ctx context.Context) error
- func (db *DB) ZeroShotSearch(ctx context.Context, vector []float32, class string, properties []string, ...) ([]search.Result, error)
- type Index
- func (i *Index) AbortReplication(shard, requestID string) interface{}
- func (i *Index) CommitReplication(shard, requestID string) interface{}
- func (i *Index) ID() string
- func (i *Index) IncomingAggregate(ctx context.Context, shardName string, params aggregation.Params) (*aggregation.Result, error)
- func (i *Index) IncomingBatchAddReferences(ctx context.Context, shardName string, refs objects.BatchReferences) []error
- func (i *Index) IncomingBatchPutObjects(ctx context.Context, shardName string, objects []*storobj.Object) []error
- func (i *Index) IncomingCreateShard(ctx context.Context, shardName string) error
- func (i *Index) IncomingDeleteObject(ctx context.Context, shardName string, id strfmt.UUID) error
- func (i *Index) IncomingDeleteObjectBatch(ctx context.Context, shardName string, docIDs []uint64, dryRun bool) objects.BatchSimpleObjects
- func (i *Index) IncomingDigestObjects(ctx context.Context, shardName string, ids []strfmt.UUID) (result []replica.RepairResponse, err error)
- func (i *Index) IncomingExists(ctx context.Context, shardName string, id strfmt.UUID) (bool, error)
- func (i *Index) IncomingFilePutter(ctx context.Context, shardName, filePath string) (io.WriteCloser, error)
- func (i *Index) IncomingFindDocIDs(ctx context.Context, shardName string, filters *filters.LocalFilter) ([]uint64, error)
- func (i *Index) IncomingGetObject(ctx context.Context, shardName string, id strfmt.UUID, ...) (*storobj.Object, error)
- func (i *Index) IncomingGetShardStatus(ctx context.Context, shardName string) (string, error)
- func (i *Index) IncomingMergeObject(ctx context.Context, shardName string, mergeDoc objects.MergeDocument) error
- func (i *Index) IncomingMultiGetObjects(ctx context.Context, shardName string, ids []strfmt.UUID) ([]*storobj.Object, error)
- func (i *Index) IncomingOverwriteObjects(ctx context.Context, shardName string, vobjects []*objects.VObject) ([]replica.RepairResponse, error)
- func (i *Index) IncomingPutObject(ctx context.Context, shardName string, object *storobj.Object) error
- func (i *Index) IncomingReinitShard(ctx context.Context, shardName string) error
- func (i *Index) IncomingSearch(ctx context.Context, shardName string, searchVector []float32, ...) ([]*storobj.Object, []float32, error)
- func (i *Index) IncomingUpdateShardStatus(ctx context.Context, shardName, targetStatus string) error
- func (i *Index) IterateObjects(ctx context.Context, ...) error
- func (i *Index) ReleaseBackup(ctx context.Context, id string) error
- func (i *Index) ReplicateDeletion(ctx context.Context, shard, requestID string, uuid strfmt.UUID) replica.SimpleResponse
- func (i *Index) ReplicateDeletions(ctx context.Context, shard, requestID string, docIDs []uint64, dryRun bool) replica.SimpleResponse
- func (i *Index) ReplicateObject(ctx context.Context, shard, requestID string, object *storobj.Object) replica.SimpleResponse
- func (i *Index) ReplicateObjects(ctx context.Context, shard, requestID string, objects []*storobj.Object) replica.SimpleResponse
- func (i *Index) ReplicateReferences(ctx context.Context, shard, requestID string, refs []objects.BatchReference) replica.SimpleResponse
- func (i *Index) ReplicateUpdate(ctx context.Context, shard, requestID string, doc *objects.MergeDocument) replica.SimpleResponse
- func (i *Index) Shutdown(ctx context.Context) error
- type IndexConfig
- type KnnAggregator
- type Metrics
- func (m *Metrics) BatchDelete(start time.Time, op string)
- func (m *Metrics) BatchObject(start time.Time, size int)
- func (m *Metrics) FilteredVectorFilter(dur time.Duration)
- func (m *Metrics) FilteredVectorObjects(dur time.Duration)
- func (m *Metrics) FilteredVectorSort(dur time.Duration)
- func (m *Metrics) FilteredVectorVector(dur time.Duration)
- func (m *Metrics) InvertedDeleteDelta(start time.Time)
- func (m *Metrics) InvertedDeleteOld(start time.Time)
- func (m *Metrics) InvertedExtend(start time.Time, propCount int)
- func (m *Metrics) ObjectStore(start time.Time)
- func (m *Metrics) PutObject(start time.Time)
- func (m *Metrics) PutObjectDetermineStatus(start time.Time)
- func (m *Metrics) PutObjectUpdateInverted(start time.Time)
- func (m *Metrics) PutObjectUpsertObject(start time.Time)
- func (m *Metrics) ShardStartup(start time.Time)
- func (m *Metrics) VectorIndex(start time.Time)
- type Migrator
- func (m *Migrator) AddClass(ctx context.Context, class *models.Class, shardState *sharding.State) error
- func (m *Migrator) AddProperty(ctx context.Context, className string, prop *models.Property) error
- func (m *Migrator) DropClass(ctx context.Context, className string) error
- func (m *Migrator) DropProperty(ctx context.Context, className string, propertyName string) error
- func (m *Migrator) GetShardsStatus(ctx context.Context, className string) (map[string]string, error)
- func (m *Migrator) InvertedReindex(ctx context.Context, taskNames ...string) error
- func (m *Migrator) RecalculateVectorDimensions(ctx context.Context) error
- func (m *Migrator) UpdateClass(ctx context.Context, className string, newClassName *string) error
- func (m *Migrator) UpdateInvertedIndexConfig(ctx context.Context, className string, updated *models.InvertedIndexConfig) error
- func (m *Migrator) UpdateProperty(ctx context.Context, className string, propName string, newName *string) error
- func (m *Migrator) UpdateShardStatus(ctx context.Context, className, shardName, targetStatus string) error
- func (m *Migrator) UpdateVectorIndexConfig(ctx context.Context, className string, updated schema.VectorIndexConfig) error
- func (m *Migrator) ValidateInvertedIndexConfigUpdate(ctx context.Context, old, updated *models.InvertedIndexConfig) error
- func (m *Migrator) ValidateVectorIndexConfigUpdate(ctx context.Context, old, updated schema.VectorIndexConfig) error
- type PropertyIndexType
- type ReindexableProperty
- type Replicator
- type Shard
- type ShardInvertedReindexTask
- type ShardInvertedReindexTaskSetToRoaringSet
- type ShardInvertedReindexer
- type VectorIndex
Constants ¶
const ( ShardCodeBaseVersion = uint16(2) ShardCodeBaseMinimumVersionForStartup = uint16(1) )
ShardCodeBaseVersion must be increased whenever there are breaking changes - including those that we can handle in a non-breaking way the version checker can then decide on init if it should prevent startup completely. If it does not prevent startup, but there is still a version mismatch, the version can be used to make specific decisions
CHANGELOG
- Version 1 - Everything up until Weaviate v1.10.1 inclusive
- Version 2 - Inverted Index is now stored in an always sorted fashion and doc ids are stored as BigEndian. To make this backward-compatible with v1, doc ids need to be read and written as Little Endian. In addition, an additional sort step is required in three places: during a MapList call, during a Map Cursor and during Map Compactions. BM25 is entirely disabled prior to this version
const IdLockPoolSize = 128
Variables ¶
This section is empty.
Functions ¶
func CheckSupportedPropertyIndexType ¶ added in v1.18.0
func CheckSupportedPropertyIndexType(indexType PropertyIndexType)
func IsIndexTypeSupportedByStrategy ¶ added in v1.18.0
func IsIndexTypeSupportedByStrategy(indexType PropertyIndexType, strategy string) bool
Some index types are supported by specific strategies only Method ensures both index type and strategy work together
func IsSupportedPropertyIndexType ¶ added in v1.18.0
func IsSupportedPropertyIndexType(indexType PropertyIndexType) bool
Types ¶
type BackupState ¶
type Config ¶
type Config struct { RootPath string QueryLimit int64 QueryMaximumResults int64 ResourceUsage config.ResourceUsage MaxImportGoroutinesFactor float64 MemtablesFlushIdleAfter int MemtablesInitialSizeMB int MemtablesMaxSizeMB int MemtablesMinActiveSeconds int MemtablesMaxActiveSeconds int TrackVectorDimensions bool ServerVersion string GitHash string }
type DB ¶
type DB struct {
// contains filtered or unexported fields
}
func New ¶
func New(logger logrus.FieldLogger, config Config, remoteIndex sharding.RemoteIndexClient, nodeResolver nodeResolver, remoteNodesClient sharding.RemoteNodeClient, replicaClient replica.Client, promMetrics *monitoring.PrometheusMetrics, ) (*DB, error)
func (*DB) AbortReplication ¶
func (*DB) AddBatchReferences ¶
func (db *DB) AddBatchReferences(ctx context.Context, references objects.BatchReferences, repl *additional.ReplicationProperties, ) (objects.BatchReferences, error)
func (*DB) AddReference ¶
func (*DB) Aggregate ¶
func (db *DB) Aggregate(ctx context.Context, params aggregation.Params, ) (*aggregation.Result, error)
func (*DB) AggregateNeighbors ¶
func (db *DB) AggregateNeighbors(ctx context.Context, vector []float32, class string, properties []string, k int, filter *libfilters.LocalFilter, ) ([]classification.NeighborRef, error)
TODO: why is this logic in the persistence package? This is business-logic, move out of here!
func (*DB) BackupDescriptors ¶
func (db *DB) BackupDescriptors(ctx context.Context, bakid string, classes []string, ) <-chan backup.ClassDescriptor
BackupDescriptors returns a channel of class descriptors. Class descriptor records everything needed to restore a class If an error happens a descriptor with an error will be written to the channel just before closing it.
func (*DB) Backupable ¶
Backupable returns whether all given class can be backed up.
func (*DB) BatchDeleteObjects ¶
func (db *DB) BatchDeleteObjects(ctx context.Context, params objects.BatchDeleteParams, repl *additional.ReplicationProperties, ) (objects.BatchDeleteResult, error)
func (*DB) BatchPutObjects ¶
func (db *DB) BatchPutObjects(ctx context.Context, objs objects.BatchObjects, repl *additional.ReplicationProperties, ) (objects.BatchObjects, error)
func (*DB) ClassExists ¶
func (*DB) ClassObjectSearch ¶
func (db *DB) ClassObjectSearch(ctx context.Context, params dto.GetParams, ) ([]*storobj.Object, []float32, error)
ClassObjectSearch is used to perform an inverted index search on the db
Earlier use cases required only []search.Result as a return value from the db, and the Class ClassSearch method fit this need. Later on, other use cases presented the need for the raw storage objects, such as hybrid search.
func (*DB) ClassObjectVectorSearch ¶
func (db *DB) ClassObjectVectorSearch(ctx context.Context, class string, vector []float32, offset int, limit int, filters *filters.LocalFilter, addl additional.Properties, ) ([]*storobj.Object, []float32, error)
ClassObjectVectorSearch is used to perform a vector search on the db
Earlier use cases required only []search.Result as a return value from the db, and the Class VectorSearch method fit this need. Later on, other use cases presented the need for the raw storage objects, such as hybrid search.
func (*DB) ClassSearch ¶
func (*DB) ClassVectorSearch ¶
func (*DB) CommitReplication ¶
func (*DB) DeleteIndex ¶
DeleteIndex deletes the index
func (*DB) DeleteObject ¶
func (db *DB) DeleteObject(ctx context.Context, class string, id strfmt.UUID, repl *additional.ReplicationProperties, ) error
DeleteObject from of a specific class giving its ID
func (*DB) DigestObjects ¶ added in v1.18.0
func (*DB) Exists ¶
func (db *DB) Exists(ctx context.Context, class string, id strfmt.UUID, repl *additional.ReplicationProperties, ) (bool, error)
func (*DB) FetchObject ¶ added in v1.18.0
func (*DB) FetchObjects ¶ added in v1.18.0
func (*DB) GetIndexForIncoming ¶
func (db *DB) GetIndexForIncoming(className schema.ClassName) sharding.RemoteIndexIncomingRepo
GetIndexForIncoming returns the index if it exists or nil if it doesn't
func (*DB) GetNodeStatuses ¶
GetNodeStatuses returns the status of all Weaviate nodes.
func (*DB) GetQueryMaximumResults ¶
func (*DB) GetUnclassified ¶
func (db *DB) GetUnclassified(ctx context.Context, class string, properties []string, filter *libfilters.LocalFilter, ) ([]search.Result, error)
TODO: why is this logic in the persistence package? This is business-logic, move out of here!
func (*DB) IncomingGetNodeStatus ¶
IncomingGetNodeStatus returns the index if it exists or nil if it doesn't
func (*DB) ListBackupable ¶
ListBackupable returns a list of all classes which can be backed up.
func (*DB) Merge ¶
func (db *DB) Merge(ctx context.Context, merge objects.MergeDocument, repl *additional.ReplicationProperties, ) error
func (*DB) MultiGet ¶
func (db *DB) MultiGet(ctx context.Context, query []multi.Identifier, additional additional.Properties, ) ([]search.Result, error)
func (*DB) Object ¶
func (db *DB) Object(ctx context.Context, class string, id strfmt.UUID, props search.SelectProperties, adds additional.Properties, repl *additional.ReplicationProperties, ) (*search.Result, error)
Object gets object with id from index of specified class.
func (*DB) ObjectByID ¶
func (db *DB) ObjectByID(ctx context.Context, id strfmt.UUID, props search.SelectProperties, additional additional.Properties, ) (*search.Result, error)
ObjectByID checks every index of the particular kind for the ID
@warning: this function is deprecated by Object()
func (*DB) ObjectSearch ¶
func (db *DB) ObjectSearch(ctx context.Context, offset, limit int, filters *filters.LocalFilter, sort []filters.Sort, additional additional.Properties, ) (search.Results, error)
ObjectSearch search each index. Deprecated by Query which searches a specific index
func (*DB) ObjectsByID ¶
func (db *DB) ObjectsByID(ctx context.Context, id strfmt.UUID, props search.SelectProperties, additional additional.Properties, ) (search.Results, error)
ObjectsByID checks every index of the particular kind for the ID this method is only used for Explore queries where we don't have a class context
func (*DB) OverwriteObjects ¶ added in v1.18.0
func (*DB) PutObject ¶
func (db *DB) PutObject(ctx context.Context, obj *models.Object, vector []float32, repl *additional.ReplicationProperties, ) error
func (*DB) ReleaseBackup ¶
ReleaseBackup release resources acquired by the index during backup
func (*DB) ReplicateDeletion ¶
func (*DB) ReplicateDeletions ¶
func (*DB) ReplicateObject ¶
func (*DB) ReplicateObjects ¶
func (*DB) ReplicateReferences ¶
func (db *DB) ReplicateReferences(ctx context.Context, class, shard, requestID string, refs []objects.BatchReference, ) replica.SimpleResponse
func (*DB) ReplicateUpdate ¶
func (db *DB) ReplicateUpdate(ctx context.Context, class, shard, requestID string, mergeDoc *objects.MergeDocument, ) replica.SimpleResponse
func (*DB) ResolveReferences ¶
func (db *DB) ResolveReferences(ctx context.Context, objs search.Results, props search.SelectProperties, additional additional.Properties, ) (search.Results, error)
ResolveReferences takes a list of search results and enriches them with any referenced objects
func (*DB) SetSchemaGetter ¶
func (db *DB) SetSchemaGetter(sg schemaUC.SchemaGetter)
func (*DB) ShardsBackup ¶
func (*DB) StartupComplete ¶
func (*DB) VectorClassSearch ¶
func (*DB) VectorSearch ¶
func (*DB) ZeroShotSearch ¶
func (db *DB) ZeroShotSearch(ctx context.Context, vector []float32, class string, properties []string, filter *libfilters.LocalFilter, ) ([]search.Result, error)
TODO: why is this logic in the persistence package? This is business-logic, move out of here!
type Index ¶
type Index struct { Shards map[string]*Shard Config IndexConfig // contains filtered or unexported fields }
Index is the logical unit which contains all the data for one particular class. An index can be further broken up into self-contained units, called Shards, to allow for easy distribution across Nodes
func NewIndex ¶
func NewIndex(ctx context.Context, config IndexConfig, shardState *sharding.State, invertedIndexConfig schema.InvertedIndexConfig, vectorIndexUserConfig schema.VectorIndexConfig, sg schemaUC.SchemaGetter, cs inverted.ClassSearcher, logger logrus.FieldLogger, nodeResolver nodeResolver, remoteClient sharding.RemoteIndexClient, replicaClient replica.Client, promMetrics *monitoring.PrometheusMetrics, class *models.Class, jobQueueCh chan job, ) (*Index, error)
NewIndex creates an index with the specified amount of shards, using only the shards that are local to a node
func (*Index) AbortReplication ¶
func (*Index) CommitReplication ¶
func (*Index) IncomingAggregate ¶
func (i *Index) IncomingAggregate(ctx context.Context, shardName string, params aggregation.Params, ) (*aggregation.Result, error)
func (*Index) IncomingBatchAddReferences ¶
func (*Index) IncomingBatchPutObjects ¶
func (*Index) IncomingCreateShard ¶
func (*Index) IncomingDeleteObject ¶
func (*Index) IncomingDeleteObjectBatch ¶
func (*Index) IncomingDigestObjects ¶ added in v1.18.0
func (*Index) IncomingExists ¶
func (*Index) IncomingFilePutter ¶
func (*Index) IncomingFindDocIDs ¶
func (*Index) IncomingGetObject ¶
func (i *Index) IncomingGetObject(ctx context.Context, shardName string, id strfmt.UUID, props search.SelectProperties, additional additional.Properties, ) (*storobj.Object, error)
func (*Index) IncomingGetShardStatus ¶
func (*Index) IncomingMergeObject ¶
func (*Index) IncomingMultiGetObjects ¶
func (*Index) IncomingOverwriteObjects ¶ added in v1.18.0
func (*Index) IncomingPutObject ¶
func (*Index) IncomingReinitShard ¶
func (*Index) IncomingSearch ¶
func (i *Index) IncomingSearch(ctx context.Context, shardName string, searchVector []float32, distance float32, limit int, filters *filters.LocalFilter, keywordRanking *searchparams.KeywordRanking, sort []filters.Sort, cursor *filters.Cursor, additional additional.Properties, ) ([]*storobj.Object, []float32, error)
func (*Index) IncomingUpdateShardStatus ¶
func (*Index) IterateObjects ¶
func (*Index) ReleaseBackup ¶
ReleaseBackup marks the specified backup as inactive and restarts all async background and maintenance processes. It errors if the backup does not exist or is already inactive.
func (*Index) ReplicateDeletion ¶
func (*Index) ReplicateDeletions ¶
func (*Index) ReplicateObject ¶
func (*Index) ReplicateObjects ¶
func (*Index) ReplicateReferences ¶
func (i *Index) ReplicateReferences(ctx context.Context, shard, requestID string, refs []objects.BatchReference) replica.SimpleResponse
func (*Index) ReplicateUpdate ¶
func (i *Index) ReplicateUpdate(ctx context.Context, shard, requestID string, doc *objects.MergeDocument) replica.SimpleResponse
type IndexConfig ¶
type IndexConfig struct { RootPath string ClassName schema.ClassName QueryMaximumResults int64 ResourceUsage config.ResourceUsage MemtablesFlushIdleAfter int MemtablesInitialSizeMB int MemtablesMaxSizeMB int MemtablesMinActiveSeconds int MemtablesMaxActiveSeconds int ReplicationFactor int64 TrackVectorDimensions bool }
type KnnAggregator ¶
type KnnAggregator struct {
// contains filtered or unexported fields
}
TODO: this is business logic, move out of here
func NewKnnAggregator ¶
func NewKnnAggregator(input search.Results, sourceVector []float32) *KnnAggregator
func (*KnnAggregator) Aggregate ¶
func (a *KnnAggregator) Aggregate(k int, properties []string) ([]classification.NeighborRef, error)
type Metrics ¶
type Metrics struct {
// contains filtered or unexported fields
}
func NewMetrics ¶
func NewMetrics(logger logrus.FieldLogger, prom *monitoring.PrometheusMetrics, className, shardName string, ) *Metrics
func (*Metrics) FilteredVectorFilter ¶ added in v1.18.0
func (*Metrics) FilteredVectorObjects ¶ added in v1.18.0
func (*Metrics) FilteredVectorSort ¶ added in v1.18.0
func (*Metrics) FilteredVectorVector ¶ added in v1.18.0
func (*Metrics) InvertedDeleteDelta ¶
func (*Metrics) InvertedDeleteOld ¶
func (*Metrics) ObjectStore ¶
func (*Metrics) PutObjectDetermineStatus ¶
func (*Metrics) PutObjectUpdateInverted ¶
func (*Metrics) PutObjectUpsertObject ¶
func (*Metrics) ShardStartup ¶
func (*Metrics) VectorIndex ¶
type Migrator ¶
type Migrator struct {
// contains filtered or unexported fields
}
func NewMigrator ¶
func NewMigrator(db *DB, logger logrus.FieldLogger) *Migrator
func (*Migrator) AddProperty ¶
func (*Migrator) DropProperty ¶
DropProperty is ignored, API compliant change
func (*Migrator) GetShardsStatus ¶
func (*Migrator) InvertedReindex ¶ added in v1.18.0
func (*Migrator) RecalculateVectorDimensions ¶
func (*Migrator) UpdateClass ¶
func (*Migrator) UpdateInvertedIndexConfig ¶
func (*Migrator) UpdateProperty ¶
func (*Migrator) UpdateShardStatus ¶
func (*Migrator) UpdateVectorIndexConfig ¶
func (*Migrator) ValidateInvertedIndexConfigUpdate ¶
func (*Migrator) ValidateVectorIndexConfigUpdate ¶
type PropertyIndexType ¶ added in v1.18.0
type PropertyIndexType uint8
const ( IndexTypePropValue PropertyIndexType = iota + 1 IndexTypePropLength IndexTypePropNull IndexTypeHashPropValue IndexTypeHashPropLength IndexTypeHashPropNull )
func GetPropNameAndIndexTypeFromBucketName ¶ added in v1.18.0
func GetPropNameAndIndexTypeFromBucketName(bucketName string) (string, PropertyIndexType)
type ReindexableProperty ¶ added in v1.18.0
type ReindexableProperty struct { PropertyName string IndexType PropertyIndexType DesiredStrategy string BucketOptions []lsmkv.BucketOption }
type Replicator ¶
type Replicator interface { ReplicateObject(ctx context.Context, shardName, requestID string, object *storobj.Object) replica.SimpleResponse ReplicateObjects(ctx context.Context, shardName, requestID string, objects []*storobj.Object) replica.SimpleResponse ReplicateUpdate(ctx context.Context, shard, requestID string, doc *objects.MergeDocument) replica.SimpleResponse ReplicateDeletion(ctx context.Context, shardName, requestID string, uuid strfmt.UUID) replica.SimpleResponse ReplicateDeletions(ctx context.Context, shardName, requestID string, docIDs []uint64, dryRun bool) replica.SimpleResponse ReplicateReferences(ctx context.Context, shard, requestID string, refs []objects.BatchReference) replica.SimpleResponse CommitReplication(shard, requestID string) interface{} AbortReplication(shardName, requestID string) interface{} }
type Shard ¶
type Shard struct {
// contains filtered or unexported fields
}
Shard is the smallest completely-contained index unit. A shard manages database files for all the objects it owns. How a shard is determined for a target object (e.g. Murmur hash, etc.) is still open at this point
func NewShard ¶
func NewShard(ctx context.Context, promMetrics *monitoring.PrometheusMetrics, shardName string, index *Index, class *models.Class, jobQueueCh chan job, ) (*Shard, error)
func (*Shard) Dimensions ¶
type ShardInvertedReindexTask ¶ added in v1.18.0
type ShardInvertedReindexTask interface { GetPropertiesToReindex(ctx context.Context, store *lsmkv.Store, indexConfig IndexConfig, invertedIndexConfig schema.InvertedIndexConfig, logger logrus.FieldLogger, ) ([]ReindexableProperty, error) }
type ShardInvertedReindexTaskSetToRoaringSet ¶ added in v1.18.0
type ShardInvertedReindexTaskSetToRoaringSet struct{}
func (*ShardInvertedReindexTaskSetToRoaringSet) GetPropertiesToReindex ¶ added in v1.18.0
func (t *ShardInvertedReindexTaskSetToRoaringSet) GetPropertiesToReindex(ctx context.Context, store *lsmkv.Store, indexConfig IndexConfig, invertedIndexConfig schema.InvertedIndexConfig, logger logrus.FieldLogger, ) ([]ReindexableProperty, error)
type ShardInvertedReindexer ¶ added in v1.18.0
type ShardInvertedReindexer struct {
// contains filtered or unexported fields
}
func NewShardInvertedReindexer ¶ added in v1.18.0
func NewShardInvertedReindexer(shard *Shard, logger logrus.FieldLogger) *ShardInvertedReindexer
func (*ShardInvertedReindexer) AddTask ¶ added in v1.18.0
func (r *ShardInvertedReindexer) AddTask(task ShardInvertedReindexTask)
type VectorIndex ¶
type VectorIndex interface { Dump(labels ...string) Add(id uint64, vector []float32) error Delete(id ...uint64) error SearchByVector(vector []float32, k int, allow helpers.AllowList) ([]uint64, []float32, error) SearchByVectorDistance(vector []float32, dist float32, maxLimit int64, allow helpers.AllowList) ([]uint64, []float32, error) UpdateUserConfig(updated schema.VectorIndexConfig, callback func()) error Drop(ctx context.Context) error Shutdown(ctx context.Context) error Flush() error PauseMaintenance(ctx context.Context) error SwitchCommitLogs(ctx context.Context) error ListFiles(ctx context.Context) ([]string, error) ResumeMaintenance(ctx context.Context) error PostStartup() ValidateBeforeInsert(vector []float32) error }
VectorIndex is anything that indexes vectors efficiently. For an example look at ./vector/hnsw/index.go
Source Files
¶
- backup.go
- batch.go
- buffered_random_reader.go
- classification.go
- crud.go
- index.go
- index_sharding_backward_compatibility.go
- init.go
- inverted_reindexer.go
- inverted_reindexer_index_types.go
- inverted_reindexer_set_to_roaringset.go
- inverted_reindexer_utils.go
- metrics.go
- migrator.go
- nodes.go
- replication.go
- repo.go
- resource_use.go
- search.go
- shard.go
- shard_aggregate.go
- shard_backup.go
- shard_dimension_tracking.go
- shard_geo_props.go
- shard_init_properties.go
- shard_read.go
- shard_replication.go
- shard_resource_use.go
- shard_status.go
- shard_version.go
- shard_write_batch_delete.go
- shard_write_batch_objects.go
- shard_write_batch_references.go
- shard_write_delete.go
- shard_write_inverted.go
- shard_write_inverted_lsm.go
- shard_write_inverted_lsm_delete.go
- shard_write_merge.go
- shard_write_put.go
- sortby_distances.go
- sortby_id.go
- sortby_scores.go
- vector_index.go
Directories
¶
Path | Synopsis |
---|---|
clusterintegrationtest acts as a test package to provide a compoenent test spanning multiple parts of the application, including everything that's required for a distributed setup.
|
clusterintegrationtest acts as a test package to provide a compoenent test spanning multiple parts of the application, including everything that's required for a distributed setup. |
entities
ent contains common types used throughout various lsmkv (sub-)packages
|
ent contains common types used throughout various lsmkv (sub-)packages |
roaringset
The "roaringset" package contains all the LSM business logic that is unique to the "RoaringSet" strategy
|
The "roaringset" package contains all the LSM business logic that is unique to the "RoaringSet" strategy |
vector
|
|
hnsw/distancer/asm
asm only has amd64 specific implementations at the moment
|
asm only has amd64 specific implementations at the moment |