Un cache classique matche une clé exacte. Mais « Quels sont vos horaires ? » et « Vous ouvrez à quelle heure ? » devraient hitter la même réponse. Le cache sémantique matche par proximité d'embedding. Puissant, mais à manier avec prudence.
Le principe
On embedde la requête, on cherche en base le vecteur le plus proche déjà vu. Si la similarité cosinus dépasse un seuil, on sert la réponse cachée sans appeler le LLM.
Gains vs risques
| Cache exact | Cache sémantique | |
|---|---|---|
| Taux de hit | Faible | Élevé |
| Faux positif | Impossible | Possible (seuil mal réglé) |
| Coût lecture | O(1) | 1 embedding + recherche vecteur |
| Risque métier | Nul | Servir une mauvaise réponse |
Le piège du seuil
« Annuler ma commande 123 » et « Annuler ma commande 456 » sont sémantiquement quasi identiques mais exigent des réponses opposées. Un seuil trop permissif sert la mauvaise réponse avec aplomb. Régler le seuil haut, et exclure du cache toute requête contenant des identifiants ou des paramètres variables.
Quand l'utiliser
- Oui : FAQ, contenu éditorial, questions générales sans paramètre — fort volume, faible variance.
- Non : tout ce qui dépend d'un identifiant, d'un état utilisateur, d'une donnée temps réel.
Bien posé, c'est 30 à 60 % d'appels en moins sur un assistant FAQ. Mal posé, c'est un bug invisible qui répond faux une fois sur vingt.