Aller au contenu principal

Scorer de similarité de contenu

La fonction createContentSimilarityScorer() mesure la similarité textuelle entre deux chaînes et fournit un score qui indique leur degré de correspondance. Elle propose des options configurables pour la sensibilité à la casse et le traitement des espaces blancs.

Paramètres
Lien direct vers Paramètres

La fonction createContentSimilarityScorer() accepte un objet d’options unique doté des propriétés suivantes :

ignoreCase:

boolean
= true
Indique s’il faut ignorer les différences de casse lors de la comparaison des chaînes.

ignoreWhitespace:

boolean
= true
Indique s’il faut normaliser les espaces blancs lors de la comparaison des chaînes.

Cette fonction renvoie une instance de la classe MastraScorer. Consultez la référence de MastraScorer pour en savoir plus sur la méthode .run() et ses entrées/sorties.

Valeur renvoyée par .run()
Lien direct vers run-returns

runId:

string
ID de l’exécution (facultatif).

preprocessStepResult:

object
Objet contenant l’entrée et la sortie traitées : { processedInput: string, processedOutput: string }

analyzeStepResult:

object
Objet contenant la similarité : { similarity: number }

score:

number
Score de similarité (de 0 à 1), où 1 indique une similarité parfaite.

Détails de l’évaluation
Lien direct vers Détails de l’évaluation

Le Scorer évalue la similarité textuelle par une mise en correspondance au niveau des caractères et une normalisation configurable du texte.

Processus d’évaluation
Lien direct vers Processus d’évaluation

  1. Normalise le texte :
    • normalisation de la casse (si ignoreCase: true)
    • normalisation des espaces blancs (si ignoreWhitespace: true)
  2. Compare les chaînes traitées au moyen de l’algorithme string-similarity :
    • analyse les séquences de caractères
    • aligne les limites des mots
    • prend en compte les positions relatives
    • tient compte des différences de longueur

Score final : similarity_value * scale

Exemple
Lien direct vers Exemple

Évaluez la similarité textuelle entre les sorties attendues et réelles de l’Agent :

src/example-content-similarity.ts
import { runEvals } from '@mastra/core/evals'
import { createContentSimilarityScorer } from '@mastra/evals/scorers/prebuilt'
import { myAgent } from './agent'

const scorer = createContentSimilarityScorer()

const result = await runEvals({
data: [
{
input: 'Summarize the benefits of TypeScript',
groundTruth:
'TypeScript provides static typing, better tooling support, and improved code maintainability.',
},
{
input: 'What is machine learning?',
groundTruth:
'Machine learning is a subset of AI that enables systems to learn from data without explicit programming.',
},
],
scorers: [scorer],
target: myAgent,
onItemComplete: ({ scorerResults }) => {
console.log({
score: scorerResults[scorer.id].score,
groundTruth: scorerResults[scorer.id].groundTruth,
})
},
})

console.log(result.scores)

Pour en savoir plus sur runEvals, consultez la référence de runEvals.

Pour ajouter ce Scorer à un Agent, consultez le guide de présentation des Scorers.

Interprétation du score
Lien direct vers Interprétation du score

Pour un score de similarité compris entre 0 et 1 :

  • 1.0 : correspondance parfaite, le contenu est presque identique.
  • 0.7 à 0.9 : similarité élevée, avec de légères différences dans le choix des mots ou la structure.
  • 0.4 à 0.6 : similarité modérée, avec un chevauchement général et des variations perceptibles.
  • 0.1 à 0.3 : faible similarité, avec peu d’éléments communs ou de sens partagé.
  • 0.0 : aucune similarité, le contenu est totalement différent.