상위: 06_00_MOC
Select 전략 — RAG · 하이브리드 검색 · Tool Loadout · 능동적 검색
한 줄 정의
Select 전략은 RAG, 벡터 검색, 도구 로드아웃 등으로 작업에 관련된 정보만 컨텍스트 창 안에 골라 싣는 전략이다. 관련 없는 정보가 흘러들어 생기는 03 혼란, 상충하는 정보가 섞여 생기는 04 충돌를 함께 막는다.
“If you treat your context like a junk drawer, the junk will influence your response.” — Drew Breunig, 2025
왜 Select인가 — 동기
컨텍스트 창에 “모든 것”을 넣으면 세 가지 문제가 생긴다.
- 혼란(Confusion): 관련 없는 정보가 모델의 판단을 흐린다.
- 충돌(Clash): 상충하는 정보가 함께 들어가 일관되지 않은 응답이 나온다.
- 낭비: 토큰 예산을 헛되이 써서 비용과 속도가 모두 나빠진다.
Select 전략은 컨텍스트 창을 잘 정돈된 서랍으로 만들어 이 세 문제를 푼다.
flowchart TD Q["사용자 쿼리 / 에이전트 상태"] --> SEL subgraph SEL["Select 전략"] RAG["RAG / 벡터 검색<br/>시맨틱 유사도"] HYB["하이브리드 검색<br/>시맨틱 + 키워드 + 엔티티"] TOOL["Tool Loadout<br/>~20개 이내 동적 선택"] FIX["항상 포함 파일<br/>CLAUDE.md · .cursorrules"] PACT["능동적 검색 (Letta)<br/>LLM이 직접 결정"] end SEL -->|"관련 정보만"| CTX["컨텍스트 창<br/>(정제된 입력)"] SEL -->|"무관한 정보 차단"| BIN["폐기"]
1. RAG (Retrieval-Augmented Generation)
쿼리와 비슷한 청크를 벡터 검색으로 찾아 컨텍스트에 끼워 넣는다. 효과는 단순한 지식 주입에 그치지 않는다.
1-1. 도구 설명에도 RAG를 적용
“RAG applied to tool descriptions shows 3× improvement in tool selection accuracy.” — LangChain, 2025
도구가 너무 많아 생기는 문제(03 혼란)를 Select 전략으로 푸는 핵심 기법이다. 도구 설명을 전부 컨텍스트에 욱여넣는 대신, 지금 태스크와 관련된 도구만 RAG로 추린다.
1-2. 코드 에이전트의 RAG 복잡도
LangChain(2025)은 Windsurf의 코드 인덱싱 방식을 인용하며 단순 임베딩 검색의 한계를 지적한다.
“Indexing code ≠ context retrieval… combining AST parsing, semantic chunking, embedding search, grep/file search, knowledge graphs, and re-ranking steps.” — LangChain, 2025 (Windsurf 사례 인용)
프로덕션 코드 에이전트에서 RAG는 AST 파싱, 시맨틱 청킹, 임베딩 검색, 키워드 검색, 지식 그래프, 재랭킹을 엮은 복합 파이프라인이다.
2. 하이브리드 검색 — Mem0 2026 기준
시맨틱 유사도와 키워드 매칭, 엔티티 매칭을 함께 병렬로 스코어링하는 하이브리드 검색이 단일 방식보다 낫다(Mem0, 2026).
| 지표 | 수치 |
|---|---|
| 토큰 소비 (하이브리드) | 쿼리당 약 6,900 토큰 |
| 토큰 소비 (전체 컨텍스트) | 쿼리당 약 26,000 토큰 |
| 토큰 절감율 | 약 73% |
| Temporal query 향상 | +29.6점 |
| Multi-hop reasoning 향상 | +23.1점 |
“All three systems consume approximately 6,900 tokens per query — a significant reduction from the ~26,000 tokens required by full-context approaches.” — Mem0 Research Team, 2026
하이브리드 검색은 Select 전략을 가장 실용적으로 구현한 형태로, 관련성(precision)과 토큰 효율을 한꺼번에 잡는다.
3. Tool Loadout — 도구 수 관리
도구가 너무 많으면 모델이 혼란에 빠진다(03 혼란). 관련 수치는 다음과 같다.
| 모델 | 도구 수 | 결과 |
|---|---|---|
| Llama 3.1 8B | 46개 | 실패 |
| Llama 3.1 8B | 19개 | 성공 |
| 동적 도구 선택 적용 시 | — | 정확도 44% ↑, 속도 77% ↑, 전력 18% ↓ |
| Extended Thinking 결합 시 | — | 최대 54% ↑ |
“Performance dropped with 46 tools but improved 44% when limited to 19 tools—with bonus speed gains of 77%.” — Breunig, 2025 (연구 인용)
실무 규칙: 도구 수는 약 20개 이내로 동적으로 관리하고, 지금 태스크와 관련된 도구만 RAG로 골라 싣는다.
flowchart LR ALL["전체 도구 목록<br/>(수십~수백 개)"] -->|"RAG 시맨틱 검색"| SEL SEL["선별된 도구<br/>(~20개 이내)"] --> LLM["LLM 컨텍스트"] LLM --> ACC["정확도 44% ↑<br/>속도 77% ↑"]
4. 항상 포함 파일 (Always-Include Files)
태스크와 무관하게 항상 컨텍스트에 포함하는 참조 파일이다.
| 도구 | 파일 | 역할 |
|---|---|---|
| Claude Code | CLAUDE.md | 절차 기억 — 프로젝트 규칙·워크플로우 |
| Cursor | .cursorrules | 코딩 스타일·제약 |
| Windsurf | rules 파일 | 에이전트 행동 지침 |
이들은 크로스세션 절차 기억(06_01-Write전략-스크래치패드-파일시스템-크로스세션)의 Select 측면에 해당한다. Write로 저장해 두고, Select로 매번 불러온다.
5. 능동적 검색 vs 수동적 검색
Letta(2024)는 기존 RAG와 결을 달리하는 방식을 제안한다.
| 방식 | 설명 | 장단점 |
|---|---|---|
| 수동 RAG | 생성 전에 자동으로 검색 (passive retrieval before generation) | 단순하지만 정밀도 제한 |
| 능동적 검색 (Letta) | LLM이 직접 언제·무엇을 검색할지 tool call로 결정 | 정밀하지만 추가 tool call 비용 발생 |
“Unlike standard RAG which passively retrieves before generation, Letta is proactive — the LLM decides if, when, and what to retrieve using tools.” — Letta, 2024
능동적 검색은 정밀한 대신 tool call 비용이 더 든다. 그 손익분기점이 어디인지는 아직 정량적으로 밝혀지지 않은 열린 질문이다.
6. Simon Willison의 경고 — 원치 않는 검색
LangChain(2025)이 든 사례를 보면, ChatGPT가 사용자의 위치 정보를 예상치 못하게 이미지 생성에 끌어다 썼다. Select가 지나치면 사용자의 에이전시(agency)를 침해할 수 있다는 뜻이다.
원칙: 검색이 필요한가를 먼저 판단하고, 검색 범위를 명시적으로 통제하라.
7. Select가 막는 실패모드
| 실패모드 | Select 기법 | 메커니즘 |
|---|---|---|
| 혼란 (Confusion) | RAG 관련성 필터, Tool Loadout | 무관한 정보·도구 차단 |
| 충돌 (Clash) | 최신 정보 우선 선택 | 상충 소스 중 신뢰도 높은 것 선택 |
| 암묵적 결정 분산 | 전체 트레이스 공유 (Cognition 원칙) | 서브에이전트에 전체 컨텍스트 전달 |
| 과부하 | 하이브리드 검색 73% 절감 | 필요한 토큰만 로딩 |
참고문헌
- Context Engineering for Agents — The LangChain Team, 2025, LangChain Blog
- How to Fix Your Context — Drew Breunig, 2025, dbreunig.com
- State of AI Agent Memory 2026 — Mem0 Research Team, 2026, Mem0 Blog
- Agent Memory: How to Build Agents That Learn and Remember — Letta Team, 2024, Letta Blog
- Context Engineering - LLM Memory and Retrieval for AI Agents — Weaviate Team, 2025, Weaviate Blog
관련 노트
- 06_01-Write전략-스크래치패드-파일시스템-크로스세션 — Write로 저장된 정보를 Select로 끌어온다
- 06_03-Compress전략-요약-프루닝-KV캐시최적화 — Select로 가져온 것을 다시 압축
- 06_08-MemGPT-Letta-OS형-롱텀메모리 — 능동적 검색의 완성형 구현
- 06_09-실패모드-전략-매핑표 — Select가 막는 실패모드 전체 매핑
- 03 혼란 — Select가 직접 방어하는 실패모드