Search

LangChain 개요

대분류
인공지능/데이터
프레임워크
소분류
LangChain/RAG
유형
LangChain
부유형
Introduction LangChain
주요 레퍼런스
https://python.langchain.com/docs/introduction/
최종 편집 일시
2024/11/05 01:43
생성 일시
2024/10/25 05:08
13 more properties

LangChain

대규모 언어 모델(LLM)을 기반으로 애플리케이션을 구축하기 위한 오픈 소스 프레임워크
LLM은 대량의 데이터로 사전 훈련된 대규모 딥 러닝 모델로서, 질문에 답하거나 텍스트 기반 프롬프트에서 이미지를 생성하는 등 사용자 쿼리에 대한 응답을 생성할 수 있다.
LangChain은 모델이 생성하는 정보의 맞춤화, 정확성 및 관련성을 개선하기 위한 도구와 추상화 기능을 제공한다.
예를 들어 개발자는 LangChain 구성 요소를 사용하여 새 프롬프트 체인을 구축하거나 기존 템플릿을 맞춤화할 수 있다.
또한 LangChain에는 LLM이 재훈련 없이 새 데이터 세트에 액세스할 수 있도록 하는 구성 요소도 포함되어 있다.

LangChain 응용

인공지능(AI)이 산업과 일상생활을 빠르게 변화시키고 있는 세상에서 기술 발전의 선두에 선다는 것은 그 어느 때보다 중요하다.
수많은 혁신 중에서 Langchain은 우리가 AI와 상호 작용하고 활용하는 방식에 혁명을 일으킬 준비가 되어 있는 획기적인 프레임워크로 부상하고 있다.
기술과 지능이 독창적으로 결합된 Langchain은 AI 환경의 등대 역할을 한다.
이는 언어 모델을 활용하는 방법에 대한 새로운 패러다임이다.
현재 표준을 훨씬 뛰어넘는 기능을 확장한다.
언어모델 학습시 사용된 데이터 외에 새로운 사용자 데이터를 인식할 수 있게 함
여러가지 LLM 언어모델을 선택적으로 사용할 수 있게 함
능동적으로 다른 기능과 연동하여 추가적인 결과를 낼 수 있게 함
여러 기능 모듈을 체인으로 연결하여 출력을 다른 툴의 입력으로 사용하는 방식으로 기능 확장이 자유로움
라이브러리 wrap이 잘되어 있어서 구현이 상대적으로 편함(파이썬, 자바스크립트)

1. Backend (백엔드)

LangChain
설명: LangChain은 대형 언어 모델과 상호작용할 수 있는 다양한 도구와 모듈을 제공하는 프레임워크이다.
구성 요소:
Prompt templates: 입력 프롬프트를 구조화하거나 특정 작업에 맞게 템플릿화하여 모델에 전달.
LLM framework: 대형 언어 모델(LLM)과의 상호작용을 관리하는 프레임워크.
Modules not used in this tutorial: 그림에서 언급된 다른 모듈(예: 메모리, 인덱스, 체인, 에이전트 등)은 이 튜토리얼에서는 사용되지 않지만, 다양한 기능을 추가적으로 지원할 수 있음.
OpenAI API와의 통합:
OpenAI: 이 프레임워크는 OpenAI의 대형 언어 모델(예: GPT 시리즈)과 통합된다. OpenAI API를 통해 입력을 받아 출력을 생성한다.
Input/Output: LangChain은 사용자 입력을 받아 OpenAI 모델로 전달하고, 모델에서 생성된 응답을 다시 받아서 처리한다.

2. Frontend (프론트엔드)

Streamlit
설명: Streamlit은 간단한 웹 애플리케이션을 만들기 위한 프레임워크로, 이 예시에서는 LangChain과 통합하여 사용자 인터페이스(UI)를 제공한다.
구성 요소:
Web framework: Streamlit은 웹 프레임워크로서 LangChain에서 생성된 응답을 웹 애플리케이션 형태로 사용자에게 보여준다.
Quickstart App: 애플리케이션 화면에서 사용자가 입력할 수 있는 텍스트 상자와 모델의 응답을 확인할 수 있는 인터페이스가 제공된다.

