weaviate

Форк
0
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

12
package clients
13

14
import "errors"
15

16
type bertEmbeddingsDecoder struct{}
17

18
func newBertEmbeddingsDecoder() *bertEmbeddingsDecoder {
19
	return &bertEmbeddingsDecoder{}
20
}
21

22
func (d bertEmbeddingsDecoder) calculateVector(embeddings [][]float32) ([]float32, error) {
23
	if len(embeddings) > 0 {
24
		vectorLen := len(embeddings[0])
25
		sumEmbeddings := make([]float32, vectorLen)
26
		embeddingsLen := len(embeddings)
27
		var sum float32
28
		for i := 0; i < vectorLen; i++ {
29
			sum = 0
30
			for j := 0; j < embeddingsLen; j++ {
31
				sum += embeddings[j][i]
32
			}
33
			sumEmbeddings[i] = sum
34
		}
35
		for i := range sumEmbeddings {
36
			sumEmbeddings[i] = sumEmbeddings[i] / float32(embeddingsLen)
37
		}
38
		return sumEmbeddings, nil
39
	}
40
	return nil, errors.New("missing embeddings")
41
}
42

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.