weaviate
41 строка · 1.0 Кб
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 clients
13
14import "errors"
15
16type bertEmbeddingsDecoder struct{}
17
18func newBertEmbeddingsDecoder() *bertEmbeddingsDecoder {
19return &bertEmbeddingsDecoder{}
20}
21
22func (d bertEmbeddingsDecoder) calculateVector(embeddings [][]float32) ([]float32, error) {
23if len(embeddings) > 0 {
24vectorLen := len(embeddings[0])
25sumEmbeddings := make([]float32, vectorLen)
26embeddingsLen := len(embeddings)
27var sum float32
28for i := 0; i < vectorLen; i++ {
29sum = 0
30for j := 0; j < embeddingsLen; j++ {
31sum += embeddings[j][i]
32}
33sumEmbeddings[i] = sum
34}
35for i := range sumEmbeddings {
36sumEmbeddings[i] = sumEmbeddings[i] / float32(embeddingsLen)
37}
38return sumEmbeddings, nil
39}
40return nil, errors.New("missing embeddings")
41}
42