System overview · Retrieval pipeline
Ask a question in plain language; get back the exact moments in Yaqeen's video library that answer it, each one a click away from playing at that second — plus a cited AI summary. Here is what happens between the question and the answer.
Done once per video, ahead of time.
Every video's transcript comes from Yaqeen's transcription service already carrying
sentence-level timestamps, so we never have to align text to audio — the timing is free.
We cut each transcript into ~60-second windows that overlap by 15 seconds
(so a thought split across a boundary is still findable), and store every window as a
searchable record in GoodMem, our vector database. Each record keeps the
text plus its source: video_id, title, and start/end
seconds — everything needed to build a jump-to-the-moment YouTube link later.
Two collections are built: one of the ~70,000 transcript moments, and a second of the 2,190 video titles. The title collection is what lets a strong title match ("Malcolm X's Legacy") lift a whole video, not just one line of it.
The live path, every search, in well under two seconds.
Four decisions that carry the quality of the results.
| Piece | What it buys us |
|---|---|
| Reranker | A raw vector match is fuzzy. The Voyage reranker re-reads each candidate against the actual question and returns a calibrated 0–1 relevance, which is what makes a meaningful cut-off possible at all. |
| Title weighting | People often search for what a video is about, not a passing line. Weighting the title 60% surfaces the right video as a whole, then points inside it. |
| Keyword index | Semantic search has a blind spot: names. "Osama bin Laden" pulls the companion "Usama ibn Zayd" instead. A direct keyword match is a certainty the model shouldn't override — so it bypasses the reranker and the threshold. |
| Relevance gate | Vector search always returns something. The 0.68 floor lets the system say "we don't cover this" — an empty result — instead of showing confident-looking but off-topic cards. |
The keyword index earning its place — a query the model alone gets wrong.
osama, bin, laden. It's injected past the gate and surfaces at
8:20 — the correct answer the model had buried.
| Layer | What we use |
|---|---|
| Vector store | GoodMem — holds the moments and titles, runs semantic search + reranking |
| Embeddings | Voyage voyage-3-large |
| Reranker | Voyage rerank-2.5 |
| AI summary | gpt-4.1-mini via OpenRouter — grounded only in the shown results |
| Chunking | 60-second windows, 15-second overlap |
| Tuning | title 0.6 / body 0.4 · relevance floor 0.68 · exact-match override |
Snapshot of the current configuration — every weight and threshold above is a single tunable value, adjusted from live query traces.