1. RAG의 기본: "도서관 사서" 방식 (Traditional RAG)
기존의 RAG는 LLM의 부족한 기억력을 보완하기 위해 외부 저장소(Vector DB)에서 필요한 조각만을 찾아 전달하는 방식입니다.
- 동작 원리: 문서를 조각(Chunk) 내어 벡터 DB에 저장 → 질문과 가장 유사한 조각만 검색 → LLM에게 전달.
- 장점: 수억 개의 문서 중 필요한 것만 골라내므로 비용 효율적임.
- 단점: 문서를 잘게 쪼개는 과정에서 앞뒤 맥락이 잘리거나, 비정형 데이터(코드, 복잡한 표)의 논리 구조를 놓칠 위험이 있음.
2. 새로운 흐름: "Long-Context" 접근법 (File-based Context)
최신 LLM(Gemini 1.5 Pro, Claude 3.5 등)의 컨텍스트 윈도우가 수백만 토큰으로 확장되면서, "굳이 쪼개지 말고 다 넣어주자"는 방식이 가능해졌습니다. OpenClaw나 Cursor가 채택하는 방식이기도 합니다.
왜 MD(Markdown) 파일을 직접 쓰는가?
- 논리 구조의 보존: MD 파일은 헤더(#), 리스트(-), 코드 블록(```) 등을 통해 문서의 위계를 명확히 보여줍니다. LLM은 이 구조를 읽어 문서 전체의 흐름을 완벽히 파악합니다.
- In-Context Learning의 극대화: 검색된 '조각'이 아니라 '전체 문서'를 읽은 모델은 문서 내의 미묘한 관계나 프로젝트 전체의 코딩 스타일을 훨씬 더 잘 반영합니다.
- 검색 성능의 역전: 인덱싱된 DB에서 검색하는 것보다, 똑똑해진 LLM이 수만 줄의 텍스트 안에서 직접 정보를 찾는 것이 더 정확한 경우가 많습니다.
3. RAG vs. Long-Context 비교 요약
| 비교 항목 | 전통적 RAG (Vector DB) | Long-Context (File Injection) |
| 비유 | 필요한 페이지만 발췌독하는 사서 | 책 한 권을 통째로 머릿속에 넣은 천재 |
| 핵심 기술 | 임베딩 & 코사인 유사도 검색 | 거대 컨텍스트 윈도우 (Long-Context) |
| 데이터 형태 | 정형화된 데이터 조각 (Chunks) | 구조화된 MD, 코드 파일 전체 |
| 주요 도구 | Pinecone, FAISS, LangChain | OpenClaw, Cursor, NotebookLM |
| 적합한 사례 | 수만 권의 책, 기업 전체 위키 | 특정 프로젝트 코드, 논문 몇 권, 매뉴얼 |