summaryrefslogtreecommitdiff
path: root/common/common.cpp
diff options
context:
space:
mode:
authorSeungWon Jeong <65549245+redlion0929@users.noreply.github.com>2024-03-09 21:27:58 +0900
committerGitHub <noreply@github.com>2024-03-09 14:27:58 +0200
commitfb215c3832236fec7380c4fb618bd7154cb196ef (patch)
tree1c2d0eb8fce7d2c1f70024b1f2c7b4b35baaa029 /common/common.cpp
parent2c4f566c88322ebf2f9bd11b01b5ebdaa0130b89 (diff)
server : normalize embeddings (#5956)
* output normalize embedding in '/v1/embeddings' * common : reuse llama_embd_normalize * common : better normalize impl --------- Co-authored-by: Georgi Gerganov <ggerganov@gmail.com>
Diffstat (limited to 'common/common.cpp')
-rw-r--r--common/common.cpp15
1 files changed, 15 insertions, 0 deletions
diff --git a/common/common.cpp b/common/common.cpp
index d7f650ef..16ef4d7f 100644
--- a/common/common.cpp
+++ b/common/common.cpp
@@ -1852,3 +1852,18 @@ void dump_kv_cache_view_seqs(const llama_kv_cache_view & view, int row_size) {
printf("\n=== Done dumping\n");
}
+
+void llama_embd_normalize(const float * inp, float * out, int n) {
+ double sum = 0.0;
+ for (int i = 0; i < n; i++) {
+ sum += inp[i] * inp[i];
+ }
+ sum = sqrt(sum);
+
+ const float norm = sum > 0.0 ? 1.0f / sum : 0.0f;
+
+ for (int i = 0; i < n; i++) {
+ out[i] = inp[i] * norm;
+ }
+}
+