LLM Application/LangChain

LLM 한계 및 해결방법

carrotweb 2026. 7. 22. 17:23
728x90
반응형

LMM 한계

정보의 한계

LLM(대규모(초거대) 언어 모델)은 선행 학습된 데이터(학습 시점의 데이터)에만 제한됩니다. 그래서 최신 정보가 부족합니다.
그리고 특정 도메인에 대한 정보가 부족하거나 없을 수 있습니다.

 

ChatGPT를 통해 정보의 한계를 확인해보겠습니다.

중학생의 수학 기초학력 미달율을 물어보겠습니다.

ChatGPT는 학습된 정보가 없을 경우 웹에서 검색을 합니다.

 

ChatGPT가 웹에서 검색한 내용을 정리하여 보여줍니다.

질의할때가 2025년 7월인데 ChatGPT에 데이터도 없고 웹 검색에서도 2023년를 기준으로 가져왔습니다.

이처럼 최신 데이터를 기대하고 물어보면 없거나 과거 데이터를 가져올 수 밖에 없습니다.

 

 

정확성의 한계

오래된 정보가 제공되거나 일반적인 정보가 제공될 수 있어 부정확한 답변이 제공될 수 있습니다.

  • 용어 혼동(동일한 용어로 인하)으로 인해 다른 내용으로 답변 생성
  • 신뢰할 수 없는 출처로부터 답변 생성
  • 사실과 다른(존재하지 않는) 정보를 사실인 것처럼 답변 생성 → Hallucination(할루시네이션, 환각)

 

LLM 한계점 해결 방법

Fine-tuning (파인 튜닝, 미세 조정)

특정 도메인에 대한 높은 정확성을 제공하기 위해, 이미 훈련된 대규모 언어 모델에 특정 데이터셋을 사용하여 추가적인 학습을 수행하는 작업을 말합니다.

 

파인 튜닝의 한계점

  • Overtraining, Overfitting (과적합, 과대적합, 오버피팅) : 학습 모델이 학습 데이터에 지나치게 잘 맞춰져 일반화하는 능력이 떨어지는 현상을 말한다.
  • Catastrophic Forgetting (파멸적 망각) : LLM에 새로운 정보를 학습할 때 이전에 학습한 정보를 급격하게 잊어버리는 현상을 의미한다.
  • 높은 시스템 비용 : 재 학습을 위한 고성능 GPU와 대용량 메모리가 있는 시스템을 사용하기 위한 비용 부담과 재 학습 시간이 필요합니다. 추가 학습을 위한 Labeling(라벨링)과 Supervised Learning(지도학습) 과정에 많은 시간과 작업량을 필요합니다.

 

Few-Shot Learning (FSL, 퓨샷 학습)

0개에서 n개의 예제를 학습하여 예측을 수행하는 방법을 학습한 후 답변이 출력되도록 합니다.

예제를 통해 모델이 질문에 대한 의도를 좀더 정확하게 이해하게 되고 답변을 예제 형식에 맞게 처리하게 됩니다.

제한된 양의 학습 데이터만을 사용하여 새로운 작업을 수행할 수 있게 하는 학습 방식입니다.

 

  • Zero-Shot Learning (제로샷 학습) : 모델에 학습할 수 있는 예제를 제공하지 않는 방식입니다.

 

  • One-Shot Learning (원샷 학습) : 모델에 학습할 수 있는 하나의 예제를 제공하는 방식입니다.

 

  • Few-Shot Learning (퓨샷 학습) : 모델에 학습할 수 있는 여러 예제를 제공하는 방식입니다.

 

 

Chain-of-Thought (CoT, 생각의 사슬)

예제로 문제와 함께 문제를 해결하기 위한 논리적 단계를 포함하여 프롬프트를 구성합니다. 이를 통해 모델은 유사한 추론 라인을 따르도록 유도하여 좀더 정확한 답변을 할 수 있도록 해줍니다.

