Add runtime tasks to regenerate embeddings

This commit is contained in:
Claudio Ortolina
2025-10-12 13:47:28 +02:00
parent ee199272b1
commit e17a445574
2 changed files with 24 additions and 96 deletions
+24
View File
@@ -9,6 +9,7 @@ defmodule MusicLibrary.Records.Similarity do
alias MusicLibrary.Records
alias MusicLibrary.Records.{Record, RecordEmbedding}
alias MusicLibrary.Repo
alias MusicLibrary.Worker.GenerateRecordEmbedding
@doc """
Generates a text representation of a record for embedding generation.
@@ -110,6 +111,29 @@ defmodule MusicLibrary.Records.Similarity do
)
end
def generate_embedding_async(record) do
meta = %{title: record.title, artists: Enum.map(record.artists, & &1.name)}
params = %{record_id: record.id}
params
|> GenerateRecordEmbedding.new(meta: meta)
|> Oban.insert!()
end
def generate_all_embeddings_async do
Record
|> Repo.all()
|> Enum.map(fn record ->
meta = %{title: record.title, artists: Enum.map(record.artists, & &1.name)}
params = %{record_id: record.id}
params
|> GenerateRecordEmbedding.new(meta: meta)
end)
|> Oban.insert_all()
|> Enum.count()
end
# Private functions
defp extract_year(nil), do: "Unknown"