github.com/weaviate/weaviate@v1.24.6/adapters/repos/db/vector/hnsw/distancer/normalize.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 distancer 13 14 import "math" 15 16 func Normalize(v []float32) []float32 { 17 var norm float32 18 out := make([]float32, len(v)) 19 for i := range v { 20 norm += v[i] * v[i] 21 } 22 if norm == 0 { 23 return out 24 } 25 26 norm = float32(math.Sqrt(float64(norm))) 27 for i := range v { 28 out[i] = v[i] / norm 29 } 30 31 return out 32 }