Study/AI

[AI] 'LLM Application 개발 경험 공유회' 리뷰

solze 2025. 4. 28. 01:30
728x90

 

💡 Intro

  • LLM : NLP 분야에서 가장 주목받고 있으며, 트랜스포머 기반(Decoder Only) 모델이 대세
  • Fine Tuning : Pre Trained Model을 용도에 맞게 튜닝하는 것
  • In Context Learning : 별도의 모델 가중치 업데이트를 시키지 않고 명령 프롬프트 내에서 원하는 대답을 얻게 하는 것
    • X-Shot Learning, Chain of Thought, Self-Consistency 

 

💡 LLM Application

  • 비결정성이 포함된 LLM의 추론 결과를 바탕으로 동작하며, 질문에 필요한 데이터를 최대한 잘 뽑아서 LLM이 잘 대답할 수 있도록 하는 것이 중요함
  • 외부 API 활용(Search API, Web Scraper, Document loading) : Langchain, Llamalndex, Unstructured
  • Structured DB 활용(Snowflake, RDBMS) : SQL형태의 Question을 LLM에 질의하여 답변 얻기
  • 키워드 및 전문(Full text) 검색(Elastic Search, Algolia, Solr, OpenSearch) : 검색 엔진 사용
  • 유사도 기반 검색 (VectorDB) : 두 벡터 간 거리를 기반으로 유사도 측정

 

💡복잡한 유즈케이스

  • 하나의 프롬프트에 많은 역할과 추론 과정을 요구하는 경우 원하는 대로 말을 안들을 때가 많기 때문에
    • 프롬프트의 역할을 명확하게 하여 쪼갠 후 Caining 하기 (파이프라인)
    • Retrospective하게 추론-실행을 반복하는 에이전트 활용하기
    • 예외처리 적용  유닛테스트/E2E테스트를 수시로 진행해야 함

 

💡Agent

  1. LLM에게 미리 정의한 툴을 알려주고 질문에 대답하기 위해 툴을 선택하게 한다
  2. 선택한 툴을 코드로 실행하여 결과를 얻는다
  3. LLM에게 결과를 주고 질문에 충분히 대답할 수 있는 지 물어본다. 만약 충분히 대답이 된다면 결과 반환 후 종료
  4. 대답이 안되면 답변에 필요한 새로운 질문을 생성해 1-3 반복

 

💡운영 시 주의사항

  • 응답 Latency가 중요하다면 Streaming으로 구현
  • 이전 대화를 바탕으로 대답해야 한다면 Memory로 구현
  • 인증이 없다면 외부 공격에 취약할 수 있음
  • 토큰 사이즈, First touch latency-Last touch latency 신경 쓰기

 

💡Prompt Engineering

  • 간결/명확하게 영어로 작성하고, 프롬프트 소개 문단에 대한 구분은 '###', '''''' 같은 구분자로 명확하게 나누기
  • 예제를 넣고, 하지 말라고 하기 보다는 하라고 하는게 더 낫다
  • X-shot Learning : zero-shot, one-shot, few-shot
  • Hallucination : Ground Truth를 잘 적용하거나 특 정보만 파악할 수 있도록 제약사항을 적용해도 좋음
  • 프롬프트에 역할 및 규칙이 많아질수록 말을 안듣기 때문에 충분한 데이터셋으로 반복테스트 해서 확인해야 함
  • 동일한 질문도 여러 번 테스트하고, 각 모델별 포맷에 대한 확인도 필
728x90