LLM 기본 개념 2

TIL Day 50

By polaris0208

Index

¶ 보안 문제 및 API 개념
¶ Vector DB 개념
¶ 텍스트 처리와 임베딩
¶ LangChain

보안 문제 및 API 개념

LLM을 사용할 때의 데이터 보안 문제

  • 개인 정보 보호: 민감한 정보 저장과 제3자 공유 문제
  • 데이터 저장 및 전송: 암호화된 전송 방식 필요
  • 모델 학습 데이터: 예기치 않게 민감 정보 노출 가능성

보안을 강화하는 방법

  1. 민감 정보 필터링: 자동 필터 시스템 구축
  2. 암호화: 데이터 저장 및 전송시 암호화 적용
  3. 데이터 저장 최소화: 필요 이상 데이터 저장 금지
  4. 접근 통제: 권한과 데이터 접근 제한

API의 기본 개념

  • 클라이언트-서버 모델: 요청과 응답 구조
  • HTTP/HTTPS 프로토콜: 주로 사용되는 통신 방식
  • RESTful API: 엔드포인트와 HTTP 메소드 사용 **

    벡터 DB와 LangChain 활용하기

  • 벡터 DB: 임베딩 벡터 저장과 유사 데이터 탐색
  • LangChain: LLM과 벡터 DB를 연결, 호출 간편화

LLM + 벡터 DB + LangChain 구축 플로우

Text data -> LLM -> Embedding -> Vector ->    -- Vector DB --
Text input -> LLM -> Embedding -> Vector ->  |유사한 Vector 검색|
Text oupit <- LLM <- 답변 생성 <- Vector 선택 <- ----------------

¶ Top


Vector DB 개념

Vector DB

  • 데이터를 벡터로 저장하고, 유사한 벡터 간의 검색을 지원하는 데이터베이스
  • 일반적인 데이터베이스는 정확한 일치 검색을 지원, Vector DB는 유사성 검색 가능

Embedding

  • 텍스트나 이미지를 벡터화하여 특징을 수치로 표현
  • 유사도를 계산해 관련성이 높은 항목 검색

Faiss

  • Facebook AI Research에서 개발한 벡터 검색 엔진
  • 대규모 벡터의 빠른 검색과 유사도 계산 가능

RAG (Retrieval-Augmented Generation) 개념

  • LLM과 검색 시스템을 결합하여 외부 검색을 통해 문제 해결
  • 최신 정보를 포함한 답변 제공에 유리

RAG의 동작 원리

  1. 검색 단계: 질문을 벡터로 변환, 유사한 문서 검색
  2. 생성 단계: 문서를 기반으로 자연스러운 답변 생성

Vector DB와 RAG의 결합

  • Vector DB는 유사 문서 검색
  • RAG는 검색 문서 기반으로 답변 생성

¶ Top


텍스트 처리와 임베딩

필요성

  • 데이터 품질 향상과 모델 성능 향상에 필수적
  • 모델이 이해 및 처리 가능한 형태로 자연어의 복잡성과 다양성을 구조화하고 정제

텍스트 처리의 목표

  • 노이즈 제거: 불필요한 정보 제거로 정확한 분석 지원
  • 일관성 확보: 문장 구조와 형태의 일관성을 유지
  • 효율적인 처리: 중요 정보 유지로 빠른 처리 가능

주요 텍스트 처리 기법

  1. Tokenization: 텍스트를 단어 또는 서브워드로 나누기
  2. Normalization: 대소문자와 특수문자 처리
  3. Stopword 정보가 없는 단어 제거
  4. 형태소 분석(Morphological Analysis): 한국어 형태소 추출
  5. Lemmatization: 기본형으로 변환
  6. 문장 분리 및 길이 조정: 문장 분할과 길이 조정

임베딩 기법

  1. Bag of Words (BoW): 단어 빈도 기반 단순 벡터화
  2. TF-IDF: 단어 중요도를 고려한 임베딩
  3. Word2Vec, GloVe: 의미적 유사성 반영
  4. Transformer 기반 임베딩 (BERT, GPT): 문맥 고려한 깊이 있는 임베딩 생성

예시

  • pip install sentence-transformers : transformers 라이브러리 임베딩 모듈
from sentence_transformers import SentenceTransformer
import numpy as np

model = SentenceTransformer('intfloat/multilingual-e5-large')

sentences = [
    "유쾌한 사람에게는 유쾌한 사람이 온다.",
    "불쾌한 사람에게는 불쾌한 사람이 온다.",
    "노력도 가끔은 배신한다.",
    "과메기를 다 널고 나서야 늦은 저녁식사가 시작됩니다.",
    "식은밥을 넣어 마시듯 먹었던 물회는 포항사나이들의 음식이었습니다"
]

embeddings = model.encode(sentences)

print(embeddings.shape)
print(embeddings[0])

# (5, 1024) # 다섯 문장이 1024개의 데이터로 변환
# [-0.00191365  0.00246765 -0.00720946 ...  0.00078195 -0.02185358
#   0.00062483]

¶ Top


LangChain

  • 언어 모델 중심의 다양한 데이터 소스와 툴을 연결해 체인 기반 애플리케이션을 구축
  • 여러 단계로 구성된 체인 구조로 다양한 연산 및 데이터 처리 가능

장점

  • 유연한 구성: 언어 모델과 다양한 컴포넌트 연결을 통해 다양성과 확장성 제공
  • 모듈화된 컴포넌트: 프롬프트 템플릿, 출력 파서 등 조합 및 재사용 가능
  • 체인과 에이전트: 복잡한 작업 자동화를 위한 체인과 상황 기반 에이전트 제공
  • 강력한 통합 기능: 다양한 언어 모델 및 벡터 데이터베이스 통합 지원

LangChain의 주요 개념

  • LLM: 텍스트 생성 기능 제공, 다양한 모델 통합 지원
  • Prompt Templates: 입력값에 따른 프롬프트 동적 생성
  • Chains: 여러 단계를 거쳐 워크플로우를 구성
  • Agents: 필요한 작업을 판단하고 실행
  • Vector Databases: 유사 벡터의 빠른 검색 지원

LangChain 예시

  1. RAG: 관련 문서 검색 후 응답 생성
  2. FAQ 시스템: 유사성 검색으로 적절한 답변 제공
  3. 다단계 챗봇 워크플로우: 여러 단계를 거쳐 복잡한 답변 구성
  4. 지능형 에이전트: 최신 정보 제공을 위한 에이전트 구현

¶ Top

Tags: TIL LLM