sayyoon.site
postsguestbook
🦜
SKALA생성형AI

LangChain에 대해 알아보자

2025.03.08

생성형 AI를 더욱 잘 활용할 수 있게 도와주는 LangChain에 대해 공부하고, LCEL 문법과 실습 코드를 통해 랭체인에 익숙해지자!

 

LangChain이란?

자연어 처리(NLP) 작업에서 사용되는, 언어 모델을 연결하고 체인화하여 복잡한 워크플로우를 처리할 수 있게 도와주는 오픈 소스 프레임워크

LCEL이란?

LangChain 내에서 데이터 처리 및 프롬프트 생성을 더욱 유연하게 설계하기 위해 도입된 표현식 언어

LCEL 동작 방식 이해

다양한 체인을 구성하여, 입/출력 및 중간 과정을 직관적으로 구현할 수 있음

LCEL 문법

LCEL은 LangChain 내에서 데이터 처리프롬프트 생성을 더욱 유연하게 설계하기 위해 도입된 표현식 언어

LCEL을 통한 데이터 전처리

데이터 전처리 : 우리가 원하는 형식으로 데이터를 처리하는 것 / 머신러닝, 딥러닝 할 때 데이터 전처리가 은근 시간 소요 크고 중요함

  1. 데이터 정제 : 결측값 처리, 중복 제거, 이상값 제거 등 데이터 품질 개선
  2. 데이터 변환 : 데이터 형식 변환, 범주형 데이터 인코딩 등 모델에 적합한 형태로 변환
  3. 데이터 분할 : 학습 검증, 테스트 데이터셋으로 분할하여 모델 성능 평가 및 일반화

 

2. Closed-source LLMs

  1. 효과적인 프롬프팅을 위해서는 Persona(역할 설정), Task(임무 부여), Context(맥락 설정), Format(출력 포맷 설정)을 포함해야 한다.
  2. 프롬프트의 길이가 곧 비용이기 때문에 프롬프트를 굉장히 구체적이고 상세하게 작성하느라 길이가 너무 늘어나는 게 좋은 것만은 아니다.
  3. 정확한 정보 전달은 위한 구분선(---, """, <> 등)을 사용해 질문과 자료를 구분하는 것이 좋다.
  4. Closed Question으로 전달하기 위해 ‘내가 어떻게 해야할까’ 보다 ‘내가 이 상황을 해결할 수 있는 2개의 해결 방안을 제시해줘’ 같이 작성한다.
  5. 답변 형식(개조식/마크다운/파이썬코드/json 등)을 지정하는 것이 좋다.

 

3. LangChain

랭체인 프레임워크는 1)LLM 모델 입/출력, 2)프롬프팅, 3)데이터 연결, 4)메모리, 5)외부 툴 사용과 에이전트 등의 기능을 할 수 있다.

랭체인 관련 라이브러리로 성능 모니터링을 돕는 LangSmith, 에이전트 구현에 주로 사용되는 LangGraph, API 서빙 시 사용되는 LangServe 가 있다.

물론 OpenAI API만으로 어플리케이션 구현이 가능하나, 랭체인을 사용하면 더 쉽고 간결하게 구현할 수 있기에 현재 대부분 AI 개발에서 랭체인이 사용된다.

랭체인의 체인은 아래와 같이 여러 구조로 구성될 수 있다.

  • 프롬프트-LLM
  • 프롬프트-LLM-파서
  • 프롬프트-LLM-파서-프롬프트-LLM-파서
  • 프롬프트-LLM-파서-함수
  • 함수-프롬프트-LLM-파서

 

4. LLM Agent

모든 llm 모델이 tool calling을 정확히 수행하지는 않는다는 것을 알고 있어야 한다!
Agent는 툴을 이용해서 복잡한 작업을 수행할 수 있다.

 

5. Open-weight LLMs

모델의 파일이 공개된 모델을 Open-weight LLM이라고 한다.

 

6. Fine Tuning

파인튜닝은 미리 학습된 LLM을 특정 작업이나 도메인에 적합하게 조정하는 과정이다.
파인튜닝은 특정 작업에 맞는 모델을 생성하거나, 기존 모델의 성능/기능을 향상하기 위해 사용한다.

그러나 파인튜닝은 컴퓨팅 자원이 많이 소모되고, 로컬 오프라인 모델을 파인 튜닝하는 경우 업데이트가 어렵다.
그래서 파인튜닝의 대안으로 파라미터를 전부 업데이트하지 않을 수 있는 PEFT(Parameter Efficient Fine Tuning) 방법이 나왔다.
PEFT는 모델에 일부 가중치를 추가하여 파인 튜닝의 의미를 반영하고, 가장 대표적인 방법으로 LoRa가 있다.
LoRa는 Pretrained Weights는 그대로 두고, 새롭게 적용한 결과만 변경해 파인튜닝의 효과를 낸다.

Decomposed LoRa로 DoRa가 있다.
DoRa는 Pretrained Weights를 크기와 방향으로 분해해서, 크기까지 같이 학습시키면 더 효율적이고 정확한 파인 튜닝이 가능하다.

그 외로 Tied-LoRa, XLoRa 등 기존 LoRa에서 발전된 것들이 있다고 한다.

 

7. Deployment

랭체인은 모델 배포 과정의 기능도 한다.

  1. 모델 배포 자동화
    다양한 모델과 서비스를 쉽게 배포하고 관리할 수 있는 도구를 제공한다.
  2. API 통합 및 관리
    API를 통해 모델에 액세스하고 사용할 수 있도록 지원하며, API 관리 기능을 제공한다.
  3. 성능 모니터링 및 분석
    배포된 모델의 성능을 모니터링하고 분석하여 문제점을 파악하고 개선할 수 있도록 도와줌

추후에 배울테지만 LangChain과 연결된 코드가 많은 FastAPI를 사용해서 모델서빙을 할 것이다!

 

8. RAG ~ Vector DB ~ AI App

이 다음 글로 랭체인 관련 실습 코드 공부 기록 글을 작성할 것인데, 거기서 RAG 실습을 진행할 것이다.
LLM 처리 방식을 LCEL 스타일로 구현할 것인데, 질문->답변->질문 이런 체인 형태로 할 것

RAG 프로세스

Indexing : 데이터 준비하기

  • 다양한 데이터 포맷 고려
  • 문서 전체를 하나의 Context에 담기 어려우니 분리
  • Chunking: 문자나 토큰 단위로 나누는 경우

Indexing : 적절한 청크 사이즈 선택하기

청크 크기가 너무 크거나 작으면, 불필요한 정보를 포함하거나 정보를 활용하기 어렵기 때문에
적절한 청크 사이즈로 분리하는 것이 중요하다.

Processing : 사용자 쿼리 처리하기

너무 짧은 쿼리는 검색을 위한 정보가 불충분하고, 너무 긴 쿼리는 비효율적이다.

Searching : 쿼리와 적합한 청크 검색하기

크게 두 종류의 검색 방법을 활용할 수 있다.

  • Vector 기반의 Semantic 검색
    • 의미론적 검색이 가능하다.
  • Keyword 기반의 Lexical 검색
    • 고유명사 등 용어 검색에 용이하다.

대부분의 RAG는 Semantic 검색을 주된 방법으로 채택한다. (벡터 데이터베이스를 활용)

 

바로 다음 포스트(랭체인 실습코드)로 넘어가보자고~

© Powered by danmin