import Foundation import NaturalLanguage /// Uses Apple's bundled sentence embeddings when the language asset exists. /// Distances are converted to a stable 0...1 ranking signal only within one /// query; callers must not compare values across embedding revisions. public struct RDAINaturalLanguageSemanticScorer: RDAISemanticScoring { public init() {} public func score(query: String, text: String, languageCode: String?) async -> Double? { await Task.detached(priority: .utility) { let language = languageCode.flatMap(NLLanguage.init(rawValue:)) ?? .english guard let embedding = NLEmbedding.sentenceEmbedding(for: language) else { return nil } let distance = embedding.distance(between: query, and: text) guard distance.isFinite else { return nil } return 1 / (1 + Double(distance)) }.value } }