See it work
Watch the assistant answer a support question end to end.
Engineering note on Medium: Why “Just RAG” Breaks During Multilingual Support Surges ↗ · 8 min read
Code: faq-surge-assistant on GitHub ↗ · technical annex with routing, caching and observability
Under the hood
Search each language separately; reuse what’s already been answered.
- Customer questionIn the customer’s own language
- Language laneSeparate knowledge for each languagethis lab: English, Chinese, Thai
- Saved-answer checkReuse only on an exact match
- SearchPrimary path, backup when needed
- AnswerWith source linkse.g. FastAPI service, Gradio UI
// a saved answer is reused only when all of these match reuse_key = { language, // which language lane search_route, // primary or backup path question, versions // changed content → fresh answer }
- Repeat questions skip generation.A saved answer is served when the question, language, route and versions match.
- Each language has its own lane.Retrieval stays aligned with the selected support content.
- A backup search for harder cases.It can surface different evidence for complex or disputed questions.
Trade-off: reuse saved answers for speed; generate a fresh answer when the information needs updating.
Tested
Benchmarked across languages and search paths.
In context: best-performing lab setup, after warm-up, 20 requests per setup, compared with the corresponding uncached AI paths. The gains come from warmed repeat requests; the slower backup path can surface different evidence for complex or disputed questions.
Source links, routing details, traces and benchmark files support review of the answer path.
Next
Cut support wait times and costs on your busiest days.
I can scope a pilot around your knowledge base and channels. Hiring? Happy to walk you through how this was built.