3. User Interaction (사용자와의 상호작용)

사용자 입력 (Prompt Input): 사용자는 Streamlit 애플리케이션을 통해 프롬프트(질문 또는 요청)를 입력한다.
LangChain과의 상호작용: 프롬프트는 LangChain의 LLM 프레임워크로 전달되어 OpenAI 모델에 입력된다.
생성된 응답 (Generated response output): 모델이 생성한 응답은 다시 LangChain을 통해 Streamlit에 전달되고, 사용자는 웹 인터페이스에서 이 결과를 확인할 수 있다.
PDF 문서에서 정보를 검색하고, 이를 대형 언어 모델(LLM)을 통해 처리하여 질문에 답변하는 과정
전체적으로 PDF 파일에서 텍스트를 추출하고, 해당 텍스트를 임베딩(벡터)로 변환한 후, 질문과 관련된 내용을 검색하는 시맨틱 검색(Semantic Search)을 통해 대답을 제공하는 과정

1. PDF 문서 처리

PDFs (입력): 여러 PDF 파일들이 입력으로 제공된다.
Chunk of text (문서 텍스트 분할): PDF 문서가 길기 때문에, 각 문서는 여러 부분으로 나뉘어 텍스트 청크(chunk) 단위로 처리된다. 이 과정은 대규모 문서를 효율적으로 처리하기 위한 전처리 단계이다.

2. 임베딩 생성 (Embedding Generation)

Embedding: 각 텍스트 청크는 언어 모델에 의해 임베딩(Embedding)으로 변환된다. 임베딩은 고차원 벡터 표현으로, 문서의 의미를 벡터 공간에서 나타낸다.
임베딩 벡터는 이후의 시맨틱 검색에서 중요한 역할을 한다. 각 청크가 고유한 벡터로 표현되어 나중에 의미적 유사성을 기준으로 검색될 수 있다.

3. 벡터 저장소 (Vector Store)

Vector Store (벡터 저장소): 생성된 임베딩 벡터는 벡터 저장소에 저장된다. 이는 데이터베이스처럼 작동하며, 각 텍스트 청크에 해당하는 임베딩 벡터가 저장되고 나중에 검색된다.
예시로는 Amazon AuroraPostgreSQL을 사용하여 벡터 저장소를 구성할 수 있으며, 여기에 pgvector 확장을 통해 임베딩 벡터를 저장 및 검색할 수 있다.

4. 질문 임베딩 생성 (Question Embedding)

Question Embedding: 사용자가 질문을 입력하면, 이 질문도 임베딩 벡터로 변환된다.
예시: 사용자가 "What is a neural network?"라는 질문을 입력하면, 이 질문도 벡터로 변환되어 문서 임베딩과 비교할 수 있게 된다.

5. 시맨틱 검색 (Semantic Search)

Semantic Search: 질문 임베딩과 문서 임베딩 간의 의미적 유사성을 기반으로 검색이 이루어진다.
벡터 저장소에서 질문과 가장 유사한 임베딩 벡터(즉, 텍스트 청크)를 찾아내는 과정이다. 이는 전통적인 키워드 기반 검색과 달리, 의미적 유사성을 고려한 검색 방식이다.
검색된 결과는 관련성에 따라 Ranked Results (순위화된 결과)로 제공된다.

6. 대형 언어 모델(LLM)과 답변 생성

LLM (대형 언어 모델): 시맨틱 검색에서 나온 관련 텍스트 청크는 LLM으로 전달되어, 질문에 대한 최종적인 답변이 생성된다.
예를 들어, 검색된 텍스트 청크를 바탕으로 "What is a neural network?"라는 질문에 대한 답변을 생성한다.
Answer (답변): LLM이 생성한 답변이 사용자에게 제공된다.