diff options
author | SeungWon Jeong <65549245+redlion0929@users.noreply.github.com> | 2024-03-09 21:27:58 +0900 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-03-09 14:27:58 +0200 |
commit | fb215c3832236fec7380c4fb618bd7154cb196ef (patch) | |
tree | 1c2d0eb8fce7d2c1f70024b1f2c7b4b35baaa029 /common/common.cpp | |
parent | 2c4f566c88322ebf2f9bd11b01b5ebdaa0130b89 (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.cpp | 15 |
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; + } +} + |