feat(ai): IEmbeddingProvider foundation (#18)
CI / backend (push) Successful in 52s
CI / frontend (push) Successful in 14s
Deploy Staging / deploy (push) Successful in 26s
CI / backend (pull_request) Successful in 53s
CI / frontend (pull_request) Successful in 16s
Security / secrets (push) Successful in 4s
Security / dependencies (push) Successful in 55s
Security / secrets (pull_request) Successful in 4s
Security / dependencies (pull_request) Successful in 53s
CI / backend (push) Successful in 52s
CI / frontend (push) Successful in 14s
Deploy Staging / deploy (push) Successful in 26s
CI / backend (pull_request) Successful in 53s
CI / frontend (pull_request) Successful in 16s
Security / secrets (push) Successful in 4s
Security / dependencies (push) Successful in 55s
Security / secrets (pull_request) Successful in 4s
Security / dependencies (pull_request) Successful in 53s
This commit was merged in pull request #18.
This commit is contained in:
@@ -82,6 +82,25 @@ public interface IAiProvider
|
||||
Task<string> CompleteAsync(string systemPrompt, string userPrompt, CancellationToken ct = default);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Produces vector embeddings for text (the foundation for semantic search, near-duplicate
|
||||
/// detection, and "find similar"). Kept separate from <see cref="IAiProvider"/> because
|
||||
/// embeddings are a distinct capability with their own model. The Null implementation returns
|
||||
/// an empty vector and <see cref="IsAvailable"/> = false, so callers detect unavailability and
|
||||
/// fall back to lexical search — AI is never required for core functionality.
|
||||
/// </summary>
|
||||
public interface IEmbeddingProvider
|
||||
{
|
||||
/// <summary>False for the Null provider (AI off / no embedding model configured).</summary>
|
||||
bool IsAvailable { get; }
|
||||
|
||||
/// <summary>Embed a single text. Returns an empty array when unavailable.</summary>
|
||||
Task<float[]> EmbedAsync(string text, CancellationToken ct = default);
|
||||
|
||||
/// <summary>Embed many texts, result aligned to input order. Empty list when unavailable.</summary>
|
||||
Task<IReadOnlyList<float[]>> EmbedBatchAsync(IReadOnlyList<string> texts, CancellationToken ct = default);
|
||||
}
|
||||
|
||||
public enum ExportFormat { Pdf, Csv, Json }
|
||||
|
||||
public interface IExportService
|
||||
|
||||
Reference in New Issue
Block a user