Aller au contenu principal

Scorer de couverture des mots-clés

La fonction createKeywordCoverageScorer() évalue dans quelle mesure la sortie d’un LLM couvre les mots-clés importants de l’entrée. Elle analyse la présence et la correspondance des mots-clés tout en ignorant les mots courants et les mots vides.

Paramètres
Lien direct vers Paramètres

La fonction createKeywordCoverageScorer() n’accepte aucune option.

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 les mots-clés extraits : { referenceKeywords: Set<string>, responseKeywords: Set<string> }

analyzeStepResult:

object
Objet contenant la couverture des mots-clés : { totalKeywords: number, matchedKeywords: number }

score:

number
Score de couverture compris entre 0 et 1, représentant la proportion de mots-clés correspondants.

.run() renvoie un résultat possédant la structure suivante :

{
runId: string,
extractStepResult: {
referenceKeywords: Set<string>,
responseKeywords: Set<string>
},
analyzeStepResult: {
totalKeywords: number,
matchedKeywords: number
},
score: number
}

Détails du calcul du score
Lien direct vers Détails du calcul du score

Le Scorer évalue la couverture en faisant correspondre les mots-clés à l’aide des fonctionnalités suivantes :

  • Filtrage des mots courants et des mots vides, par exemple "the", "a", "and"
  • Correspondance insensible à la casse
  • Gestion des variantes morphologiques des mots
  • Traitement particulier des termes techniques et des mots composés

Processus de calcul du score
Lien direct vers Processus de calcul du score

  1. Traite les mots-clés de l’entrée et de la sortie :
    • Élimine les mots courants et les mots vides
    • Normalise la casse et les formes des mots
    • Traite les termes particuliers et les mots composés
  2. Calcule la couverture des mots-clés :
    • Fait correspondre les mots-clés entre les textes
    • Compte les correspondances réussies
    • Calcule le rapport de couverture

Score final : (matched_keywords / total_keywords) * scale

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

Un score de couverture compris entre 0 et 1 s’interprète comme suit :

  • 1.0 : couverture complète, tous les mots-clés sont présents.
  • 0.7 à 0.9 : couverture élevée, la plupart des mots-clés sont inclus.
  • 0.4 à 0.6 : couverture partielle, certains mots-clés sont présents.
  • 0.1 à 0.3 : faible couverture, peu de mots-clés correspondent.
  • 0.0 : la réponse ne contient aucun des mots-clés.

Cas particuliers
Lien direct vers Cas particuliers

Le Scorer gère plusieurs cas particuliers :

  • Entrée/sortie vide : renvoie un score de 1.0 si les deux sont vides, ou de 0.0 si une seule l’est
  • Mot unique : traité comme un seul mot-clé
  • Termes techniques : préserve les termes techniques composés, par exemple "React.js", "machine learning"
  • Différences de casse : "JavaScript" correspond à "javascript"
  • Mots courants : ignorés dans le calcul du score afin de se concentrer sur les mots-clés utiles

Exemple
Lien direct vers Exemple

Évaluez la couverture des mots-clés entre les requêtes d’entrée et les réponses d’un Agent :

src/example-keyword-coverage.ts
import { runEvals } from '@mastra/core/evals'
import { createKeywordCoverageScorer } from '@mastra/evals/scorers/prebuilt'
import { myAgent } from './agent'

const scorer = createKeywordCoverageScorer()

const result = await runEvals({
data: [
{
input: 'JavaScript frameworks like React and Vue',
},
{
input: 'TypeScript offers interfaces, generics, and type inference',
},
{
input:
'Machine learning models require data preprocessing, feature engineering, and hyperparameter tuning',
},
],
scorers: [scorer],
target: myAgent,
onItemComplete: ({ scorerResults }) => {
console.log({
score: scorerResults[scorer.id].score,
})
},
})

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.