RAG란? LangChain이란? - RAG 프로젝트 기획하기
RAG란? LangChain이란? - RAG 프로젝트 기획하기 — #RAG란 #LangChain #개발자의도구들 *10.13에 진행한 내용 RAG란 무엇인가? RAG가 없는 상태의 ...
#RAG#Naver Blog
#RAG란 #LangChain #개발자의도구들
\*10.13에 진행한 내용
RAG란 무엇인가?
RAG가 없는 상태의 일반적인 LLM은 프롬프트 입력에 모델이 바로 생성물을 만듭니다.
반면 RAG의 경우 입력된 프롬프트를 통해 모델이 외부 소스로 부터 데이터를 가져옵니다. 이를 프롬프트에 더해 생성물을 만들어냅니다.
장점:
- 훈련 비용 효율성
- 재훈련 필요 없다.
- 실시간으로 외부 데이터와 통합가능
- 정확성 및 신뢰성
- 실시간 데이터, 외부 신뢰할 수 있는 DB 등을 사용하여 신뢰성이 높아짐
- 맞춤형 서비스
- 기업 내부 데이터를 활용하여 기업 맞춤형
- 챗봇 같은 거
단점
- 믿을 수 있는 외부 데이터?
- 외부 데이터 자체를 신뢰할 수 없다면 의미 X
- 토큰 비용
- 입력 토큰이 길어짐에 따라 비용 증가
- 입력 제한
- 입력 토큰 길이의 한계로 중요 정보가 누락
- 응답 지연
Chunking
Chunking은 포괄적으로 큰 문서를 작은 문서로 분할 하는 것을 의미합니다. LLM에서는 입력 길이의 제한으로 인해 긴 문서를 작은 단위로 나눌 필요가 있습니다. 이때 Chunking 기법을 사용합니다.
- Fixed-Size: 고정된 문자수나 토큰 수로 분할합니다.
- 경계면에 오버랩을 두어 문맥을 유지하게 할 수 있습니다.
- Sentence-based
- 문장 단위로 분할 후 일정 개수를 하나의 청크로 묶습니다.
- Paragraph-based
- 문단(\\n\\n)단위로 분할합니다.
- Recursive Character Text Splitter
- 우선순위가 높은 구분자로부터 시도하고 청크 사이즈가 커지면 다음 전략으로 더 작게 분할합니다.
- SEMENTIC
- 임베딩 유사도를 기반으로 의미적으로 관련된 텍스트를 그룹화 합니다.
- 임베딩 유사도 알고리즘 사용
- Document-Structured based
- Markdown, HTML 등의 구조를 활용하여 Chunking을 시도합니다.
- 크롤링된 데이터에 활용하기 좋습니다.
적절하게 진행된 chinking은 검색 정확도를 높이며, 비용을 줄일 수 있습니다.
하지만, 적절하지 못한 chunking은 컨텍스트 손실로 인해 검색 정확도가 낮아집니다.
Embedding
Embedding은 텍스트를 고차원 벡터 공간 숫자 배열로 변환하는 과정입니다. 의미적으로 유사한 텍스트는 벡터 공간에서 가까이 위치해 있습니다.
- 여러 알고리즘이 사용됩니다.
장점:
- 임베딩을 통해 의미적 검색이 가능합니다.
- 저장 공간을 크게 줄일 수 있습니다.
- 벡터 계산으로 빠른 검색이 가능합니다.
단점:
- 임베딩 생성에 비용이 발생합니다.
- 데이터 차원이 증가할 수록 분석이 기하 급수적으로 어려워집니다.
- 정보손실: 고정 크기의 벡터로 압축하기 때문에 정보가 손실될 수 있습니다.
- 모델의존성: 임베딩 모델에 따라 성능차이가 커집니다.
LangChain
- LLM RAG 시스템 개발을 위한 프레임워크입니다. 체인 개념을 도입하여 복잡한 작업을 수행하도록 돕습니다.
다음과 같은 구성요소가 존재합니다.
Model: 다양한 LLM 제공자와의 통합
ex) OpenAI, Anthropic, Google ...
Prompt: 프롬프트 템플릿을 관리하고 재사용할 수 있습니다.
- 프롬프트 엔지니어링 적용
Chains: 여러 컴포넌트를 순차적으로 연결하여 복잡한 워크플로우를 구성합니다.
Memory: 대화 맥락을 유지하고 관리합니다.
Index & Retrieve: 문서를 로드하고, 분할하고, 인덱싱하여 검색 가능하게 만듭니다.
Agent: LLM에게 사용할 수 잇는 도구를 제공하여 복잡한 작업을 자율적으로 수행합니다.
CALLBACK: 실행 과정을 모니터링하고 로깅합니다.
프로젝트 계획서
- 뉴스 사이트에서 뉴스 데이터를 크롤링하여 실시간 뉴스 요약 프로그램을 만들려고 하였습니다.
- LangChain을 넣기가 애매해서 현재는 뉴스 스크립트 Chatbot으로 수정되었습니다.(이후글 참고)














