weaviate
54 строки · 1.6 Кб
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
12package vectorizer
13
14import (
15"context"
16
17"github.com/pkg/errors"
18"github.com/weaviate/weaviate/entities/moduletools"
19"github.com/weaviate/weaviate/modules/text2vec-contextionary/vectorizer"
20"github.com/weaviate/weaviate/modules/text2vec-huggingface/ent"
21libvectorizer "github.com/weaviate/weaviate/usecases/vectorizer"
22)
23
24func (v *Vectorizer) VectorizeInput(ctx context.Context, input string,
25icheck vectorizer.ClassIndexCheck,
26) ([]float32, error) {
27res, err := v.client.VectorizeQuery(ctx, input, ent.VectorizationConfig{})
28if err != nil {
29return nil, err
30}
31return res.Vector, nil
32}
33
34func (v *Vectorizer) Texts(ctx context.Context, inputs []string,
35cfg moduletools.ClassConfig,
36) ([]float32, error) {
37settings := NewClassSettings(cfg)
38vectors := make([][]float32, len(inputs))
39for i := range inputs {
40res, err := v.client.VectorizeQuery(ctx, inputs[i], ent.VectorizationConfig{
41EndpointURL: settings.EndpointURL(),
42Model: settings.QueryModel(),
43WaitForModel: settings.OptionWaitForModel(),
44UseGPU: settings.OptionUseGPU(),
45UseCache: settings.OptionUseCache(),
46})
47if err != nil {
48return nil, errors.Wrap(err, "remote client vectorize")
49}
50vectors[i] = res.Vector
51}
52
53return libvectorizer.CombineVectors(vectors), nil
54}
55