更新阅读器功能与示例
This commit is contained in:
@@ -0,0 +1,19 @@
|
||||
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
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user