2024.04.19 - [Architecture/A.I] - ai? 맨땅에 헤딩 -1(langChain) : ai와 공생하기!
2024.04.24 - [Architecture/A.I] - ai? 맨땅에 헤딩 -2(langChain) : 튜토리얼 따라해보기!
langChain 맛보기를 통해 동작하는것을 살펴보았습니다.
이번에는 조금 detail하게 각각의 주요 컴포넌트에 대해서 살펴보겠습니다.
LangChain을 구성하는 주요 컴포넌트
- Model
- Prompt Template
- Output Parser
- Chain
- Agent
- Retrival
Model
Model 컴포넌트는 LLM 모델을 추상화하여 제공 합니다.
2024.04.24 - [Architecture/A.I] - ai? 맨땅에 헤딩 -2(langChain)
에서는 Open Ai 모델을 사용하였습니다.
prompt → model → output
Prompt Template
LLM모델에 프롬프트를 입력하여 결과를 받는 구조인데 Prompt Template은 Prompt 작성에 있어서 편의성을 도모합니다.
아래처럼 input값을 받을 수 도 있으며, 변경되는 변수 부분만 처리하여 프롬프트를 생성 할 수도 있습니다.
Output Parser
LLM모델에서 나온 출력 결과를 요구사항에 따라서 Json, Xml or Pandas DataFrame과 같은 다양한 포맷으로 포맷팅을 해야할 때 사용 합니다.
적용 전
적용 후 포맷팅을 적용하면 아래와 같이 깔끔하게 출력 됩니다.
Chain
LLM으로 application을 개발할 때 하나의 프롬프트로 해결이 어려운 경우가 있습니다.
모델을 여러번 호출하여 엮는 내용 입니다.
Agent & Tools
LLM은 모델 안에 지식이 이미 학습되어 있기 때문에 모델의 한도 내에서만 답변할 수 있습니다.
그러나 실제 어플리케이션은 기업내 시스템의 데이터베이스에서 데이터를 가지고와서 이를 기반으로 분석하여
답변을 내야하는 경우도 있고 구글 검색을 하여 인터넷의 데이터를 가지고와서 검색된 문서를 기반으로 답변을 만들수도 있습니다.
이렇게 LLM이 외부 서비스와 연동 할 수 있게 해주는 컴포넌트를 Tools 라고 합니다.
LLM 모델은 동시에 여러개의 Tool을 사용할수 있으며 이때 어떤 Tool을 사용해야할지 정해야 합니다.
이를 결정해주는것이 Agent 입니다.
Agent는 질문에 대한 적절한 Tool을 찾기 위해 여러가지 방법을 사용하는데, 일반적으로 Agent는 Tool을 등록할 때 포함되는 Tool에 대한 설명을
이용하여 LLM이 어떤 Tool을 사용해야하는지 판단 합니다.
아래처럼 LangSmith에 대한 정보를 검색할 때는 해당 retriver_tool을 사용하게 됩니다.
Retrieval
Retrieval은 RAG(Retrieval Argument Generation) 아키텍처에서 사용되는 라이브러리 입니다.
LLM은 학습된 지식을 기반으로 답변을 할 수 있는데, 타 회사의 db에 데이터가 있거나 특정 서비스에 대한 메뉴얼과 같은 데이터가 있을 때
이 데이터들을 Document Database에 저장해놓고 LLM에 대한 질문에 대해서 답변을 하기 위해 필요한 정보가 있을 경우 Document Database를 검색하여
질문과 관련된 문장을 검색 한 후 이 문장을 기반으로 LLM이 답변을 하게 하는 구조 입니다.
이를 위해 문서를 저장해서 검색 인덱스를 만들기 위해 큰 문서를 여러개의 작은 조각으로 나눠서 인덱스를 만드는 등 여러가지 추가기능이 필요한데 Retrieval 컴포넌트는 이런 기능을 제공합니다.
아래처럼 데이터를 로드 한 뒤 VectorStore에 인덱스를 생성 합니다.
이때 embedding model과 vectorstore가 필요 합니다.
아래의 소스처럼 load한 docs를 쪼갠 뒤에 FAISS( Facebook AI Similarity Search) vector store에 저장 합니다.
FAISS (Facebook AI Similarity Search)는 효율적인 알고리즘 및 밀집 벡터의 유사성 검색 및 클러스터링을 위한 라이브러리입니다. 페이스북 AI 연구팀(Facebook AI Research Tema)에 의해 개발된 FAISS는 대규모 벡터 검색 작업에 특히 유용하며, 이미지 검색, 추천 시스템, 자연어 처리와 같은 분야에 응용됩니다.
저장된 데이터를 vectorstore에서 검색하여 질문과 관련된 문장을 검색 한 후 이 문장을 기반으로 LLM이 답변을 하게 합니다.
참고 : 조대협님 블로그:)
'A.I > RAG' 카테고리의 다른 글
ai? 맨땅에 헤딩 -5(langChain) : langsmith 셋팅 및 tracing해보기!! (0) | 2024.05.13 |
---|---|
ai? 맨땅에 헤딩 -4(langChain): vector DB 간단 사용! (0) | 2024.04.29 |
ai? 맨땅에 헤딩 -2(langChain) : 튜토리얼 따라해보기! (0) | 2024.04.23 |
ai? 맨땅에 헤딩 -1(langChain) : ai와 공생하기! (0) | 2024.04.19 |
PlaybackController Interface (0) | 2017.05.26 |