Lang/Langchain&graph

랭체인을 위한 기초 AI 지식

푸른바다거북이14 2025. 7. 5. 21:57

해당 글은 러닝 랭체인 책을 공부하면서 정리하였습니다.

https://product.kyobobook.co.kr/detail/S000216453776?utm_source=google&utm_medium=cpc&utm_campaign=googleSearch&gt_network=g&gt_keyword=&gt_target_id=dsa-435935280379&gt_campaign_id=9979905549&gt_adgroup_id=132556570510&gad_source=1

LLM 애플리케이션 구축에는 랭체인, ADK 등 다양한 프레임워크를 선택해 개발한다. 그러나 제일 중요한 것은 반드시 LLM은 필요하다.

 

LLM은 기존 ML과 두 가지 차이점이 있다.

  • LLM은 훨씬 많은 데이터로 학습하여, 많은 개발 비용이 든다.
  • LLM은 기존 ML 모델보다 더 다양한 용도로 활용할 수 있다.

LLM 개요

LLM(large language model)은 방대한 데이터와 파라미터로 학습한 언어 모델이다. 텍스트 데이터인 책, 기사, 글 등 다양한 자료에서 나타난 텍스트의 패턴을 학습한다.

 

따라서 언어의 문맥을 파악해서 다음 단어의 발생 확률을 추정한다.

ex 한국의 수도는 ___ 이다. -> 발생 확률 계산 후 '서울'로 답변

 

정확히 말하면 단어가 아닌 Token을 기준으로 확률을 추정한다. 토크나이저의 학습 목표는 흔하게 사용되는 단어를 하나의 토큰으로 인코딩하는 것이다.

 

LLM 예측력의 핵심은 트랜스포머 신경망 아키텍쳐(transformer neural network architecture)다.

트랜스포머 구조는 문장이나 코드 등 데이터의 연속체를 처리하며, 연속체에서 가장 가능성이 높은 다음 단어를 예측한다.

트랜스포머는 문장 내의 각 단어와 다른 모든 단어의 관계를 고려해 문맥을 파악한다. 이 방법을 통해 LLM은 문장이나 단락 등이 서로 연결되어 나타내는 의미를 포괄적으로 이해한다.


프롬프트

LLM에 제공하는 지침과 입력 텍스트를 프롬프트라 한다. 프롬프트는 LLM의 출력 품질에 상당한 영향을 미친다.

좋은 출력을 만드는 프롬프트를 작성하는 과정을 프롬프트 디자인 또는 프롬프트 엔지니어링이라 한다.

 

만약 The capital of England is London 에 대해서 학습을 하였다며,

프롬프트를 구성할 때

The capital of England 라는 식으로 프롬프트를 작성해야 응답을 얻을 수 있다.

 

만약 What is the capital of England? 라고 입력하면 부정확한 결과를 얻을 수 있다. 

 

제로샷 프롬트

제일 간단한 방법으로 아주 단순한게 LLM에 원하는 작업을 지시한다.

 

사고의 연쇄(CoT)

LLM의 성능을 높이는 좋은 방법은 LLM이 시간을 들여 사고하도록 추가 지시하는 것이다.

이른바 사고의 연쇄(Chain of thought)라고 부르는 프롬프트 기법은 프롬프트 앞에 LLM이 도달하는 과정을 설명하도록 지시문을 삽인한다. 이 기법은 다양한 작업의 성능을 높인다. 

반면, 객체 탐지, 이미지 캡션 생성과 같은 사람이 생각할수록 효율이 떨어지는 작업에서 사고의 연쇄를 사용하면 LLM 또한 효율이 낮아진다.

퓨샷 프롬프트

LLM에 질문과 정답의 예제를 몇 가지 제공하여, 추가적인 훈련이나 파인튜닝을 거치지 않고도 새로운 작업을 수행하는 방법을 익히게 된다. 퓨샷 프롬프트는 파인튜닝보다 유연하다. 호출하는 시점에서 즉석에서 적용할 수 있지만 결과가 효과적이지 못할 때도 있다. 이런 경우 파인튜닝을 통해 더 나은 성능을 달성할 수 있다. 그러므로, 파인튜닝을 하기 전에 보통은 항상 퓨샷 프롬프트를 시도하길 권한다.

 

정적 퓨샷 프롬프트: 가장 기본적인 퓨샷 프롬프트 작성 방법은 모든 프롬프트에 포함할 동일한 예제를 전달한다.

동적 퓨샷 프롬프트: 다수의 예제로 구성된 데이터셋을 준비할 때, 현재 프롬프트와 가장 관련성이 높은 예제를 전달한다. 

튜닝

많은 연구진들이 LLM을 쉽게 사용할 수 있도록 추가 훈련(파인튜닝)을 실시한다. 즉 훈련한 모델을 다시 훈련을 진행하는 것이다.

지시 튜닝

특화 데이터 셋: 질문/답변 쌍 데이터셋으로 최종 사용자가 프롬프트 작성 시 제기할 수 있는 일반적인 질문에 대한 바람직한 응답 예시를 제공한다.

예를 들어, Q 한국의 수도는 어디? A. 한국의 수도는 서울입니다. 형태의 쌍을 포함할 수 있다.

 

인간 피드백을 통한 강화 학습(RLHF): RLHF 기법을 사용하면, 모델이 생성한 출력에 대한 사용자 피드백이 앞서 사용한 수작업 데이터셋에 더해진다.

 

지시 튜닝은 LLM에 사용한 애플리케이션 구축의 진입장벽을 획기적으로 낮췄다. 잘못된 데이터셋에 대해서 피드백을 통해 튜닝을 할수 있다.

 

대화튜닝

대화 튜닝은 지시 튜닝을 거친 LLM에 추가적인 튜닝을 진행해 대화에 적합하게 구성한다.

 

대화 데이터셋: 여러 개의 프롬프트 - 응답 쌍으로 구성한 상호작용 형태의 파인튜닝 데이터셋을 수작업으로 구성한다.

 

채팅 형식: 모델의 입력 및 출력 형식에 자유 형식 텍스트 위에 계층적 구조를 부여한다. 이 구조는 텍스트를 여러 부분으로 나눠 각 부분에 역할과 이름(선택 사항) 등 메타데이터를 부여한다. 보통 역활(role)은 시스템(작업 지시 및 틀 설정)과 사용자(실제 작업 혹은 질문 역할) 그리고 어시스턴트(모델 출력)으로 구성한다. 

 

파인튜닝

파인튜닝은 기본 LLM에 특정 작업 수행에 특화된 데이터셋을 추가 학습시킨다. 기술적으로 지시 튜닝과 대화 튜닝을 거친 LLM은 파인튜닝을 거친 LLM이다. 다만 파인튜닝한 LLM이라는 표현은 특정 업무에 최적화하도록 개발자가 별도로 조정한 LLM을 지칭한다.

 

검색 증강 생성(RAG)

검색 증강 생성은 관련 있는 텍스트 조각을 찾아내, 해당 텍스트 조각을 컨텍스트라 칭하며 프롬프트에 포함한다. RAG 기법은 CoT와 결합해 사용할 수 있으며, 실제 애플리케이션에서는 결합하는 편이 바람직하다. 

 

툴 호출

툴 호출 (tool calling)은 프롬프트에 미리 LLM이 사용할 수 있는 외부 함수 목록과 각 함수의 용도, 출력에서 함수를 사용하고자 할 때 답변을 축력하는 방법을 포함한다.

'Lang > Langchain&graph' 카테고리의 다른 글

01. Langchain - LLM 사용법  (0) 2025.07.12