본문 바로가기
Coding/TIL & 배운것들

RAG, Vector DB, LangChain

by 코딩짜는 머글 2024. 11. 13.

RAG (Retrieval-Augmented Generation) 란?

검색기반 생성 기법이다. LLM은 많은 데이터를 학습했음에도, 최신 정보나 특정 도메인 지식에 대한 한계를 가질 수 있다. 이를 보완하기 위해 RAG는 LLM이 직접 답을 생성하는 대신, 외부 데이터베이스나 문서에서 관련 정보를 검색한 후, 그 정보를 바탕으로 답변을 생성하는 방식이다. 

 

 

▼ 동작 원리

질문 입력 
사용자가 질문을 하면, RAG 시스템은 질문에 맞는 답변을 생성하기 전에 검색 단계를 거친다.
문서 검색 (Retrieval)
벡터DB나 기타 정보 저장소에서 질문과 관련된 문서를 검색한다. 이때 사용되는 검색 방법은 텍스트를 벡터화하여 의미적으로 유사한 문서를 찾는 것이다. 
답변 생성 (Generation)
검색된 문서를 바탕으로 LLM이 최종적으로 답변을 생성한다. 

 

 

▼ 장점

최신 정보 활용 
LLM은 학습된 데이터가 오래될 수 있지만, RAG는 최신 데이터베이스에서 정보를 검색할 수 있다. 
특정 도메인 정보 제공
도메인에 특화된 정보 제공이 가능하여, 일반적인 LLM보다 더 정확한 정보를 제공할 수 있다. 
효율성
필요한 정보만을 검색해오기 때문에, LLM의 모든 지식을 외부에 의존하지 않고도 효율적으로 사용 가능하다. 

 

▶ 예시 

예로, 법률과 같은 특수 분야에서 질문이 들어올 경우, LLM은 법률 데이터베이스에서 관련 문서를 검색하고, 이를 바탕으로 답변을 구성할 수 있다. 즉, LLM의 기본 모델에 의존하지 않고도, 실시간으로 정확하고 최신의 정보를 제공하는 것이다. 

 

 

 

 

Vector DB(벡터 데이터베이스)란?

텍스트, 이미지 등의 데이터를 벡터 형태로 변환해 저장하고, 그 벡터를 기반으로 데이터를 빠르고 효율적으로 검색하는 데이터베이스이다. 벡터 DB는 임베딩(embedding)이라는 방법으로 데이터를 벡터화하여, 유사한 의미를 가진 데이터들을 빠르게 검색 할 수 있게 해준다. 

 

임베딩 (Embedding)
텍스트나 이미지, 영상, 오디오 등 다양한 유형의 데이터를 컴퓨터가 이해하고 처리할 수 있도록 수치 형태로 변환하는 방법이다. 사람이 직접 정의하는 것이 아니라, 데이터를 AI모델에 입력하여 모델 스스로가 해당 데이터를 의미 있는 벡터로 변환한다. 임베딩을 통해 고차원 공간에서 저차원의 벡터로 변환되는데 이때, 차원은 축소되면서도 데이터의 중요한 정보와 패턴은 보존된다. 이를 통해 모델은 데이터를 효과적으로 분석하여 벡터간의 유사성이나 패턴을 파악할 수 있다. 

 

 

▼ 동작 과정 

  1. 임베딩 생성 
    문서나 텍스트를 벡터로 변환한다. 
  2. 벡터 저장 
    생성된 벡터를 데이터베이스에 저장한다.
  3. 벡터 검색
    사용자가 검색어를 입력하면, 해당 검색어를 벡터로 변환한 후, 데이터베이스에서 유사한 벡터를 찾아낸다.
  4. 결과 제공
    유사한 벡터를 가진 문서나 데이터를 검색 결과로 제공한다. 

 

▼ 장점 

의미 기반 검색
단순 키워드 매칭이 아니라 텍스트의 의미에 기반한 검색이 가능하여, 유사한 의미를 가진 텍스트도 검색할 수 있다. 
고성능 처리
대량의 벡터 데이터를 매우 빠르게 처리할 수 있어서, 대규모 텍스트 데이터에 대해 효율적으로 검색이 가능하다.

 

 

 

 

LangChain 이란?

LLM과 같은 언어 모델을 더욱 효율적으로 활용할 수 있게 도와주는 프렘임워크이다. LangChain의 목적은 다양한 LLM과 외부 리소스를 결합해 강력한 언어 기반 애플리케이션을 만들 수 있도록 돕는 것이다. LLM의 기능을 더욱 확장하고, 데이터 소스, API, 데이터베이스 등을 쉽게 통합할 수 있다. 

 

 

▼ 주요 기능 

  • LLM과 데이터 소스 결합 : RAG처럼 외부 데이터를 검색해와 LLM이 이를 처리하도록 할 수 있다. 
  • 작업 흐름 자동화 : 여러 개의 LLM 작업을 순차적으로 실행할 수 있는 워크플로우를 제공한다. 
  • 대화형 AI개발 : 여러 번의 대화 흐름을 제어할 수 있는 대화 관리 기능을 통해 챗봇이나 대화형 에이전트를 쉽게 구축할 수 있다. 

 

▼ 동작 원리

프롬프트 체인 (Prompt Chains)
LangChain 은 여러 단계의 프롬프트를 연속적으로 연결하여 복잡한 작업을 수행할 수 있다. 예를 들어, 먼저 문서를 요약하고, 그 요약 내용을 바탕으로 질문에 답하는 구조를 만들 수 있다.
메모리 기능 
LLM은 일반적으로 이전 대화를 기억하지 못하지만, LangChain은 메모리 기능을 통해 대화의 맥락을 유지할 수 있게 해준다.
외부 리소스 통합
LangChain은 API, 데이터베이스, 웹 검색 등 다양한 외부 리소스를 결합해 LLM의 한계를 보완할 수 있도록 한다.

 

 

▼ 장점

유연한 애플리케이션 개발
복잡한 언어 작업을 자동화하거나 여러 단계의 작업을 간단히 연결할 수 있다. 
확장성
LLM이 처리할 수 없는 작업을 외부 리소스를 통해 보완하여 더욱 강력한 AI 시스템을 구축할 수 있다. 
대화형 AI
장기적인 대화 흐름을 관리할 수 있어 챗봇이나 고급 대화 시스템을 만드는데 유리하다. 

'Coding > TIL & 배운것들' 카테고리의 다른 글

파이썬 코딩 컨벤션  (0) 2024.11.13
OpenAI Playground  (0) 2024.11.13
LLM (Large Language Model)  (0) 2024.11.13
24-11-12 베이직반 수업  (0) 2024.11.12
FastAI 사전 학습된 모델 실습  (1) 2024.11.12