{"version":2,"relationshipURLBase":"https://codingai-lec03.pages.dev/course/notebook-blocks/62a7fe6e03324fd9877c139c11e4ce0e.html","relationshipResolution":"Resolve relative relationship URLs against relationshipURLBase; complete records and absolute URLs are in blocks.","title":"3 · 实际的近似索引：先路由到簇，再在簇内精排","url":"https://codingai-lec03.pages.dev/course/notebook-blocks/62a7fe6e03324fd9877c139c11e4ce0e.html","markdown":"https://codingai-lec03.pages.dev/course/notebook-blocks/62a7fe6e03324fd9877c139c11e4ce0e.md","pages":[{"id":"reading-opening","title":"3 · 实际的近似索引：先路由到簇，再在簇内精排","unit":"3 · 实际的近似索引：先路由到簇，再在簇内精排","unitId":"notebook-blocks/62a7fe6e03324fd9877c139c11e4ce0e","chapter":"course","number":1}],"aliases":[{"oldId":"b-81053b07b558c5d1eb62d37e","targetId":"b-81053b07b558c5d1eb62d37e","page":"reading-opening","operation":"move","beforeSHA256":"1a4de4df51c1a8787dc96ec401888dfe89d250842519319b9af7a931ca765eee","afterSHA256":"1a4de4df51c1a8787dc96ec401888dfe89d250842519319b9af7a931ca765eee","reason":"Same source body in authored semantic page"},{"oldId":"b-bbb12c312f170e97fa3881ad","targetId":"b-bbb12c312f170e97fa3881ad","page":"reading-opening","operation":"move","beforeSHA256":"4cc80dce0704057871abac709bd2434ce78d411b1119ff82a910e80096c70656","afterSHA256":"4cc80dce0704057871abac709bd2434ce78d411b1119ff82a910e80096c70656","reason":"Same source body in authored semantic page"},{"oldId":"b-8d78c4e83c1d1f8a2402dc12","targetId":"b-8d78c4e83c1d1f8a2402dc12","page":"reading-opening","operation":"move","beforeSHA256":"dc06c1e728a4b5740ba634b145bc9a1da6323031626734cb4555db5a744df806","afterSHA256":"dc06c1e728a4b5740ba634b145bc9a1da6323031626734cb4555db5a744df806","reason":"Same source body in authored semantic page"},{"oldId":"b-83b9b246e522f59bb8ea796b","targetId":"b-83b9b246e522f59bb8ea796b","page":"reading-opening","operation":"move","beforeSHA256":"8021c18afc52ba7b6612f43ecfb0fdd4789efe91cc9cd656984357d81a8514de","afterSHA256":"8021c18afc52ba7b6612f43ecfb0fdd4789efe91cc9cd656984357d81a8514de","reason":"Same source body in authored semantic page"},{"oldId":"b-affac8b4eb5f75b142bda9aa","targetId":"b-affac8b4eb5f75b142bda9aa","page":"reading-opening","operation":"move","beforeSHA256":"72042c5a397268efdedab711c30b3be6e811dbf705389989de882bfab7e7565c","afterSHA256":"72042c5a397268efdedab711c30b3be6e811dbf705389989de882bfab7e7565c","reason":"Same source body in authored semantic page"},{"oldId":"b-fbee05c8bcda8035e714fdc5","targetId":"b-fbee05c8bcda8035e714fdc5","page":"reading-opening","operation":"move","beforeSHA256":"e912abb9cf15500ad588e974eab6aaf8e3a3dbfb4a3289c72d0cebe6988f1272","afterSHA256":"e912abb9cf15500ad588e974eab6aaf8e3a3dbfb4a3289c72d0cebe6988f1272","reason":"Same source body in authored semantic page"},{"oldId":"b-1bf5e7cb522507cf9ae9c6e7","targetId":"b-1bf5e7cb522507cf9ae9c6e7","page":"reading-opening","operation":"move","beforeSHA256":"6f11c5e11524e032f183e4cb3071fb0773bf2a4e4ec7c99fc8f90f22962ea858","afterSHA256":"6f11c5e11524e032f183e4cb3071fb0773bf2a4e4ec7c99fc8f90f22962ea858","reason":"Same source body in authored semantic page"},{"oldId":"b-67b2969be139576635fd315b","targetId":"b-67b2969be139576635fd315b","page":"reading-opening","operation":"move","beforeSHA256":"17197a3b41b63d107be94a74b22c9ae450a89fee34051c2caca715be92157969","afterSHA256":"17197a3b41b63d107be94a74b22c9ae450a89fee34051c2caca715be92157969","reason":"Same source body in authored semantic page"},{"oldId":"block-62a7fe6e03324fd9877c139c11e4ce0e--3-实际的近似索引先路由到簇再在簇内精排","targetId":"b-affac8b4eb5f75b142bda9aa","operation":"retain-source-identity"}],"blocks":[{"id":"b-81053b07b558c5d1eb62d37e","type":"p","scope":"document","url":"https://codingai-lec03.pages.dev/course/notebook-blocks/62a7fe6e03324fd9877c139c11e4ce0e.html#b-81053b07b558c5d1eb62d37e","content":"[LAB 12 · CLIP延伸：缓存与检索（近似索引选读）](/course/notebooks/921eeaf784284ce19568c6ca7619b55a.html)","sha256":"1a4de4df51c1a8787dc96ec401888dfe89d250842519319b9af7a931ca765eee","chapter":{"id":"course","title":"3 · 实际的近似索引：先路由到簇，再在簇内精排"},"unit":{"id":"notebook-blocks/62a7fe6e03324fd9877c139c11e4ce0e","title":"3 · 实际的近似索引：先路由到簇，再在簇内精排"},"page":{"id":"reading-opening","title":"3 · 实际的近似索引：先路由到簇，再在簇内精排","number":1},"sectionTitle":"3 · 实际的近似索引：先路由到簇，再在簇内精排","currentQuestion":"3 · 实际的近似索引：先路由到簇，再在簇内精排","sourceSlides":[],"knowledgeBlock":null,"formulas":[],"previousBlock":null,"nextBlock":"b-bbb12c312f170e97fa3881ad","prerequisites":[],"relatedBlocks":[]},{"id":"b-bbb12c312f170e97fa3881ad","type":"h1","scope":"document","url":"https://codingai-lec03.pages.dev/course/notebook-blocks/62a7fe6e03324fd9877c139c11e4ce0e.html#b-bbb12c312f170e97fa3881ad","content":"# 3 · 实际的近似索引：先路由到簇，再在簇内精排","sha256":"4cc80dce0704057871abac709bd2434ce78d411b1119ff82a910e80096c70656","chapter":{"id":"course","title":"3 · 实际的近似索引：先路由到簇，再在簇内精排"},"unit":{"id":"notebook-blocks/62a7fe6e03324fd9877c139c11e4ce0e","title":"3 · 实际的近似索引：先路由到簇，再在簇内精排"},"page":{"id":"reading-opening","title":"3 · 实际的近似索引：先路由到簇，再在簇内精排","number":1},"sectionTitle":"3 · 实际的近似索引：先路由到簇，再在簇内精排","currentQuestion":"3 · 实际的近似索引：先路由到簇，再在簇内精排","sourceSlides":[],"knowledgeBlock":null,"formulas":[],"previousBlock":"b-81053b07b558c5d1eb62d37e","nextBlock":"b-8d78c4e83c1d1f8a2402dc12","prerequisites":[{"id":"b-81053b07b558c5d1eb62d37e","url":"#b-81053b07b558c5d1eb62d37e","role":"problem-context"}],"relatedBlocks":[]},{"id":"b-8d78c4e83c1d1f8a2402dc12","type":"p","scope":"document","url":"https://codingai-lec03.pages.dev/course/notebook-blocks/62a7fe6e03324fd9877c139c11e4ce0e.html#b-8d78c4e83c1d1f8a2402dc12","content":"并入相关学习路径","sha256":"dc06c1e728a4b5740ba634b145bc9a1da6323031626734cb4555db5a744df806","chapter":{"id":"course","title":"3 · 实际的近似索引：先路由到簇，再在簇内精排"},"unit":{"id":"notebook-blocks/62a7fe6e03324fd9877c139c11e4ce0e","title":"3 · 实际的近似索引：先路由到簇，再在簇内精排"},"page":{"id":"reading-opening","title":"3 · 实际的近似索引：先路由到簇，再在簇内精排","number":1},"sectionTitle":"3 · 实际的近似索引：先路由到簇，再在簇内精排","currentQuestion":"3 · 实际的近似索引：先路由到簇，再在簇内精排","sourceSlides":[],"knowledgeBlock":null,"formulas":[],"previousBlock":"b-bbb12c312f170e97fa3881ad","nextBlock":"b-83b9b246e522f59bb8ea796b","prerequisites":[{"id":"b-bbb12c312f170e97fa3881ad","url":"#b-bbb12c312f170e97fa3881ad","role":"section-title"},{"id":"b-81053b07b558c5d1eb62d37e","url":"#b-81053b07b558c5d1eb62d37e","role":"problem-context"}],"relatedBlocks":[]},{"id":"b-83b9b246e522f59bb8ea796b","type":"p","scope":"document","url":"https://codingai-lec03.pages.dev/course/notebook-blocks/62a7fe6e03324fd9877c139c11e4ce0e.html#b-83b9b246e522f59bb8ea796b","content":"同一CLIP缓存、exact/IVF搜索、延迟/扫描量、区域交互基线","sha256":"8021c18afc52ba7b6612f43ecfb0fdd4789efe91cc9cd656984357d81a8514de","chapter":{"id":"course","title":"3 · 实际的近似索引：先路由到簇，再在簇内精排"},"unit":{"id":"notebook-blocks/62a7fe6e03324fd9877c139c11e4ce0e","title":"3 · 实际的近似索引：先路由到簇，再在簇内精排"},"page":{"id":"reading-opening","title":"3 · 实际的近似索引：先路由到簇，再在簇内精排","number":1},"sectionTitle":"3 · 实际的近似索引：先路由到簇，再在簇内精排","currentQuestion":"3 · 实际的近似索引：先路由到簇，再在簇内精排","sourceSlides":[],"knowledgeBlock":null,"formulas":[],"previousBlock":"b-8d78c4e83c1d1f8a2402dc12","nextBlock":"b-affac8b4eb5f75b142bda9aa","prerequisites":[{"id":"b-bbb12c312f170e97fa3881ad","url":"#b-bbb12c312f170e97fa3881ad","role":"section-title"},{"id":"b-81053b07b558c5d1eb62d37e","url":"#b-81053b07b558c5d1eb62d37e","role":"problem-context"}],"relatedBlocks":[]},{"id":"b-affac8b4eb5f75b142bda9aa","type":"h2","scope":"document","url":"https://codingai-lec03.pages.dev/course/notebook-blocks/62a7fe6e03324fd9877c139c11e4ce0e.html#b-affac8b4eb5f75b142bda9aa","content":"## 3 · 实际的近似索引：先路由到簇，再在簇内精排","sha256":"72042c5a397268efdedab711c30b3be6e811dbf705389989de882bfab7e7565c","chapter":{"id":"course","title":"3 · 实际的近似索引：先路由到簇，再在簇内精排"},"unit":{"id":"notebook-blocks/62a7fe6e03324fd9877c139c11e4ce0e","title":"3 · 实际的近似索引：先路由到簇，再在簇内精排"},"page":{"id":"reading-opening","title":"3 · 实际的近似索引：先路由到簇，再在簇内精排","number":1},"sectionTitle":"3 · 实际的近似索引：先路由到簇，再在簇内精排","currentQuestion":"3 · 实际的近似索引：先路由到簇，再在簇内精排","sourceSlides":[],"knowledgeBlock":null,"formulas":[],"previousBlock":"b-83b9b246e522f59bb8ea796b","nextBlock":"b-fbee05c8bcda8035e714fdc5","prerequisites":[{"id":"b-bbb12c312f170e97fa3881ad","url":"#b-bbb12c312f170e97fa3881ad","role":"section-title"},{"id":"b-81053b07b558c5d1eb62d37e","url":"#b-81053b07b558c5d1eb62d37e","role":"problem-context"}],"relatedBlocks":[]},{"id":"b-fbee05c8bcda8035e714fdc5","type":"p","scope":"document","url":"https://codingai-lec03.pages.dev/course/notebook-blocks/62a7fe6e03324fd9877c139c11e4ce0e.html#b-fbee05c8bcda8035e714fdc5","content":"本实验实现 IVF-Flat，而不只是打印一个标为 ANN 的 Recall。首先对归一化图像特征做固定 seed=17 的 spherical k-means，得到 8 个中心；每张图分配到 cosine 最大的中心，倒排表保存该簇内真实图片 ID。查询时先计算到 8 个中心的分数，只打开最近的 `nprobe` 个簇，然后对候选图片的原 float32 向量计算精确 cosine 并排序。","sha256":"e912abb9cf15500ad588e974eab6aaf8e3a3dbfb4a3289c72d0cebe6988f1272","chapter":{"id":"course","title":"3 · 实际的近似索引：先路由到簇，再在簇内精排"},"unit":{"id":"notebook-blocks/62a7fe6e03324fd9877c139c11e4ce0e","title":"3 · 实际的近似索引：先路由到簇，再在簇内精排"},"page":{"id":"reading-opening","title":"3 · 实际的近似索引：先路由到簇，再在簇内精排","number":1},"sectionTitle":"3 · 实际的近似索引：先路由到簇，再在簇内精排","currentQuestion":"3 · 实际的近似索引：先路由到簇，再在簇内精排","sourceSlides":[],"knowledgeBlock":null,"formulas":[],"previousBlock":"b-affac8b4eb5f75b142bda9aa","nextBlock":"b-1bf5e7cb522507cf9ae9c6e7","prerequisites":[{"id":"b-affac8b4eb5f75b142bda9aa","url":"#b-affac8b4eb5f75b142bda9aa","role":"section-title"},{"id":"b-81053b07b558c5d1eb62d37e","url":"#b-81053b07b558c5d1eb62d37e","role":"problem-context"}],"relatedBlocks":[]},{"id":"b-1bf5e7cb522507cf9ae9c6e7","type":"p","scope":"document","url":"https://codingai-lec03.pages.dev/course/notebook-blocks/62a7fe6e03324fd9877c139c11e4ce0e.html#b-1bf5e7cb522507cf9ae9c6e7","content":"近似发生在“哪些簇被打开”，不是候选内部的打分。一个本来应在 exact 前三的图只要被放进未打开的簇，就可能漏检。`nprobe` 增大通常减少这种遗漏，但候选扫描增多；当 `nprobe=8` 时所有桶都打开，应恢复 exact 的相同排名。本例以图片 ID 作为相同分数的固定次序，避免把平分的排序差异误认为近似错误。","sha256":"6f11c5e11524e032f183e4cb3071fb0773bf2a4e4ec7c99fc8f90f22962ea858","chapter":{"id":"course","title":"3 · 实际的近似索引：先路由到簇，再在簇内精排"},"unit":{"id":"notebook-blocks/62a7fe6e03324fd9877c139c11e4ce0e","title":"3 · 实际的近似索引：先路由到簇，再在簇内精排"},"page":{"id":"reading-opening","title":"3 · 实际的近似索引：先路由到簇，再在簇内精排","number":1},"sectionTitle":"3 · 实际的近似索引：先路由到簇，再在簇内精排","currentQuestion":"3 · 实际的近似索引：先路由到簇，再在簇内精排","sourceSlides":[],"knowledgeBlock":null,"formulas":[],"previousBlock":"b-fbee05c8bcda8035e714fdc5","nextBlock":"b-67b2969be139576635fd315b","prerequisites":[{"id":"b-affac8b4eb5f75b142bda9aa","url":"#b-affac8b4eb5f75b142bda9aa","role":"section-title"},{"id":"b-81053b07b558c5d1eb62d37e","url":"#b-81053b07b558c5d1eb62d37e","role":"problem-context"}],"relatedBlocks":[]},{"id":"b-67b2969be139576635fd315b","type":"p","scope":"document","url":"https://codingai-lec03.pages.dev/course/notebook-blocks/62a7fe6e03324fd9877c139c11e4ce0e.html#b-67b2969be139576635fd315b","content":"下面是真正参与当前实验的聚类代码；完整脚本还有文件核验、向量缓存和结果保存。","sha256":"17197a3b41b63d107be94a74b22c9ae450a89fee34051c2caca715be92157969","chapter":{"id":"course","title":"3 · 实际的近似索引：先路由到簇，再在簇内精排"},"unit":{"id":"notebook-blocks/62a7fe6e03324fd9877c139c11e4ce0e","title":"3 · 实际的近似索引：先路由到簇，再在簇内精排"},"page":{"id":"reading-opening","title":"3 · 实际的近似索引：先路由到簇，再在簇内精排","number":1},"sectionTitle":"3 · 实际的近似索引：先路由到簇，再在簇内精排","currentQuestion":"3 · 实际的近似索引：先路由到簇，再在簇内精排","sourceSlides":[],"knowledgeBlock":null,"formulas":[],"previousBlock":"b-1bf5e7cb522507cf9ae9c6e7","nextBlock":null,"prerequisites":[{"id":"b-affac8b4eb5f75b142bda9aa","url":"#b-affac8b4eb5f75b142bda9aa","role":"section-title"},{"id":"b-81053b07b558c5d1eb62d37e","url":"#b-81053b07b558c5d1eb62d37e","role":"problem-context"}],"relatedBlocks":[]}]}
