티스토리 뷰

IT/AI

[완독 챌린지] 3주차 - AI 엔지니어링

Hayley Shim 2025. 11. 29. 11:01

안녕하세요, AI 엔지니어링을 학습하기 위해 인프런 AI 엔지니어링 완독챌린지에 참여하며 주차별 이해한 내용을 기록합니다.

 

3주차 독후감

3주차에는 LLM 활용의 핵심인 프롬프트 엔지니어링과 지식 확장 기법인 RAG(검색 증강 생성), 그리고 AI 에이전트의 기본 구조를 깊이 있게 학습했습니다.

프롬프트 엔지니어링은 명확한 지침, CoT, Few-Shot 학습 등 모범 사례를 통해 모델 성능을 최적화하는 기술이며, 방어적 엔지니어링은 프롬프트 주입과 같은 공격으로부터 시스템을 보호하는 필수적인 방어책임을 이해했습니다.

나아가 RAG는 외부 지식을 검색하여 LLM의 환각 문제를 해결하는 강력한 아키텍처이며, 에이전트는 LLM을 두뇌로 삼아 도구를 활용하고 계획을 수립하며 메모리를 통해 학습하는 자율적인 시스템의 미래를 제시했습니다.

마침 현재 RAG 아키텍처를 설계하고 구현하는 프로젝트를 진행 중이여서 이번 학습 내용이 큰 도움이 되었습니다. 이는 단순한 질의응답을 넘어 AI가 복잡한 작업을 수행하는 진정한 엔지니어링 단계임을 깨닫습니다

 

1. 프롬프트 엔지니어링 (Prompt Engineering)

프롬프트 엔지니어링은 LLM의 성능을 극대화하고 원하는 결과를 얻기 위해 입력(프롬프트)을 설계하고 개선하는 기술입니다.

🧠 인컨텍스트 학습 (In-Context Learning)

유형 설명 예시 제공 여부
제로샷 (Zero-Shot) 아무런 예시 없이 모델에게 지시만 제공하여 답변을 생성하도록 합니다. ❌ 없음
퓨샷 (Few-Shot) 모델에게 원하는 출력 형식과 내용에 대한 예시를 몇 개 제공하여 학습시킨 후 답변을 생성하도록 합니다. ⭕ 있음

💬 시스템 프롬프트와 사용자 프롬프트

  • 시스템 프롬프트 (System Prompt): 모델의 전반적인 행동, 역할(페르소나), 제약 조건 등을 정의하는 최상위 지침입니다. 사용자 입력보다 우선순위가 높습니다. (예: "당신은 항상 친절하고 정확한 전문 비서입니다.")
  • 사용자 프롬프트 (User Prompt): 사용자가 모델에게 실제로 요청하는 구체적인 질문이나 작업입니다.

📏 컨텍스트 길이와 컨텍스트 효율성

  • 컨텍스트 길이 (Context Length): LLM이 한 번에 처리할 수 있는 입력 토큰의 최대 개수입니다. 이 길이를 넘어서는 정보는 처리할 수 없습니다.
  • 컨텍스트 효율성: 제한된 컨텍스트 길이에 가장 유용한 정보를 압축하여 넣어 모델의 성능을 최대화하는 방법입니다.

2. 프롬프트 엔지니어링 모범 사례

모델의 성능을 높이기 위한 핵심 전략들입니다.

모범 사례 핵심 내용
명확하고 명시적인 지시 작성 구체적인 형식, 길이, 대상 청중 등을 명시하여 모호함을 제거합니다. (긍정문 사용 권장)
충분한 컨텍스트 제공 모델이 배경 지식 없이도 답변할 수 있도록 핵심 정보를 제공합니다.
복잡한 작업을 단순한 하위 작업으로 나누기 LLM에게 단계별 수행 목록을 제공하여 오류 발생률을 줄입니다.
모델에게 생각할 시간 주기 CoT(Chain-of-Thought) 프롬프트를 사용하여 모델이 추론 과정을 출력하도록 유도합니다.
프롬프트 반복하며 개선 한 번에 완벽한 프롬프트는 없으므로 지속적인 A/B 테스트 및 수정이 필요합니다.
도구 평가 및 정리/버전 관리 다양한 프롬프팅 도구를 평가하고, 성공적인 프롬프트를 정리하고 버전 관리하여 재사용성을 높입니다.

