MME-4 Save summary text to db, fix queries, tweak backfill.
This commit is contained in:
parent
fa7afbaa76
commit
8018301d3c
@ -3,8 +3,10 @@ package app.mealsmadeeasy.api;
|
||||
import app.mealsmadeeasy.api.job.JobService;
|
||||
import app.mealsmadeeasy.api.recipe.Recipe;
|
||||
import app.mealsmadeeasy.api.recipe.RecipeRepository;
|
||||
import app.mealsmadeeasy.api.recipe.RecipeSummary;
|
||||
import app.mealsmadeeasy.api.recipe.job.RecipeSummaryJobHandler;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.springframework.boot.ApplicationArguments;
|
||||
import org.springframework.boot.ApplicationRunner;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
||||
@ -22,14 +24,16 @@ public class BackfillRecipeEmbeddings implements ApplicationRunner {
|
||||
|
||||
@Override
|
||||
public void run(ApplicationArguments args) {
|
||||
final List<Recipe> recipeEntities = this.recipeRepository.findAllBySummaryIsNull();
|
||||
final List<Recipe> recipeEntities = this.recipeRepository.findAll();
|
||||
for (final Recipe recipe : recipeEntities) {
|
||||
this.jobService.create(
|
||||
RecipeSummaryJobHandler.JOB_KEY,
|
||||
new RecipeSummaryJobHandler.RecipeSummaryJobPayload(recipe.getId())
|
||||
);
|
||||
final @Nullable RecipeSummary summary = recipe.getSummary();
|
||||
if (summary == null || summary.getSummary() == null || summary.getEmbedding() == null) {
|
||||
this.jobService.create(
|
||||
RecipeSummaryJobHandler.JOB_KEY,
|
||||
new RecipeSummaryJobHandler.RecipeSummaryJobPayload(recipe.getId())
|
||||
);
|
||||
}
|
||||
}
|
||||
this.recipeRepository.flush();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -109,7 +109,7 @@ public class DevConfiguration {
|
||||
.isPublic(frontMatter.isPublic)
|
||||
.mainImage(mainImage)
|
||||
.build();
|
||||
final Recipe recipe = this.recipeService.create(testUser, recipeCreateSpec, false);
|
||||
final Recipe recipe = this.recipeService.create(testUser, recipeCreateSpec, true);
|
||||
logger.info("Created recipe {}", recipe);
|
||||
}
|
||||
}
|
||||
|
||||
@ -41,12 +41,10 @@ public interface RecipeRepository extends JpaRepository<Recipe, Integer> {
|
||||
@Query("SELECT r FROM Recipe r WHERE r.isPublic OR r.owner = ?1 OR ?1 MEMBER OF r.viewers")
|
||||
Slice<Recipe> findAllViewableBy(User viewer, Pageable pageable);
|
||||
|
||||
List<Recipe> findAllBySummaryIsNull();
|
||||
|
||||
@Query(
|
||||
nativeQuery = true,
|
||||
value = """
|
||||
WITH distances AS (SELECT recipe_id, embedding <=> cast(?1 AS vector) AS distance FROM recipe_embedding)
|
||||
WITH distances AS (SELECT recipe_id, embedding <=> cast(?1 AS vector) AS distance FROM recipe_summary)
|
||||
SELECT r.* FROM distances d
|
||||
INNER JOIN recipe r ON r.id = d.recipe_id
|
||||
WHERE d.distance < ?2 AND (
|
||||
@ -62,7 +60,7 @@ public interface RecipeRepository extends JpaRepository<Recipe, Integer> {
|
||||
@Query(
|
||||
nativeQuery = true,
|
||||
value = """
|
||||
WITH distances AS (SELECT recipe_id, embedding <=> cast(?1 AS vector) AS distance FROM recipe_embedding)
|
||||
WITH distances AS (SELECT recipe_id, embedding <=> cast(?1 AS vector) AS distance FROM recipe_summary)
|
||||
SELECT r.* FROM distances d
|
||||
INNER JOIN recipe r ON r.id = d.recipe_id
|
||||
WHERE d.distance < ?2 AND r.is_public = TRUE
|
||||
|
||||
@ -61,11 +61,10 @@ public class RecipeSummaryJobHandler implements JobHandler<RecipeSummaryJobHandl
|
||||
}
|
||||
logger.debug("Summary of recipe with id {}: {}", recipe.getId(), summary);
|
||||
|
||||
// todo: save summary to db
|
||||
|
||||
final float[] summaryEmbedding = this.embeddingModel.embed(summary);
|
||||
|
||||
final RecipeSummary recipeSummary = new RecipeSummary();
|
||||
final RecipeSummary recipeSummary = recipe.getSummary() != null ? recipe.getSummary() : new RecipeSummary();
|
||||
recipeSummary.setSummary(summary);
|
||||
recipeSummary.setEmbedding(summaryEmbedding);
|
||||
recipeSummary.setRecipe(recipe);
|
||||
recipeSummary.setTimestamp(OffsetDateTime.now());
|
||||
|
||||
Loading…
Reference in New Issue
Block a user