ID: 8c3eb862-14d Priority: 96 Type: one_shot Status: resolved
[Search] Fix /api/search taking 5s — optimize FTS5 queries
Finding: /api/search performance is well within acceptable limits. Benchmarks run against live server:
FOXP1 neurodegeneration (2 terms): 106mstau protein alzheimer (3 terms): 436msalpha synuclein parkinson (3 terms): 294ms5ef94d65e [Search] Add FTS5 indexes for knowledge_gaps + notebooks [task:512d8d01]4d2f22c9b [Atlas] Wire hybrid search (FTS5 + ChromaDB semantic) into /api/searchVerification: Confirmed FTS5 optimization is on main via:
ef06843c9 [Search] Upgrade search to FTS5 with BM25 ranking5ef94d65e [Search] Add FTS5 indexes for knowledge_gaps + notebooks4d2f22c9b [Atlas] Wire hybrid search (FTS5 + ChromaDB semantic) into /api/searchProblem identified: While FTS5 queries were already fast (~100-600ms), the hybrid search path in api_search() calls semantic_search() which loads the SentenceTransformer model and queries ChromaDB. On a cold start this takes ~22 seconds, blocking the entire search response.
Fix applied (orchestra/task/8c3eb862-search-fts5-v3):
_semantic_search call in ThreadPoolExecutor with 2-second timeoutTimeoutError, logs at debug level and returns FTS-only results (graceful degradation)tau → 652ms method=hybrid n=60FOXP1 neurodegeneration → 481ms method=hybrid n=17alpha synuclein parkinson → 584ms method=hybrid n=3185f69e6e7 [Search] Add 2s timeout to semantic_search in /api/search — degrades gracefully to FTS-only [task:8c3eb862-14df-4e69-bfc4-7e2739e859da]Branch pushed: orchestra/task/8c3eb862-search-fts5-v3
{
"completion_shas": [
"2f416fc29ba48c8593696afcc4babec8b2c177f7"
],
"completion_shas_checked_at": "2026-04-13T19:54:14.615777+00:00",
"completion_shas_missing": [
"20b8aabf166f35220de0c80d61bb7f76270cde0c",
"0a163dd2a5ad5d5edb11f1b08ae7f62e4fe73c9c",
"2c4b87dd2b0aceb78cdc01b619cf261c3495e808"
]
}