{"type":"excalidraw","version":2,"source":"https://AwesomeSystemDesign.dev","elements":[{"angle":0,"strokeColor":"#628572","backgroundColor":"#edf5ee","fillStyle":"solid","strokeWidth":1.5,"strokeStyle":"solid","roughness":0.7,"opacity":100,"version":1,"versionNonce":1,"isDeleted":false,"groupIds":["step-1"],"frameId":null,"roundness":null,"boundElements":[{"type":"text","id":"shape-1"}],"updated":0,"link":null,"locked":false,"id":"shape-0","type":"rectangle","seed":41,"x":30,"y":30,"width":544.72324,"height":68,"customData":{"revealStep":1}},{"angle":0,"strokeColor":"#394557","backgroundColor":"transparent","fillStyle":"solid","strokeWidth":1.5,"strokeStyle":"solid","roughness":0.7,"opacity":100,"version":1,"versionNonce":1,"isDeleted":false,"groupIds":["step-1"],"frameId":null,"roundness":null,"boundElements":null,"updated":0,"link":null,"locked":false,"id":"shape-1","type":"text","seed":114,"x":50,"y":52.3,"width":504.72324000000003,"height":23.400000000000002,"fontSize":18,"fontFamily":1,"text":"Two-Stage Retrieval: Fast Recall → Precise Reranking","originalText":"Two-Stage Retrieval: Fast Recall → Precise Reranking","textAlign":"left","verticalAlign":"middle","containerId":"shape-0","lineHeight":1.3,"autoResize":false,"customData":{"revealStep":1}},{"angle":0,"strokeColor":"#a68a53","backgroundColor":"#fff7e6","fillStyle":"solid","strokeWidth":1.5,"strokeStyle":"solid","roughness":0.7,"opacity":100,"version":1,"versionNonce":1,"isDeleted":false,"groupIds":["step-2"],"frameId":null,"roundness":null,"boundElements":[{"type":"text","id":"shape-3"}],"updated":0,"link":null,"locked":false,"id":"shape-2","type":"rectangle","seed":187,"x":30,"y":123,"width":456.11572,"height":129.60000000000002,"customData":{"revealStep":2}},{"angle":0,"strokeColor":"#394557","backgroundColor":"transparent","fillStyle":"solid","strokeWidth":1.5,"strokeStyle":"solid","roughness":0.7,"opacity":100,"version":1,"versionNonce":1,"isDeleted":false,"groupIds":["step-2"],"frameId":null,"roundness":null,"boundElements":null,"updated":0,"link":null,"locked":false,"id":"shape-3","type":"text","seed":260,"x":50,"y":141,"width":416.11572,"height":93.60000000000001,"fontSize":18,"fontFamily":1,"text":"Stage 1: Retrieval (fast, approximate)\nVector search + BM25 → top-20 candidates\nLatency: ~20-50 ms\nQuality: good recall, noisy precision","originalText":"Stage 1: Retrieval (fast, approximate)\nVector search + BM25 → top-20 candidates\nLatency: ~20-50 ms\nQuality: good recall, noisy precision","textAlign":"left","verticalAlign":"middle","containerId":"shape-2","lineHeight":1.3,"autoResize":false,"customData":{"revealStep":2}},{"angle":0,"strokeColor":"#9180ac","backgroundColor":"#f4effb","fillStyle":"solid","strokeWidth":1.5,"strokeStyle":"solid","roughness":0.7,"opacity":100,"version":1,"versionNonce":1,"isDeleted":false,"groupIds":["step-3"],"frameId":null,"roundness":null,"boundElements":[{"type":"text","id":"shape-5"}],"updated":0,"link":null,"locked":false,"id":"shape-4","type":"rectangle","seed":333,"x":30,"y":277.6,"width":527.1696400000001,"height":199.8,"customData":{"revealStep":3}},{"angle":0,"strokeColor":"#394557","backgroundColor":"transparent","fillStyle":"solid","strokeWidth":1.5,"strokeStyle":"solid","roughness":0.7,"opacity":100,"version":1,"versionNonce":1,"isDeleted":false,"groupIds":["step-3"],"frameId":null,"roundness":null,"boundElements":null,"updated":0,"link":null,"locked":false,"id":"shape-5","type":"text","seed":406,"x":50,"y":295.6,"width":487.1696400000001,"height":163.8,"fontSize":18,"fontFamily":1,"text":"Stage 2: Reranking (slow, precise)\nCross-encoder model scores each (query, chunk) pair\nInput: full query text + full chunk text\nOutput: relevance score 0-1\n→ Re-order top-20 → select top-5\nLatency: ~50-100 ms (20 pairs × 5 ms each)\nQuality: much higher precision than bi-encoder cosine","originalText":"Stage 2: Reranking (slow, precise)\nCross-encoder model scores each (query, chunk) pair\nInput: full query text + full chunk text\nOutput: relevance score 0-1\n→ Re-order top-20 → select top-5\nLatency: ~50-100 ms (20 pairs × 5 ms each)\nQuality: much higher precision than bi-encoder cosine","textAlign":"left","verticalAlign":"middle","containerId":"shape-4","lineHeight":1.3,"autoResize":false,"customData":{"revealStep":3}},{"angle":0,"strokeColor":"#6577aa","backgroundColor":"#eef1fc","fillStyle":"solid","strokeWidth":1.5,"strokeStyle":"solid","roughness":0.7,"opacity":100,"version":1,"versionNonce":1,"isDeleted":false,"groupIds":["step-4"],"frameId":null,"roundness":null,"boundElements":[{"type":"text","id":"shape-7"}],"updated":0,"link":null,"locked":false,"id":"shape-6","type":"rectangle","seed":479,"x":30,"y":502.40000000000003,"width":536.1944800000001,"height":68,"customData":{"revealStep":4}},{"angle":0,"strokeColor":"#394557","backgroundColor":"transparent","fillStyle":"solid","strokeWidth":1.5,"strokeStyle":"solid","roughness":0.7,"opacity":100,"version":1,"versionNonce":1,"isDeleted":false,"groupIds":["step-4"],"frameId":null,"roundness":null,"boundElements":null,"updated":0,"link":null,"locked":false,"id":"shape-7","type":"text","seed":552,"x":50,"y":524.7,"width":496.1944800000001,"height":23.400000000000002,"fontSize":18,"fontFamily":1,"text":"Why cross-encoder is better than bi-encoder (cosine):","originalText":"Why cross-encoder is better than bi-encoder (cosine):","textAlign":"left","verticalAlign":"middle","containerId":"shape-6","lineHeight":1.3,"autoResize":false,"customData":{"revealStep":4}},{"angle":0,"strokeColor":"#628572","backgroundColor":"#edf5ee","fillStyle":"solid","strokeWidth":1.5,"strokeStyle":"solid","roughness":0.7,"opacity":100,"version":1,"versionNonce":1,"isDeleted":false,"groupIds":["step-5"],"frameId":null,"roundness":null,"boundElements":[{"type":"text","id":"shape-9"}],"updated":0,"link":null,"locked":false,"id":"shape-8","type":"rectangle","seed":625,"x":30,"y":595.4000000000001,"width":543.84556,"height":199.8,"customData":{"revealStep":5}},{"angle":0,"strokeColor":"#394557","backgroundColor":"transparent","fillStyle":"solid","strokeWidth":1.5,"strokeStyle":"solid","roughness":0.7,"opacity":100,"version":1,"versionNonce":1,"isDeleted":false,"groupIds":["step-5"],"frameId":null,"roundness":null,"boundElements":null,"updated":0,"link":null,"locked":false,"id":"shape-9","type":"text","seed":698,"x":50,"y":613.4000000000001,"width":503.84556,"height":163.8,"fontSize":18,"fontFamily":1,"text":"Bi-encoder (retrieval):\nEmbed query → vector_q\nEmbed chunk → vector_c (precomputed at ingestion)\nScore = cosine(vector_q, vector_c)\nFast but: query and chunk encoded\nINDEPENDENTLY\n→ Can't model fine-grained token interactions","originalText":"Bi-encoder (retrieval):\nEmbed query → vector_q\nEmbed chunk → vector_c (precomputed at ingestion)\nScore = cosine(vector_q, vector_c)\nFast but: query and chunk encoded\nINDEPENDENTLY\n→ Can't model fine-grained token interactions","textAlign":"left","verticalAlign":"middle","containerId":"shape-8","lineHeight":1.3,"autoResize":false,"customData":{"revealStep":5}},{"angle":0,"strokeColor":"#a68a53","backgroundColor":"#fff7e6","fillStyle":"solid","strokeWidth":1.5,"strokeStyle":"solid","roughness":0.7,"opacity":100,"version":1,"versionNonce":1,"isDeleted":false,"groupIds":["step-6"],"frameId":null,"roundness":null,"boundElements":[{"type":"text","id":"shape-11"}],"updated":0,"link":null,"locked":false,"id":"shape-10","type":"rectangle","seed":771,"x":30,"y":820.2,"width":616.42588,"height":176.4,"customData":{"revealStep":6}},{"angle":0,"strokeColor":"#394557","backgroundColor":"transparent","fillStyle":"solid","strokeWidth":1.5,"strokeStyle":"solid","roughness":0.7,"opacity":100,"version":1,"versionNonce":1,"isDeleted":false,"groupIds":["step-6"],"frameId":null,"roundness":null,"boundElements":null,"updated":0,"link":null,"locked":false,"id":"shape-11","type":"text","seed":844,"x":50,"y":838.2,"width":576.42588,"height":140.4,"fontSize":18,"fontFamily":1,"text":"Cross-encoder (reranking):\nInput: [CLS] query [SEP] chunk [SEP] → transformer\nScore = model output\nSlow but: query and chunk tokens ATTEND TO EACH OTHER\n→ Understands \"ERR-4231\" in query relates to \"error 4231\"\nin the chunk, even though embeddings might miss this","originalText":"Cross-encoder (reranking):\nInput: [CLS] query [SEP] chunk [SEP] → transformer\nScore = model output\nSlow but: query and chunk tokens ATTEND TO EACH OTHER\n→ Understands \"ERR-4231\" in query relates to \"error 4231\"\nin the chunk, even though embeddings might miss this","textAlign":"left","verticalAlign":"middle","containerId":"shape-10","lineHeight":1.3,"autoResize":false,"customData":{"revealStep":6}},{"angle":0,"strokeColor":"#9180ac","backgroundColor":"#f4effb","fillStyle":"solid","strokeWidth":1.5,"strokeStyle":"solid","roughness":0.7,"opacity":100,"version":1,"versionNonce":1,"isDeleted":false,"groupIds":["step-7"],"frameId":null,"roundness":null,"boundElements":[{"type":"text","id":"shape-13"}],"updated":0,"link":null,"locked":false,"id":"shape-12","type":"rectangle","seed":917,"x":30,"y":1021.6,"width":621.53932,"height":106.2,"customData":{"revealStep":7}},{"angle":0,"strokeColor":"#394557","backgroundColor":"transparent","fillStyle":"solid","strokeWidth":1.5,"strokeStyle":"solid","roughness":0.7,"opacity":100,"version":1,"versionNonce":1,"isDeleted":false,"groupIds":["step-7"],"frameId":null,"roundness":null,"boundElements":null,"updated":0,"link":null,"locked":false,"id":"shape-13","type":"text","seed":990,"x":50,"y":1039.6,"width":581.53932,"height":70.2,"fontSize":18,"fontFamily":1,"text":"Models: Cohere Rerank, BGE-reranker, cross-encoder-ms-marco\nCan't use for initial search (too slow for 5B chunks)\nBut perfect for re-scoring 20 candidates","originalText":"Models: Cohere Rerank, BGE-reranker, cross-encoder-ms-marco\nCan't use for initial search (too slow for 5B chunks)\nBut perfect for re-scoring 20 candidates","textAlign":"left","verticalAlign":"middle","containerId":"shape-12","lineHeight":1.3,"autoResize":false,"customData":{"revealStep":7}}],"appState":{"viewBackgroundColor":"#fbfbf8","gridSize":null},"files":{}}