본문 바로가기
AI

[AI] LLM 핵심 개념 요약 정리

by Lcoding 2025. 6. 15.
반응형

안녕하세요, 개인 공부한 내용을 정리하는 게시글입니다.

 

LLM 핵심 개념 요약 정리

 

1. 실습 환경 구성

Python 버전: 3.12

● API Key 관리:

 - .env 파일에 API Key 저장 → python-dotenv 설치 필요

 

from dotenv import load_dotenv
load_dotenv()  # .env에서 OPENAI_API_KEY 로드

 

 

TTS (Text to Speech): tts-1-hd 모델을 사용.

from openai import OpenAI
client.audio.speech.create(
    model="tts-1-hd",
    voice="alloy",
    input="Hello tts!"
)

 

● 음성 → 텍스트 (STT):

     - OpenAI Whisper API

     - Hugging Face Whisper 직접 설치 후 chunk 분리

● 문장/화자 구분 (Speaker Diarization):

     -  pyannote.audio의 Pipeline 사용

● 웹 인터페이스(view) 실습:

     -  streamlit 사용

 

2. LLM 프롬프트 설계 및 대화 방식

  원샷 / 퓨샷 프롬프팅:

     -   예시를 통해 모델의 응답 유도

 

 

 

  멀티턴 대화:

     -    InMemoryChatMessageHistory 등 이용

  System / Human / AI Message 구조:

messages = [
  SystemMessage("너는 친절한 선생님이야"),
  HumanMessage("안녕하세요"),
]
response = model.invoke(messages)

 

  스트리밍 응답:

     -    model.invoke() → model.stream() 으로 변경

 

3. LangChain 기본

   LangChain이란?
     -    빠르게 LLM 기반 앱을 만들기 위한 프레임워크

   기본 구성 요소:

     -    ChatOpenAI

     -    SystemMessage, HumanMessage, AIMessage

     -    @tool 데코레이터

 

 

   LangChain Expression Language (LCEL):

     -    파이프라인 정의, 메시지 흐름 제어 가능

     -    @tool 사용 시 """ """로 Docstring 정확히 작성

   .env를 사용하면 API Key 명시 생략 가능

 

4. LangGraph 기본

   LangGraph란?
     -  복잡한 다단계 흐름, 워크플로우, 에이전트를 상태 기반으로 제어

 

  차이점 요약:

     -  LangChain → LLM 기반 앱의 기본 구조

     -  LangGraph → 복잡한 흐름을 위한 컨트롤러

 

5. 문서 요약 및 RAG

■ 기본 개념

청킹 & 오버랩 설정:

text_splitter = RecursiveCharacterTextSplitter(chunk_size=1000, chunk_overlap=100)
splits = text_splitter.split_documents(docs)

 

 

  오버랩 수동 처리 예시:

for i in range(len(splits) - 1):
    splits[i].page_content += "\n" + splits[i + 1].page_content[:100]

 


  임베딩 유사도 측정:

     -   코사인 유사도, 유클리디안 거리 등 ( 유사도 측정은 임베딩 모델에 따라 결과가 달라짐 )

 

 

■ 벡터 DB 저장

 FAISS

from langchain.vectorstores import FAISS
vector_store = FAISS.from_documents(docs, embedding=OpenAIEmbeddings())
vector_store.save_local("faiss_index")
 
 Chroma
from langchain_chroma import Chroma
vectorstore = Chroma.from_documents(docs, embedding=embedding, persist_directory="chroma_db")
 
 Retriever 생성
retriever = vectorstore.as_retriever(k=3)
 

6. 웹 검색 기능

■ DuckDuckGo 검색 기능

from langchain_community.utilities import DuckDuckGoSearchAPIWrapper
from langchain_community.tools import DuckDuckGoSearchResults

wrapper = DuckDuckGoSearchAPIWrapper(region="kr-kr", time="d")
search = DuckDuckGoSearchResults(api_wrapper=wrapper, source="news")
docs = search.invoke("국제 유가")
 
  특정 사이트 한정 검색:
docs = search.invoke("site:ytn.co.kr 최근 국제 유가")

 

■ 웹 콘텐츠 크롤링

  • BeautifulSoup 사용
  • WebBaseLoader로 로딩

 

7. 유튜브 요약

pip install youtube-search
pip install youtube_transcript_api
 
  LangChain의 create_stuff_documents_chain 활용
  tqdm으로 진행 상황 표시
 
 

8. 주식시장 이용

  yfinance API 사용:
     - 미국 주식 정보 수집

import yfinance as yf
ticker = yf.Ticker("AAPL")
info = ticker.info

8.  RLHF & 기타

   RLHF란?

     -   Reinforcement Learning from Human Feedback
     -   → LLM 편향 제거, 사용자 피드백 반영

 

   Fine-tuning:
     -   개인화 목적, 고유 도메인 데이터로 학습

 

   할루시네이션 문제:
     -   RAG 또는 고품질 프롬프트로 완화

 

  PDF → 텍스트:

     -  PyMuPDF (또는 pdfminer) 활용
 

 

* 추가 정리

항목  요약 설명
LangSmith LangChain 기반 앱의 디버깅, 로그 분석 도구
Memory 종류 ConversationBufferMemory, SummaryMemory 등
LLM 평가법 Exact Match, BLEU, ROUGE, Human Evaluation 등
Embeddings 종류 text-embedding-3-small, sentence-transformers 등 비교
Prompt Template 동적 입력을 위한 PromptTemplate 구성법
 
 

 

감사합니다.

 

반응형

loading