The threshold tuning is where semantic caching quietly gets dangerous, since a threshold loose enough to catch paraphrases will eventually serve a cached answer to a question that only looks similar but needs a different reply. I keep a small labeled set of near-miss pairs and measure false-hit rate whenever I move the threshold, so a cost win does not turn into a wrong-answer regression. How are you deciding your similarity cutoff, and do you track how often a hit returns a semantically-off answer?