Answer quality
Minaya is deliberately conservative: it would rather say it does not know than invent an answer. This page covers the guardrails and what to do when answers are wrong in either direction.
Grounding
The model is instructed to answer only from retrieved context, never to speculate, and never to infer that something exists because a related thing does. If a product or service is not named in your content, Minaya does not know about it.
Retrieval thresholds
Two checks decide whether a question counts as answerable:
- Chunk floor — individual chunks below a similarity threshold are discarded.
- Best-match floor — the single best chunk must clear a higher bar, or the question is treated as uncovered.
The second matters most. Without it, a pile of mediocre matches looks like evidence and invites the model to fill gaps.
Both are tunable per deployment:
RETRIEVAL_SIMILARITY_THRESHOLD=0.25
RETRIEVAL_TOP_MATCH_THRESHOLD=0.3The useful range differs between embedding providers. OpenAI and Cloudflare score the same pair of texts differently, so tune against your own logs rather than copying values.
Tuning from logs
Every question logs what retrieval found:
Query: "do you ship to canada?" — 10 retrieved [0.593, 0.589, 0.586],
10 above 0.25, best=0.593 (needs >= 0.3) → answering from contextIf legitimate questions are being refused, look at the best= values for those questions and lower RETRIEVAL_TOP_MATCH_THRESHOLD just below where they cluster. If Minaya answers things it should not, raise it.
Topic keywords
Optionally restrict Minaya to specific subjects. A message containing none of your keywords gets the fallback without reaching a model at all.
Matching is at word starts, so ship matches “shipping” but not “relationship”. Leave keywords empty to allow everything — retrieval thresholds still apply.
Keywords are a blunt filter. “When will my order arrive?” contains no keyword yet is clearly on-topic, so keep the list broad or leave it empty.
The fallback message
Shown when a question is uncovered. Write it as a helpful redirect, and include a real contact route:
Sorry, I don't have information about that. You can reach our team
at support@example.com and they'll be glad to help.Blunt fallbacks are softened automatically so the widget never reads as curt, but writing a warm one yourself is better.
Common problems
| Symptom | Likely cause |
|---|---|
| “I don't have that information” for content you know exists | The page was not crawled, or the content is client-rendered. Check the chunk count and see Crawling. |
| Answers are vague or generic | Retrieval is matching weakly. Add a focused text source phrased the way visitors ask. |
| Refuses questions it should answer | Thresholds too high, or keywords too narrow. |
| Answers went stale after a site update | Re-crawl the source; chunks are not refreshed automatically. |