github.com/weaviate/weaviate@v1.24.6/modules/text2vec-gpt4all/vectorizer/objects.go (about) 1 // _ _ 2 // __ _____ __ ___ ___ __ _| |_ ___ 3 // \ \ /\ / / _ \/ _` \ \ / / |/ _` | __/ _ \ 4 // \ V V / __/ (_| |\ V /| | (_| | || __/ 5 // \_/\_/ \___|\__,_| \_/ |_|\__,_|\__\___| 6 // 7 // Copyright © 2016 - 2024 Weaviate B.V. All rights reserved. 8 // 9 // CONTACT: hello@weaviate.io 10 // 11 12 package vectorizer 13 14 import ( 15 "context" 16 17 "github.com/weaviate/weaviate/entities/models" 18 "github.com/weaviate/weaviate/entities/moduletools" 19 "github.com/weaviate/weaviate/modules/text2vec-gpt4all/ent" 20 objectsvectorizer "github.com/weaviate/weaviate/usecases/modulecomponents/vectorizer" 21 ) 22 23 type Vectorizer struct { 24 client Client 25 objectVectorizer *objectsvectorizer.ObjectVectorizer 26 } 27 28 func New(client Client) *Vectorizer { 29 return &Vectorizer{ 30 client: client, 31 objectVectorizer: objectsvectorizer.New(), 32 } 33 } 34 35 type Client interface { 36 Vectorize(ctx context.Context, text string) (*ent.VectorizationResult, error) 37 } 38 39 type ClassSettings interface { 40 PropertyIndexed(property string) bool 41 VectorizeClassName() bool 42 VectorizePropertyName(propertyName string) bool 43 } 44 45 func (v *Vectorizer) Object(ctx context.Context, object *models.Object, 46 comp moduletools.VectorizablePropsComparator, cfg moduletools.ClassConfig, 47 ) ([]float32, models.AdditionalProperties, error) { 48 vec, err := v.object(ctx, object.Class, comp, cfg) 49 return vec, nil, err 50 } 51 52 func (v *Vectorizer) object(ctx context.Context, className string, 53 comp moduletools.VectorizablePropsComparator, cfg moduletools.ClassConfig, 54 ) ([]float32, error) { 55 text, vector := v.objectVectorizer.TextsOrVector(ctx, className, comp, NewClassSettings(cfg), cfg.TargetVector()) 56 if vector != nil { 57 // dont' re-vectorize 58 return vector, nil 59 } 60 // vectorize text 61 res, err := v.client.Vectorize(ctx, text) 62 if err != nil { 63 return nil, err 64 } 65 66 return res.Vector, nil 67 }