MCPcopy Create free account
hub / github.com/Tiiny-AI/PowerInfer / common_embd_normalize

Function common_embd_normalize

smallthinker/common/common.cpp:1341–1375  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1339//
1340
1341void common_embd_normalize(const float * inp, float * out, int n, int embd_norm) {
1342 double sum = 0.0;
1343
1344 switch (embd_norm) {
1345 case -1: // no normalisation
1346 sum = 1.0;
1347 break;
1348 case 0: // max absolute
1349 for (int i = 0; i < n; i++) {
1350 if (sum < std::abs(inp[i])) {
1351 sum = std::abs(inp[i]);
1352 }
1353 }
1354 sum /= 32760.0; // make an int16 range
1355 break;
1356 case 2: // euclidean
1357 for (int i = 0; i < n; i++) {
1358 sum += inp[i] * inp[i];
1359 }
1360 sum = std::sqrt(sum);
1361 break;
1362 default: // p-norm (euclidean is p-norm p=2)
1363 for (int i = 0; i < n; i++) {
1364 sum += std::pow(std::abs(inp[i]), embd_norm);
1365 }
1366 sum = std::pow(sum, 1.0 / embd_norm);
1367 break;
1368 }
1369
1370 const float norm = sum > 0.0 ? 1.0 / sum : 0.0f;
1371
1372 for (int i = 0; i < n; i++) {
1373 out[i] = inp[i] * norm;
1374 }
1375}
1376
1377float common_embd_similarity_cos(const float * embd1, const float * embd2, int n){
1378 double sum = 0.0;

Callers 4

send_embeddingMethod · 0.85
batch_decodeFunction · 0.85
encodeFunction · 0.85
batch_processFunction · 0.85

Calls 3

absFunction · 0.85
sqrtFunction · 0.85
powFunction · 0.85

Tested by

no test coverage detected