# [[RAG (Retrieval-Augmented Generation)]] ## πŸ“Œ Brief Summary RAG(Retrieval-Augmented Generation)λŠ” AI λͺ¨λΈμ΄ ν…μŠ€νŠΈλ₯Ό μƒμ„±ν•˜κΈ° 전에 μ‹ λ’°ν•  수 μžˆλŠ” μ™ΈλΆ€ 지식 κΈ°λ°˜μ΄λ‚˜ 데이터 μ†ŒμŠ€μ—μ„œ κ΄€λ ¨ 정보λ₯Ό κ²€μƒ‰ν•˜μ—¬ ν”„λ‘¬ν”„νŠΈλ₯Ό μ¦κ°•ν•˜λŠ” κΈ°μˆ μž…λ‹ˆλ‹€. μ—μ΄μ „νŠΈ μ‹œμŠ€ν…œμ—μ„œλŠ” ν™˜κ°(hallucination)을 크게 쀄이고 닡변을 사싀적 μ •λ³΄λ‘œ λ³΄κ°•ν•˜λŠ” 역할을 ν•©λ‹ˆλ‹€. ν˜„λŒ€μ˜ μ—μ΄μ „νŠΈ ν•˜λ„€μŠ€ μ—”μ§€λ‹ˆμ–΄λ§(Agent Harness Engineering) λ§₯λ½μ—μ„œλŠ” RAGκ°€ λ‹¨μˆœν•œ μ „μ²˜λ¦¬ 단계λ₯Ό λ„˜μ–΄, μ—μ΄μ „νŠΈκ°€ 자율적으둜 ν•„μš”ν•  λ•Œ 정보λ₯Ό μ μ§„μ μœΌλ‘œ κ°€μ Έμ˜€λŠ” 동적인 도ꡬ 호좜(Tool Call) 및 μ»¨ν…μŠ€νŠΈ 관리 μ „λž΅μœΌλ‘œ μ§„ν™”ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. ## πŸ“– Core Content * **μˆ˜λ™μ  κ²€μƒ‰μ—μ„œ 자율적 도ꡬ 호좜둜의 μ§„ν™” (Agentic RAG):** 과거의 RAGλŠ” μ‚¬μš©μž 쿼리λ₯Ό 기반으둜 λ¬Έμ„œ 전체λ₯Ό ν•œ λ²ˆμ— μ£Όμž…ν•˜λŠ” 정보 검색 μ»΄ν¬λ„ŒνŠΈμ— κ°€κΉŒμ› μŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ μ—μ΄μ „νŠΈ ν™˜κ²½(예: A-RAG)μ—μ„œλŠ” RAGλ₯Ό ν•˜λ„€μŠ€ 도ꡬ 섀계 문제둜 μž¬κ΅¬μ„±ν•©λ‹ˆλ‹€. κ²€μƒ‰λœ λ¬Έμ„œλ₯Ό νŒŒμ΄ν”„λΌμΈ μ‹œμž‘ μ‹œμ μ— 일괄 μ£Όμž…ν•˜λŠ” λŒ€μ‹ , ν•˜λ„€μŠ€λŠ” ν‚€μ›Œλ“œ 검색, 의미둠적 검색, 청크 읽기 λ“±μ˜ 검색 도ꡬλ₯Ό μ—μ΄μ „νŠΈμ—κ²Œ λ…ΈμΆœν•˜μ—¬, μ—μ΄μ „νŠΈκ°€ 각 μΆ”λ‘  λ‹¨κ³„μ—μ„œ ν•„μš”ν•œ μ •λ³΄λ§Œ 점진적이고 λŠ₯λ™μ μœΌλ‘œ κ°€μ Έμ˜€λ„λ‘ μ„€κ³„ν•©λ‹ˆλ‹€. * **검색 증강 μ»¨ν…μŠ€νŠΈ 관리 (Retrieval-Augmented Context Management):** μž₯κΈ° μ‹€ν–‰(Long-horizon) μ—μ΄μ „νŠΈλ₯Ό μœ„ν•œ 지배적인 μ»¨ν…μŠ€νŠΈ 관리 μ ‘κ·Όλ²•μž…λ‹ˆλ‹€. ν•˜λ„€μŠ€λŠ” μ—μ΄μ „νŠΈμ˜ 전체 μƒν˜Έμž‘μš© 기둝을 μš”μ•½ν•˜μ—¬ λ°œμƒν•  수 μžˆλŠ” 정보 손싀을 λ°©μ§€ν•˜κΈ° μœ„ν•΄, λͺ¨λ“  μƒν˜Έμž‘μš©μ„ μ €μž₯ν•˜κ³  각 λ‹¨κ³„μ—μ„œ κ΄€λ ¨λœ ν•˜μœ„ μ§‘ν•©(subset)λ§Œμ„ 검색해 μ»¨ν…μŠ€νŠΈ μœˆλ„μš°μ— μ£Όμž…ν•©λ‹ˆλ‹€. ν•˜λ„€μŠ€λŠ” λ¬Έμ„œμ˜ λ‹¨μˆœ μ €μž₯을 λ„˜μ–΄ μ••μΆ• 및 μΆ”μΆœ 과정을 λΆ„λ¦¬ν•˜λŠ” νŒŒμ΄ν”„λΌμΈ(예: Haystack ν”„λ ˆμž„μ›Œν¬ λ“±)을 톡해 μ—μ΄μ „νŠΈμ˜ 인지 λΆ€ν•˜λ₯Ό μ€„μž…λ‹ˆλ‹€. * **κ·Έλž˜ν”„ κ΅¬μ‘°μ™€μ˜ κ²°ν•© (GraphRAG):** 기본적인 RAG(Baseline RAG)λŠ” μ—¬λŸ¬ 정보 쑰각의 곡톡 속성을 κ°€λ‘œμ§ˆλŸ¬ 점듀을 μ—°κ²°ν•΄μ•Ό ν•˜λŠ” λ³΅μž‘ν•œ μ§ˆλ¬Έμ— λ‹΅ν•˜κ±°λ‚˜, λŒ€κ·œλͺ¨ λ°μ΄ν„°μ—μ„œ μš”μ•½λœ 의미둠적 κ°œλ…μ„ μ „μ²΄μ μœΌλ‘œ μ΄ν•΄ν•˜λŠ” 데 ν•œκ³„λ₯Ό λ³΄μž…λ‹ˆλ‹€. 이λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ μ΅œμ‹  ν•˜λ„€μŠ€ μ„€κ³„μ—μ„œλŠ” 의미둠적 νšŒμƒ(Semantic recall)을 μœ„ν•œ 벑터 검색과 관계 좔둠을 μœ„ν•œ κ·Έλž˜ν”„ 탐색(Graph traversal), 그리고 μ§„μ‹€ 데이터λ₯Ό μœ„ν•œ κ΅¬μ‘°ν™”λœ 쿼리(SQL/API)λ₯Ό κ²°ν•©ν•˜μ—¬ μ‚¬μš©ν•©λ‹ˆλ‹€. * **MCPμ™€μ˜ μƒν˜Έ 보완적 μ—­ν• :** RAGκ°€ μ •λ³΄μ˜ 'μˆ˜λ™μ  검색(Passive Retrieval)'을 톡해 ν…μŠ€νŠΈ 생성 μ „ 사싀적 정확성을 λ†’μ΄λŠ” 데 μ£Όλ ₯ν•œλ‹€λ©΄, MCP(Model Context Protocol)λŠ” μ—μ΄μ „νŠΈκ°€ μ™ΈλΆ€ μ‹œμŠ€ν…œμ—μ„œ μž‘μ—…μ„ 'μ‹€ν–‰(Action)'ν•˜κ³  λ™μ μœΌλ‘œ μ–‘λ°©ν–₯ μƒν˜Έμž‘μš©μ„ ν•  수 μžˆλ„λ‘ ν•˜λŠ” ν‘œμ€€μž…λ‹ˆλ‹€. ν•˜λ„€μŠ€λŠ” 이 두 κ°€μ§€λ₯Ό κ²°ν•©ν•˜μ—¬ 정보 검색과 μž‘μ—… μ‹€ν–‰ λŠ₯λ ₯을 λͺ¨λ‘ κ°–μΆ˜ μ—μ΄μ „νŠΈ 인프라λ₯Ό κ΅¬μΆ•ν•©λ‹ˆλ‹€. ## βš–οΈ Trade-offs & Caveats * **검색 μ§€μ—° μ‹œκ°„μ˜ λˆ„μ  (Retrieval Latency Injection):** μž₯κΈ° μ‹€ν–‰ μž‘μ—…μ˜ 경우 λ§€ λ‹¨κ³„λ§ˆλ‹€ λͺ¨λΈ μΆ”λ‘  μ „ μ €μž₯된 기둝에 λŒ€ν•œ 검색 쿼리가 ν•„μš”ν•©λ‹ˆλ‹€. λŒ€κ·œλͺ¨ 벑터 λ°μ΄ν„°λ² μ΄μŠ€μ˜ μ½œλ“œ μŠ€νƒ€νŠΈλ‚˜ μ‹œλ§¨ν‹± 검색 μ§€μ—° μ‹œκ°„μ΄ μ„ ν˜•μ μœΌλ‘œ λˆ„μ λ˜λ©΄ 전체 μž‘μ—… μ‹œκ°„μ— μ‹¬κ°ν•œ μ˜€λ²„ν—€λ“œλ₯Ό λ°œμƒμ‹œν‚΅λ‹ˆλ‹€. ν•˜λ„€μŠ€λŠ” 인덱슀 μ˜ˆμ—΄(pre-warming)μ΄λ‚˜ 쀑볡 쿼리 λ°©μ§€ 캐싱을 톡해 이λ₯Ό 관리해야 ν•©λ‹ˆλ‹€. * **μ λŒ€μ  μ½˜ν…μΈ μ— μ˜ν•œ 검색 κ²Œμž„ν™” (Retrieval Gaming by Adversarial Content):** μ—μ΄μ „νŠΈμ˜ μ €μž₯μ†Œμ— μ™ΈλΆ€ μ½˜ν…μΈ κ°€ μ£Όμž…λ  수 μžˆλŠ” 경우, κ³΅κ²©μžλŠ” ν–₯ν›„ 검색 쿼리와 의미둠적 μœ μ‚¬μ„±μ„ κ·ΉλŒ€ν™”ν•˜λ„λ‘ μ‘°μž‘λœ μ½˜ν…μΈ λ₯Ό μ‚½μž…ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μ΄λŠ” μ—μ΄μ „νŠΈμ˜ 결정적인 μž‘μ—… μˆœκ°„μ— μ•…μ˜μ  μ§€μ‹œλ¬Έμ΄ μ΅œμš°μ„ μœΌλ‘œ κ²€μƒ‰λ˜κ²Œ λ§Œλ“­λ‹ˆλ‹€. 이λ₯Ό λ°©μ§€ν•˜λ €λ©΄ ν•˜λ„€μŠ€λŠ” 의미둠적 μœ μ‚¬μ„±λΏλ§Œ μ•„λ‹ˆλΌ 정보 좜처(Provenance)의 신뒰도에 λ”°λ₯Έ κ°€μ€‘μΉ˜λ₯Ό λΆ€μ—¬ν•΄μ•Ό ν•©λ‹ˆλ‹€. * **토큰 λΉ„μš© 절감 vs 검색 ν’ˆμ§ˆ λΆ„μ‚° (Token Cost vs Retrieval Variance):** 초μž₯κΈ° μ»¨ν…μŠ€νŠΈ(Ultra-long-context) λͺ¨λΈμ— λͺ¨λ“  데이터λ₯Ό κ·ΈλŒ€λ‘œ μ£Όμž…ν•˜λŠ” 방식은 좩싀도(Fidelity)λŠ” λ†’μœΌλ‚˜ λ§‰λŒ€ν•œ 토큰 λΉ„μš©μ΄ λ°œμƒν•©λ‹ˆλ‹€. 반면 RAGλŠ” 토큰 λΉ„μš©μ„ 크게 μ€„μ΄λŠ” λŒ€μ‹  쿼리 곡식화(Query formulation)와 검색 μ•Œκ³ λ¦¬μ¦˜μ˜ ν’ˆμ§ˆμ— μ—μ΄μ „νŠΈμ˜ μ„±λŠ₯이 κ·Ήλ„λ‘œ μ˜μ‘΄ν•˜κ²Œ λ˜λŠ” μœ„ν—˜μ„ μ•ˆκ³  μžˆμŠ΅λ‹ˆλ‹€. ## πŸ”— Knowledge Connections ### Related Concepts #### [관계 μœ ν˜• A: μ•„ν‚€ν…μ²˜/기반 기술] * [[Context Engineering]] * μ—°κ²° 이유: RAGλŠ” μ—μ΄μ „νŠΈμ˜ μ œν•œλœ μ»¨ν…μŠ€νŠΈ μœˆλ„μš°μ— ν•„μš”ν•œ μ •λ³΄λ§Œμ„ μ„ λ³„ν•˜μ—¬ μ£Όμž…ν•˜κΈ° μœ„ν•œ 핡심적인 μ»¨ν…μŠ€νŠΈ μ—”μ§€λ‹ˆμ–΄λ§ μ „λž΅μž…λ‹ˆλ‹€. * 이 κ°œλ…μ„ 톡해 더 깊게 이해할 수 μžˆλŠ” λΆ€λΆ„: ν•˜λ„€μŠ€κ°€ μ—μ΄μ „νŠΈμ˜ 토큰 μ˜ˆμ‚°μ„ μ–΄λ–»κ²Œ κ΄€λ¦¬ν•˜κ³ , λ¬΄λΆ„λ³„ν•œ μ»¨ν…μŠ€νŠΈ λΆ€νŒ¨(Context Rot)λ₯Ό 막기 μœ„ν•΄ κ²€μƒ‰λœ 데이터λ₯Ό μ–Έμ œ μ–΄λ–»κ²Œ μ£Όμž…ν•˜λŠ”μ§€ 이해할 수 μžˆμŠ΅λ‹ˆλ‹€. * [[Agentic Search]] * μ—°κ²° 이유: κ³ μ •λœ RAG νŒŒμ΄ν”„λΌμΈμ—μ„œ λ²—μ–΄λ‚˜, μ—μ΄μ „νŠΈκ°€ 직접 닀단계 검색을 κ³„νšν•˜κ³  μ‹€ν–‰ν•˜λŠ” λŠ₯동적 검색 κ³Όμ •μž…λ‹ˆλ‹€. * 이 κ°œλ…μ„ 톡해 더 깊게 이해할 수 μžˆλŠ” λΆ€λΆ„: RAGκ°€ λ‹¨μˆœ μ „μ²˜λ¦¬ 과정이 μ•„λ‹ˆλΌ, μ—μ΄μ „νŠΈ ν•˜λ„€μŠ€μ˜ μ‹€ν–‰ 루프(Execution Loop) λ‚΄μ—μ„œ 도ꡬ 호좜(Tool Call) ν˜•νƒœλ‘œ ν†΅ν•©λ˜λŠ” 방식을 νŒŒμ•…ν•  수 μžˆμŠ΅λ‹ˆλ‹€. #### [관계 μœ ν˜• B: κ΅¬ν˜„/ν™œμš© 도ꡬ] * [[Model Context Protocol (MCP)]] * μ—°κ²° 이유: RAGκ°€ 주둜 지식 κΈ°λ°˜μ—μ„œ 데이터λ₯Ό '검색'ν•˜λŠ” λͺ©μ μ΄λΌλ©΄, MCPλŠ” μ—μ΄μ „νŠΈκ°€ μ™ΈλΆ€ μ‹œμŠ€ν…œκ³Ό 데이터λ₯Ό μ£Όκ³ λ°›κ±°λ‚˜ 'μž‘μ—…μ„ μˆ˜ν–‰'ν•˜κΈ° μœ„ν•œ μ–‘λ°©ν–₯ ν”„λ‘œν† μ½œ 톡신 ν‘œμ€€μž…λ‹ˆλ‹€. * 이 κ°œλ…μ„ 톡해 더 깊게 이해할 수 μžˆλŠ” λΆ€λΆ„: μ—μ΄μ „νŠΈ ν•˜λ„€μŠ€μ—μ„œ 정보 검색(RAG)κ³Ό μ™ΈλΆ€ ν™˜κ²½μ— λŒ€ν•œ μ‹œμŠ€ν…œ 톡합/μ‹€ν–‰(MCP)이 각각 μ–΄λ–€ 경계λ₯Ό κ°€μ§€κ³  μƒν˜Έμž‘μš©ν•˜λŠ”μ§€ λͺ…ν™•νžˆ ꡬ뢄할 수 μžˆμŠ΅λ‹ˆλ‹€. ### Deeper Research Questions * μ—μ΄μ „νŠΈκ°€ 자체적으둜 μƒμ„±ν•œ μž₯κΈ° μƒν˜Έμž‘μš© 기둝을 RAG둜 검색할 λ•Œ, ν•˜λ„€μŠ€λŠ” λͺ¨λΈμ˜ ν˜„μž¬ 정보 μš”κ΅¬λ₯Ό μ •ν™•νžˆ λ°˜μ˜ν•˜κΈ° μœ„ν•΄ 쿼리 곡식화(Query Formulation)λ₯Ό λͺ¨λΈμ— μœ„μž„ν•  것인가, μ•„λ‹ˆλ©΄ 자체적인 μ •μ±…μœΌλ‘œ μ œμ–΄ν•  것인가? * μ•…μ˜μ μΈ 데이터가 검색을 톡해 μ—μ΄μ „νŠΈμ˜ μ»¨ν…μŠ€νŠΈ μœˆλ„μš°μ— μ£Όμž…λ˜λŠ” '검색 κ²Œμž„ν™”(Retrieval Gaming)'λ₯Ό λ°©μ–΄ν•˜κΈ° μœ„ν•΄, ν•˜λ„€μŠ€λŠ” 좜처 기반(Provenance-weighted) 검색 μ•„ν‚€ν…μ²˜λ₯Ό μ–΄λ–»κ²Œ κ΅¬ν˜„ν•΄μ•Ό ν•˜λŠ”κ°€? * 수백만 ν† ν°μ˜ μ»¨ν…μŠ€νŠΈ μœˆλ„μš°λ₯Ό μ§€μ›ν•˜λŠ” λͺ¨λΈ(Long-context models)의 λ“±μž₯ μƒν™©μ—μ„œ, RAG 기반 ν•˜λ„€μŠ€λŠ” 검색 μ§€μ—° μ‹œκ°„ μ˜€λ²„ν—€λ“œμ™€ μž₯λ¬Έ μ»¨ν…μŠ€νŠΈ 직접 μ£Όμž…μ˜ μ»΄ν“¨νŒ… λΉ„μš© κ°„μ˜ νŠΈλ ˆμ΄λ“œμ˜€ν”„λ₯Ό μ–΄λ–»κ²Œ μ΅œμ ν™”ν•΄μ•Ό ν•˜λŠ”κ°€? * 검색(Retrieval) ν–‰μœ„κ°€ μ—μ΄μ „νŠΈμ˜ μΆ”λ‘  흐름을 λ°©ν•΄ν•˜μ§€ μ•Šκ³  λ…λ¦½μ μœΌλ‘œ μž‘λ™ν•˜λ„λ‘ μ„œλΈŒ μ—μ΄μ „νŠΈ(Subagent)μ—κ²Œ RAG 역할을 μœ„μž„ν•˜λŠ” μ˜€μΌ€μŠ€νŠΈλ ˆμ΄μ…˜ μ„€κ³„λŠ” μ‹œμŠ€ν…œ μ•ˆμ •μ„±μ— μ–΄λ– ν•œ 영ν–₯을 λ―ΈμΉ˜λŠ”κ°€? ### Practical Application Contexts * **Implementation:** λ°©λŒ€ν•œ λ¬Έμ„œ μ €μž₯μ†Œλ‚˜ 지식 기반 μœ„μ—μ„œ μž‘λ™ν•˜λŠ” μ—μ΄μ „νŠΈλ₯Ό ꡬ좕할 λ•Œ, Haystackκ³Ό 같은 데이터 νŒŒμ΄ν”„λΌμΈ ν”„λ ˆμž„μ›Œν¬λ‚˜ 벑터 λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό ν•˜λ„€μŠ€μ˜ RAG μ»΄ν¬λ„ŒνŠΈλ‘œ ν†΅ν•©ν•˜μ—¬ κ΅¬μΆ•ν•©λ‹ˆλ‹€. * **System Design:** μ—μ΄μ „νŠΈμ˜ μ‹€ν–‰ 루프 λ‚΄μ—μ„œ, RAGλ₯Ό 정적인 νŒŒμ΄ν”„λΌμΈμ΄ μ•„λ‹Œ ν‚€μ›Œλ“œ 검색, 의미둠적 검색 도ꡬ λ“±μ˜ μ§‘ν•©μœΌλ‘œ μΆ”μƒν™”ν•˜μ—¬ λͺ¨λΈμ΄ ν•„μš”μ— 맞게 λŠ₯λ™μ μœΌλ‘œ 도ꡬ(Tool)λ₯Ό ν˜ΈμΆœν•˜λ„λ‘ μ„€κ³„ν•©λ‹ˆλ‹€. * **Operation / Maintenance:** 운영 ν™˜κ²½μ—μ„œλŠ” RAG 검색 μ‹œ λ°œμƒν•˜λŠ” μ§€μ—° μ‹œκ°„(Latency)이 전체 μ—μ΄μ „νŠΈ μž‘μ—… μ‹œκ°„μ— λ―ΈμΉ˜λŠ” 영ν–₯을 λͺ¨λ‹ˆν„°λ§ν•˜κ³ , 검색 인덱슀 μ˜ˆμ—΄(Pre-warming) 및 검색 κ²°κ³Ό 캐싱 μ΅œμ ν™”λ₯Ό μ§€μ†μ μœΌλ‘œ 관리해야 ν•©λ‹ˆλ‹€. * **Learning Path:** κΈ°λ³Έ RAG νŒŒμ΄ν”„λΌμΈ λ©”μ»€λ‹ˆμ¦˜ ν•™μŠ΅ βž” 지식 κ·Έλž˜ν”„λ₯Ό ν™œμš©ν•œ GraphRAG 접근법 이해 βž” μ—μ΄μ „νŠΈκ°€ 슀슀둜 검색을 μ œμ–΄ν•˜λŠ” 에이전틱 RAG(Agentic RAG) 섀계 νŒ¨ν„΄μœΌλ‘œμ˜ ν™•μž₯. * **My Project Relevance:** μ—”ν„°ν”„λΌμ΄μ¦ˆ 사내 지식 기반 μ±—λ΄‡μ΄λ‚˜ λ³΅μž‘ν•œ μ½”λ“œλ² μ΄μŠ€λ₯Ό νƒμƒ‰ν•˜λŠ” 자율 μ½”λ”© μ—μ΄μ „νŠΈ(Autonomous Coding Agent)λ₯Ό 섀계할 λ•Œ, μž₯κΈ° λ©”λͺ¨λ¦¬ μ†Œμ‹€μ„ 막고 μ •ν™•ν•œ μ°Έμ‘° 데이터λ₯Ό μ œκ³΅ν•˜κΈ° μœ„ν•΄ ν•˜λ„€μŠ€ μΈ΅μœ„μ— RAG λ©”μ»€λ‹ˆμ¦˜μ„ λ‚΄μž¬ν™”ν•˜λŠ” 데 ν•΅μ‹¬μ μœΌλ‘œ ν™œμš©λ©λ‹ˆλ‹€. ### Adjacent Topics * [[GraphRAG]] * ν™•μž₯ λ°©ν–₯: λ‹¨μˆœν•œ 벑터 μœ μ‚¬λ„ κ²€μƒ‰μ˜ ν•œκ³„λ₯Ό κ·Ήλ³΅ν•˜κ³ , λ³΅μž‘ν•œ λ¬Έμ„œ κ°„μ˜ 관계λ₯Ό λ§€ν•‘ν•˜μ—¬ 닀단계(Multi-hop) 좔둠을 κ°€λŠ₯ν•˜κ²Œ ν•˜λŠ” 지식 κ·Έλž˜ν”„ 기반의 검색 증강 λͺ¨λΈλ‘œ 이해λ₯Ό ν™•μž₯ν•©λ‹ˆλ‹€. --- *Last updated: 2026-05-01*