--- id: wiki-2026-0508-reranking title: Reranking category: AI_and_ML status: needs_review canonical_id: self aliases: [P-Reinforce-AUTO-RRK-001] duplicate_of: none source_trust_level: A confidence_score: 1.0 tags: [auto-reinforced, reranking, information-retrieval, ranking, cross-encoder, search-optimization] raw_sources: [] last_reinforced: 2026-05-04 github_commit: pending inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08) tech_stack: language: unspecified framework: unspecified --- # [[Reranking|Reranking]] ## πŸ“Œ ν•œ 쀄 톡찰 (The Karpathy Summary) > "κ²€μƒ‰μ˜ 2μ°¨ λ©΄μ ‘: λΉ λ₯Έ 1μ°¨ 검색(Retriever)으둜 μ„ λ³„λœ μˆ˜λ§Žμ€ 후보 λ¬Έμ„œ 쀑, κ³ μ„±λŠ₯ λͺ¨λΈμ„ μ‚¬μš©ν•˜μ—¬ μ‚¬μš©μžμ˜ μ§ˆλ¬Έμ— κ°€μž₯ μ ν•©ν•œ μ†Œμˆ˜μ˜ μ •λ‹΅ 후보λ₯Ό 맀우 μ •λ°€ν•˜κ²Œ λ‹€μ‹œ μ •λ ¬ν•˜λŠ” ν’ˆμ§ˆ μ΅œμ ν™” 단계." ## πŸ“– κ΅¬μ‘°ν™”λœ 지식 (Synthesized Content) μž¬μˆœμœ„ν™”(Reranking)λŠ” 정보 검색 μ‹œμŠ€ν…œμ—μ„œ 검색 결과의 정확도λ₯Ό 높이기 μœ„ν•΄ μˆ˜ν–‰ν•˜λŠ” 두 번째 λž­ν‚Ή λ‹¨κ³„μž…λ‹ˆλ‹€. 1. **μ™œ μž¬μˆœμœ„ν™”κ°€ ν•„μš”ν•œκ°€? (Two-stage Retrieval)**: * **1단계 (Retrieval)**: [[Vector Search|벑터 검색]]μ΄λ‚˜ [[BM25|BM25]]λ₯Ό 톡해 수백만 개의 λ¬Έμ„œ 쀑 수백 개의 후보λ₯Ό μ•„μ£Ό λΉ λ₯΄κ²Œ(Low Latency) λ½‘μ•„λƒ…λ‹ˆλ‹€. ν•˜μ§€λ§Œ 정밀도가 μ™„λ²½ν•˜μ§€ μ•Šμ„ 수 μžˆμŠ΅λ‹ˆλ‹€. * **2단계 (Reranking)**: 1λ‹¨κ³„μ—μ„œ λ½‘νžŒ μ†Œμˆ˜μ˜ ν›„λ³΄λ“€λ§Œ λŒ€μƒμœΌλ‘œ λ¬΄κ²μ§€λ§Œ μ •κ΅ν•œ λͺ¨λΈμ„ κ°€λ™ν•˜μ—¬ μˆœμœ„λ₯Ό μ‘°μ •ν•©λ‹ˆλ‹€. 2. **핡심 λͺ¨λΈ: [[Cross-Encoder|Cross-Encoder]]**: * 질문(Query)κ³Ό λ¬Έμ„œ(Document)λ₯Ό ν•˜λ‚˜μ˜ 쌍으둜 λ¬Άμ–΄ λ™μ‹œμ— μž…λ ₯λ°›μ•„ λ‘˜ μ‚¬μ΄μ˜ 관련성을 직접 κ³„μ‚°ν•©λ‹ˆλ‹€. * 벑터 μœ μ‚¬λ„ 방식([[Bi-Encoder]])보닀 훨씬 μ •λ°€ν•˜κ²Œ λ¬Έλ§₯적 μΌμΉ˜λ„λ₯Ό νŒŒμ•…ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 3. **ν•™μŠ΅ μ•Œκ³ λ¦¬μ¦˜ ([[Learning to Rank (LTR)|LTR]])**: * [[Decision Tree & XGBoost|XGBoost]], LambdaMART 등을 ν™œμš©ν•˜μ—¬ μ‚¬μš©μž 클릭 λ°μ΄ν„°λ‚˜ μ „λ¬Έκ°€ ν”Όλ“œλ°±μ„ 기반으둜 졜적의 λž­ν‚Ή λͺ¨λΈμ„ ν›ˆλ ¨μ‹œν‚΅λ‹ˆλ‹€. ## ⚠️ λͺ¨μˆœ 및 μ—…λ°μ΄νŠΈ (Contradictions & Updates) * **μ§€μ—° μ‹œκ°„ (Latency)**: κ³ μ„±λŠ₯ λͺ¨λΈμ„ μ‚¬μš©ν•˜λ―€λ‘œ 검색 속도가 느렀질 수 μžˆμŠ΅λ‹ˆλ‹€. λ”°λΌμ„œ λž­ν‚Ή λŒ€μƒ λ¬Έμ„œ 수λ₯Ό 적절히 μ œν•œ(예: Top 50~100개)ν•΄μ•Ό ν•©λ‹ˆλ‹€. * **μ»΄ν“¨νŒ… λΉ„μš©**: 1단계 검색에 λΉ„ν•΄ 훨씬 λ§Žμ€ GPU/CPU μ—°μ‚° μžμ›μ΄ μ†Œλͺ¨λ©λ‹ˆλ‹€. * **데이터 μ˜μ‘΄μ„±**: μž¬μˆœμœ„ν™” λͺ¨λΈμ˜ μ„±λŠ₯은 ν•™μŠ΅μ— μ‚¬μš©λœ [[Judgment List|νŒλ‹¨ 리슀트 (Judgment List)]]의 ν’ˆμ§ˆκ³Ό 도메인 적합성에 크게 μ’Œμš°λ©λ‹ˆλ‹€. ## πŸ’» μ‹€μ „ κ΅¬ν˜„ μ½”λ“œ (Boilerplate) `Sentence Transformers` 라이브러리λ₯Ό μ‚¬μš©ν•˜μ—¬ 검색 결과의 μˆœμœ„λ₯Ό λ‹€μ‹œ λ§€κΈ°λŠ” 기초 μ˜ˆμ‹œμž…λ‹ˆλ‹€. ```python from sentence_transformers import CrossEncoder # 1. κ³ μ„±λŠ₯ μž¬μˆœμœ„ν™” λͺ¨λΈ λ‘œλ“œ model = CrossEncoder('cross-encoder/ms-marco-MiniLM-L-6-v2') # 2. 1μ°¨ 검색 κ²°κ³Ό (질문 - λ¬Έμ„œ 쌍) query = "Astra ν”„λ‘œμ νŠΈμ˜ μž₯점이 뭐야?" candidates = [ "AstraλŠ” 자율적으둜 지식을 λ³΄κ°•ν•˜λŠ” 엔진을 κ°€μ§€κ³  μžˆμŠ΅λ‹ˆλ‹€.", "μ•„μŠ€νŠΈλΌμ œλ„€μΉ΄ 백신은 μ½”λ‘œλ‚˜ μ˜ˆλ°©μ— νš¨κ³Όμ μž…λ‹ˆλ‹€.", # μ˜€λ‹΅ 후보 (ν‚€μ›Œλ“œ 일치) "P-Reinforce ν‘œμ€€μ€ μœ„ν‚€ ꡬ쑰화λ₯Ό λ•μŠ΅λ‹ˆλ‹€." ] # 3. μž¬μˆœμœ„ν™” 점수 계산 scores = model.predict([(query, doc) for doc in candidates]) # 4. 점수 높은 순으둜 κ²°κ³Ό μž¬μ •λ ¬ reranked_results = sorted(zip(candidates, scores), key=lambda x: x[1], reverse=True) for doc, score in reranked_results: print(f"Score: {score:.4f} | Content: {doc}") ``` ## πŸ”— 지식 μ—°κ²° (Graph) * **기반 단계**: [[Information Retrieval (IR)|Information Retrieval (IR)]], [[Vector Search|Vector Search]] * **핡심 λͺ¨λΈ**: [[Cross-Encoder|Cross-Encoder]], [[Learning to Rank (LTR)|Learning to Rank (LTR)]] * **ν™œμš© μ•„ν‚€ν…μ²˜**: [[Retrieval-Augmented Generation (RAG)|Advanced RAG]] --- *Last updated: 2026-05-04* ## πŸ€– LLM ν™œμš© 힌트 (How to Use This Knowledge) **μ–Έμ œ 이 지식을 μ“°λŠ”κ°€:** - *(TODO)* **μ–Έμ œ μ“°λ©΄ μ•ˆ λ˜λŠ”κ°€:** - *(TODO)* ## πŸ§ͺ 검증 μƒνƒœ (Validation) - **정보 μƒνƒœ:** needs_review - **좜처 신뒰도:** A - **κ²€ν†  이유:** *(P-Reinforce Phase 1 μžλ™ μ •κ·œν™”. λ³Έλ¬Έ 검증 ν•„μš”.)* ## 🧬 쀑볡 검사 (Duplicate Check) - **κΈ°μ‘΄ μœ μ‚¬ λ¬Έμ„œ:** *(TODO: μΈλ±μ„œ ν΄λŸ¬μŠ€ν„° 리포트 μ°Έμ‘°)* - **처리 방식:** UPDATE (μžλ™ μ •κ·œν™”) - **처리 이유:** Phase 1 μ •κ·œν™” β€” μ˜› ν…œν”Œλ¦Ώ/λˆ„λ½ ν•„λ“œ 보강. ## πŸ•“ λ³€κ²½ 이λ ₯ (Changelog) | λ‚ μ§œ | λ³€κ²½ λ‚΄μš© | 처리 방식 | 신뒰도 | |------|-----------|-----------|--------| | 2026-05-08 | P-Reinforce Phase 1 μ •κ·œν™” (frontmatter + 헀더 ν‘œμ€€ν™”) | UPDATE | A | ## πŸ’» μ½”λ“œ νŒ¨ν„΄ (Code Patterns) **νŒ¨ν„΄ 1:** *(TODO: 이 ν”„λ‘œμ νŠΈ μ»¨λ²€μ…˜ λ°˜μ˜ν•œ ꡬ쑰 μŠ€μΌˆλ ˆν†€)* ```text # TODO ``` ## πŸ€” μ˜μ‚¬κ²°μ • κΈ°μ€€ (Decision Criteria) **선택 Aλ₯Ό 써야 ν•  λ•Œ:** - *(TODO)* **선택 Bλ₯Ό 써야 ν•  λ•Œ:** - *(TODO)* **κΈ°λ³Έκ°’:** > *(TODO)* ## ❌ μ•ˆν‹°νŒ¨ν„΄ (Anti-Patterns) - **[μ•ˆν‹°νŒ¨ν„΄]:** *(TODO: 무엇을 ν•˜λ©΄ μ•ˆ λ˜λŠ”κ°€ + 이유 + λŒ€μ‹  무엇을)*