Generative AI (LLM)4 RAG, LangChain로 어떻게 외부 데이터 검색하고 생성을 결합할까? RAG는 검색 (Retrieval)과 생성 (Generation)을 결합한 자연어 처리 기법이다.기존의 GPT 같은 생성형 AI는 훈련 데이터 내에서만 정보를 알고 있기 때문에, 최신 정보나 특정 도메인 지식이 부족할 수 있다. 즉, 훈련 데이터에 포함되지 않는 정보에 대해서 답변 불가능하다는 것이다.이러한 문제를 해결하기 위해, 외부 데이터베이스에서 관련 정보를 검색한 후, 그 정보를 바탕으로 답변을 생성한다. Retrieval (검색 단계)사용자의 질문(쿼리)과 관련된 문서를 외부 데이터베이스에서 검색 후, 각 텍스트를 임베딩 벡터로 변환(Sentence Transformers, OpenAI Embeddings 등 사용) -> 벡터 DB에 저장사용자 질문을 임베딩 벡터로 변환해, Vector Sear.. 2025. 3. 4. [LLM] Fine-tuning이 왜 중요하며 어떻게 변화될까? HuggingFace는 transformer 모델 공유의 시초로 LLM의 모델을 공유하는 저장소이다.HuggingFace에서 제공하는 모델 튜닝 라이브러리로 TRL (Transformer Reinforcement Learning)이 있다.이는 Transformer 언어 모델을 학습하기 위한 라이브러리로, LLM 파인튜닝을 위해 Trainer 클래스 또는 SFTTrainer 클래스를 많이 이용하는 추세이다. 물론, Custom Trainer를 사용할 수도 있다.보통 모델 학습 과정을 직접 제어할 때 (학습률 조정, 손실 함수 변경 등) 유용하며, 반대로 빠르고 간단하게 LLM을 Fine-tuning하기를 원하거나 Reinforcement Learning Fine-tuning (PPO)를 하고자 할 때는 T.. 2025. 3. 3. [LLM] Transformer에서 positional encoding이 중요한 이유? Positional Encoding은 각 토큰이 어느 위치에 있는지 상대적인 위치를 나타내기 위한 것이다.(sin, cos을 이용하여 각 토큰마다 고유한 값을 가짐) 임베딩 벡터 내 요소의 인덱스가 짝수이면 sin함수를 적용하고 반대로, 인덱스가 홀수이면 cos함수를 적용한다.그 이유는 다음과 같다.sin,cos 함수는 주기성을 띄어서, 반복적인 패턴을 만들어 내며 서로 다른 주기성 특성을 (pi/2 만큼의 위상 차이) 갖고 있다.따라서, 둘을 함께 사용하면 더 세밀하게 위치 정보를 나타낼 수 있다.주기를 돌다보면 서로 비슷한 값을 지닐 수 있기 때문에 서로 다른 주기성 특성을 가지는 함수를 함께 사용하는 것이다.즉, 위치 차이를 명확히 나타낼 수 있게 된다. 상대적으로 낮은 위치를 가지는 인덱스는 비.. 2025. 2. 25. [LLM] Transformer에서 Attention 기능이 중요한 이유? 자연어 모델을 다룰 때는 tokenizer, model 두 개가 필요하다.주어진 문장을 몇 개의 토큰으로, 어떻게 나눌지가 tokenizer의 역할, 나누어진 각 토큰을 벡터로 나타내는 것이 사전 훈련된 model의 역할이다.대규모의 데이터셋으로 사전 훈련을 했기 때문에, tokenizer, model이 어떤 문장이 입력으로 들어와도 이를 잘 수행할 수 있다. (물론 얼마나 많이, 잘 훈련했는지의 성능에 따라 다름) 입력 데이터의 shape은 실제 문장에서 처리한 토큰으로 카운트됨 -> (batch_size, token_num)([CLS]와 [SEP] 토큰이 자동으로 포함) 출력 값에서의 last_hidden state의 shape은 모델이 처리한 모든 토큰을 카운트함 -> (batch_size, to.. 2025. 2. 25. 이전 1 다음