MaxKB/apps/embedding/sql/embedding_search.sql
2023-11-16 13:16:27 +08:00

15 lines
530 B
SQL

SELECT * FROM (SELECT
*,
( 1 - ( embedding.embedding <=> %s ) ) AS similarity,
CASE
WHEN embedding.star_num - embedding.trample_num = 0 THEN
0 ELSE ( ( ( embedding.star_num - embedding.trample_num ) - aggs.min_value ) / ( aggs.max_value - aggs.min_value ) )
END AS score
FROM
embedding,
( SELECT MIN ( star_num - trample_num ) AS min_value, MAX ( star_num - trample_num ) AS max_value FROM embedding ${embedding_query}) aggs
${embedding_query}
) temp
WHERE similarity>0.5
ORDER BY (similarity + score) DESC LIMIT 1