수학 문제, 복잡한 이해 문제, 주어진 데이터로부터 추론을 요구하는 문제와 같이 여러 단계나 추론의 레이어가 필요한 문제에 특히 유용합니다. 

 

예를 들어, 수학 문제와 결과 값을 묻는 예제 대신에 결과 값에 계산 방식을 설명하여 모델이 수학 계산 과정에 반영하도록 유도할 수 있습니다.

 

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

별도의 모델 학습과정 없이 프롬프트에 Context(문맥)를 제공하고 Context(문맥)를 기반으로 모델을 학습시켜 답변이 출력되도록 합니다.

 

프롬프트 구성 요소

  • 지시(Instruction) – 모델이 수행할 특정 작업 또는 지시 (Task Description, Persona, Role)
  • 문맥(Context) – 더 나은 답변을 위해 모델을 조종할 수 있는 외부 정보나 추가 문맥 (Information, Input Indicator, Example)
  • 입력 데이터(Input Data) – 답변 받고자 하는 입력이나 질문 (User Input, Question)
  • 출력 지시자(Output Indicator) – 출력의 유형이나 형식 (Output Indicator, Format)

 

인-컨텍스트 학습의 한계점

  • Context 길이 제한 : LLM이 처리할 수 있는 컨텍스트에 길이 제한이 있습니다. 그래서 긴 컨텍스트는 처리할 수 없습니다.
  • 제공되는 Context가 너무 적거나 정보의 품질이 낮으면 모델 성능이 저하될 수 있습니다.
  • Context가 추론이나 복잡한 논리적 사고를 요구할 경우 LLM이 정보를 처리하는데 제약이 있을 수 있습니다.

 

우리가 LangChain으로 만들 RAG(Retrieval-Augmented Generation, 검색 증강 생성)는 LLM(대규모(초거대) 언어 모델)에 외부 데이터를 참고하여 답변하도록 In-Context Learning (ICL, 인-컨텍스트 학습)을 활용하여 만들겁니다.

 

우선 LangChain Hub에서 In-Context Learning (ICL, 인-컨텍스트 학습) 방식으로 사용될 프롬프트를 검색하여 사용해보도록 하겠습니다. 이 프롬프트는 다음에 개발할 RAG에서 사용됩니다.

 

LangChain Hub (https://smith.langchain.com/hub/)

 

rag로 검색한 후 rlm/rag-prompt를 클릭합니다. 검색 후 Top Favorited를 클릭하면 상단에 나옵니다.

You are an assistant for question-answering tasks.
Use the following pieces of retrieved context to answer the question.
If you don't know the answer, just say that you don't know.
Use three sentences maximum and keep the answer concise.
Question: {question} 
Context: {context} 
Answer:
당신은 질의응답 작업에 대한 어시스턴트입니다.
다음 문맥을 참고하여 질문에 답을 하세요.
답을 모르면 모른다고만 말씀해 주세요.
최대 세 문장으로 간결하게 답변해 주십시오.
질문: {question}
문맥: {context}
답:

 

정확한 결과를 얻기 위해서 프롬프트에 모델의 역할을 설정해주고 작업에 대한 지시사항을 설정합니다. 그리고 프롬프트에 질문과 관련된 Context(문맥)를 제공하고 Context(문맥)를 기반으로 모델을 학습시켜 답변이 출력되도록 합니다.

 

 

In-Context Learning (ICL, 인-컨텍스트 학습)으로 할 경우 다음과 같이 고려할 사항이 있습니다.

  • 프롬프트에 질문과 관련된 데이터는 어디에 있고 어떻게 가져와야 하는가?
  • 질문에 맞게 프롬프트의 역할을 어떻게 설정해야 하는가?
  • 프롬프트에서 문맥 관리는 어떻게 해야 하는가?

 

다음에는 고려사항을 답을 찾아가 보도록하겠습니다.

728x90
반응형