Research and eval

Retrieval evaluation

Search combines keyword and vector search with RRF k = 20, indexes Korean as two-syllable pairs, and uses no reranker. Each choice was measured on a fixed store of 176 documents.

How search is set up

StepSetting
Keyword searchFull-text search over chunks; Korean indexed as two-syllable pairs
Keyword gateThe keyword list leaves fusion when vector results exist and none of the top 20 keyword results holds half the query's terms
Vector searchChunk vectors from the embedding model
FusionRRF, k = 20
RerankerNone

The fusion score of chunk d, where rm(d) is its rank in search m starting from 1:

RRF(d)=∑m∈{fts,vec}120+rm(d)

Results

SetQuestionsnDCG@10R@1R@3R@5
Canonical1180.7330.6190.7710.822
Hand-written750.7810.6400.8000.853

Measured on the production setup as it runs, 2026-10-22: each document piece encoded alone, as the hub does, on a CPU with AVX-512 VNNI like the hub's. Against the 2026-10-19 measurement, which encoded pieces eight at a time, every metric moved within noise.

Scoring

Each question has one gold document. The top ten chunks are grouped into documents in order and the gold document's rank is scored.

MetricFormula
R@k (k = 1, 3, 5)1|Q|∑q1[0<rankq≤k]
MRR1|Q|∑q1rankq
nDCG@101|Q|∑q1log2(rankq+1)

A missed question scores 0. With one gold document the ideal DCG is 1, so nDCG@10 reduces to the term above.

Question sets

All sets run on a fixed store of 176 Korean and English documents.

SetQuestionsSource
Canonical118 (60 same language, 28 Korean → English, 30 English → Korean)Section headings of the gold document and their translations
Hand-written75 (50 same language, 25 Korean → English)Questions a person would type, sharing no three consecutive content words with any heading

Headings share words with the body text, so the canonical set favours keyword search.