using ManagerService.Data; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; namespace ManagerService.Services { /// /// Lecture et écriture des morceaux de contenu indexés pour le guide IA. /// public interface IVectorStoreService { /// /// Remplace tous les morceaux d'un contenu. Le nombre de morceaux change d'une version /// à l'autre : mettre à jour morceau par morceau laisserait des fantômes qui continueraient /// d'alimenter les réponses avec du contenu supprimé. Une liste vide purge le contenu. /// Task ReplaceAsync(string instanceId, string configurationId, string contentId, ContentSourceType contentType, IReadOnlyList chunks, CancellationToken cancellationToken = default); /// /// Cherche les morceaux les plus proches de la question. /// Le seul filtre dur est l'instance. La langue ne filtre pas — un visiteur néerlandophone /// doit retrouver une brochure qui n'existe qu'en français : le modèle d'embedding est /// multilingue et la traduction se fait à la rédaction de la réponse. /// et ne servent /// qu'à bonifier le classement. /// null retombe sur AI:SearchTopK. /// Task> SearchAsync(string instanceId, string currentConfigurationId, string language, string query, int? topK = null, CancellationToken cancellationToken = default); Task DeleteAsync(string contentId, ContentSourceType contentType, CancellationToken cancellationToken = default); } public record ContentChunk(string Text, int ChunkIndex, int? PageNumber, string Language); public record VectorSearchResult( string ContentId, ContentSourceType ContentType, string Text, int? PageNumber, string Language, double Score); }