feat(backend): add semantic matchmaking with embedding pipeline

Add a pluggable embedding provider with an offline deterministic default, vector indexing for problems and innovations, cosine semantic ranking, similar cases and solution suggestions, area filtering and an admin reindex endpoint. Refresh the index when innovations or submissions change.
This commit is contained in:
Rafał Tyński
2026-10-04 02:44:03 +02:00
parent 2bc083fb95
commit 25ce901021
13 changed files with 611 additions and 2 deletions
@@ -2,6 +2,7 @@ using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using SurrealDb.Net;
using TarninaHub.Application.Abstractions;
using TarninaHub.Application.Matchmaking;
using TarninaHub.Infrastructure.Auth;
using TarninaHub.Infrastructure.Events;
using TarninaHub.Infrastructure.Persistence;
@@ -59,6 +60,8 @@ public static class DependencyInjection
services.AddSingleton<IKnowledgeItemService, KnowledgeItemService>();
services.AddSingleton<IInnovationService, InnovationService>();
services.AddSingleton<ITrendService, TrendService>();
services.AddSingleton<IEmbeddingProvider, HashingEmbeddingProvider>();
services.AddSingleton<IMatchmakingService, MatchmakingService>();
return services;
}