3. 방어적 프롬프트 엔지니어링

LLM 시스템을 악의적인 프롬프트 공격으로부터 보호하는 기술입니다.

  • 독점 프롬프트와 역 프롬프트 엔지니어링 (Reverse Prompt Engineering):
    • 독점 프롬프트: 서비스의 핵심 로직이 담긴 비밀스러운 시스템 프롬프트입니다.
    • 역 프롬프트 엔지니어링: 사용자가 여러 질문을 통해 모델의 독점 프롬프트를 추론하고 유출하려는 시도입니다.
  • 탈옥 (Jailbreaking)과 프롬프트 주입 (Prompt Injection):
    • 프롬프트 주입: 사용자의 입력으로 모델의 원래 시스템 지침을 무시하고, 개발자가 의도하지 않은 행동(예: 악성 콘텐츠 생성)을 유도하는 공격입니다.
    • 탈옥: 모델의 안전 필터윤리적 제약을 우회하여 답변을 강제로 생성하게 만드는 특수한 형태의 프롬프트 주입입니다.
  • 프롬프트 공격에 대한 방어:
    • 지침 분리: 시스템 프롬프트와 사용자 입력을 명확히 분리하여 주입을 어렵게 합니다.
    • 프롬프트 필터링: 입력에서 악의적인 키워드나 패턴을 사전 검증합니다.
    • 지침 강화: 시스템 지침에 자체 방어 구문을 포함시켜 다른 지침에 우선하도록 합니다.

4. RAG (Retrieval-Augmented Generation)

RAG는 LLM의 지식 부족 및 환각 문제를 해결하기 위해 외부 지식을 검색하여 답변의 정확도를 높이는 아키텍처입니다.

💡 RAG 아키텍처

  1. 색인 (Indexing): 외부 문서(지식 베이스)를 청크로 나누고, **임베딩(벡터)**으로 변환하여 벡터 데이터베이스에 저장합니다.
  2. 검색 (Retrieval): 사용자 질문을 임베딩하여 벡터 DB에서 가장 유사한 문서 청크를 검색합니다.
  3. 생성 (Generation): 검색된 청크를 LLM의 프롬프트에 컨텍스트로 넣어 정확한 답변을 생성합니다.

🚀 검색 최적화

  • 청크 크기 최적화: 검색의 정밀도와 속도를 위해 문서 분할(청크) 크기를 조절합니다.
  • 리랭킹 (Re-ranking): 1차 검색된 문서들의 관련성을 재평가하여 가장 유용한 문서를 최종 선택합니다.
  • 쿼리 변형: 사용자의 질문을 LLM이 검색하기 더 좋은 형태로 변형하여 검색 정확도를 높입니다.

5. 에이전트 (Agent)

에이전트는 LLM을 핵심 두뇌로 사용하여 목표를 달성하기 위해 자율적으로 행동하고 의사결정하는 시스템입니다.

🛠️ 도구 (Tools)

  • 정의: 에이전트가 외부 환경과 상호작용하거나 특정 기능을 수행하기 위해 사용하는 모듈입니다.
  • 예시: 웹 검색 API, 코드 인터프리터, 계산기, 달력 관리 등
  • 에이전트는 목표 달성에 필요한 도구를 스스로 판단하고 호출합니다.

🧠 계획 수립 (Planning)

에이전트가 복잡한 작업을 해결하기 위해 목표를 작은 단계로 분해하고, 각 단계의 실행 순서와 필요한 도구를 결정하는 능력입니다.

💾 메모리 (Memory)

에이전트가 과거의 정보를 저장하고 활용하는 메커니즘으로, 일관성과 학습 능력을 부여합니다.

유형 역할 저장 방식
단기 메모리 (Short-term) 현재 상호작용의 컨텍스트를 유지합니다. LLM의 컨텍스트 창에 저장
장기 메모리 (Long-term) 과거의 모든 대화, 학습 경험 등 영구적인 지식을 저장합니다. 벡터 데이터베이스를 활용하여 저장 및 검색

 

 

최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2025/12   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함