From d38089d82d56b4a2a81b8958fad304038c5c695c Mon Sep 17 00:00:00 2001 From: Claudio Ortolina Date: Sun, 12 Oct 2025 20:46:01 +0200 Subject: [PATCH] Show similarity in % points --- lib/music_library/records/similarity.ex | 9 +++++++-- lib/music_library_web/components/record_components.ex | 6 +++++- test/music_library/records/similarity_test.exs | 4 ++-- 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/lib/music_library/records/similarity.ex b/lib/music_library/records/similarity.ex index 0a7f6937..8ce14633 100644 --- a/lib/music_library/records/similarity.ex +++ b/lib/music_library/records/similarity.ex @@ -68,8 +68,13 @@ defmodule MusicLibrary.Records.Similarity do where: re.record_id != ^record_id, join: r in Record, on: r.id == re.record_id and r.musicbrainz_id != ^record_musicbrainz_id, - order_by: vec_distance_cosine(re.embedding, vec_f32(source_embedding)), - select: {r, re.embedding}, + order_by: selected_as(:similarity), + select: %{ + record: r, + similarity: + vec_distance_cosine(re.embedding, vec_f32(source_embedding)) + |> selected_as(:similarity) + }, group_by: r.musicbrainz_id, limit: ^limit diff --git a/lib/music_library_web/components/record_components.ex b/lib/music_library_web/components/record_components.ex index 6cf09b04..01c28ed4 100644 --- a/lib/music_library_web/components/record_components.ex +++ b/lib/music_library_web/components/record_components.ex @@ -406,7 +406,10 @@ defmodule MusicLibraryWeb.RecordComponents do role="list" class="mt-4 grid grid-cols-2 gap-x-4 gap-y-6 sm:grid-cols-3 md:grid-cols-4 lg:grid-cols-6 sm:gap-x-6" > -
  • +
  • <.record_cover record={record} @@ -422,6 +425,7 @@ defmodule MusicLibraryWeb.RecordComponents do + {Float.round(100 - similarity * 100, 0)}%
    diff --git a/test/music_library/records/similarity_test.exs b/test/music_library/records/similarity_test.exs index 705ea2c3..62d8082b 100644 --- a/test/music_library/records/similarity_test.exs +++ b/test/music_library/records/similarity_test.exs @@ -162,9 +162,9 @@ defmodule MusicLibrary.Records.SimilarityTest do assert length(similar) >= 1 # record2 should be most similar to record1 - {first_record, similarity} = List.first(similar) + %{record: first_record, similarity: similarity} = List.first(similar) assert first_record.id == record2.id - assert similarity > 0.9 + assert similarity < 5.0 end test "respects limit option", %{record1: record1} do