Files
Momento/memento-note/lib/ai/semantic-proximity.ts

35 lines
1.2 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/** Seuil Memory Echo (prod) — connexions sous ce score ne sont pas proposées. */
export const SEMANTIC_SIMILARITY_FLOOR = 0.60
export const SEMANTIC_SIMILARITY_FLOOR_DEMO = 0.5
/** Seuil assoupli pour notes clippées / RTL (persan, arabe) — bruit HTML réduit la similarité. */
export const SEMANTIC_SIMILARITY_FLOOR_CLIP = 0.58
/** Ratio 0 (seuil) → 1 (identique), pour étaler laffichage au-dessus du seuil. */
export function semanticProximityRatio(
similarity: number,
floor = SEMANTIC_SIMILARITY_FLOOR,
): number {
const clamped = Math.max(floor, Math.min(1, similarity))
if (floor >= 1) return 1
return (clamped - floor) / (1 - floor)
}
/** Pourcentage « proximité » affiché (0100), étalé entre le seuil et 100 %. */
export function semanticProximityPercent(
similarity: number,
floor = SEMANTIC_SIMILARITY_FLOOR,
): number {
return Math.round(semanticProximityRatio(similarity, floor) * 100)
}
/** Rayon orbite : plus la proximité est forte, plus le nœud est proche du centre. */
export function semanticOrbitRadius(
similarity: number,
floor = SEMANTIC_SIMILARITY_FLOOR,
): number {
const MIN_R = 34
const MAX_R = 94
const t = semanticProximityRatio(similarity, floor)
return MAX_R - t * (MAX_R - MIN_R)
}