github.com/weaviate/weaviate@v1.24.6/modules/text2vec-huggingface/clients/bert_embeddings.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 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 }