프로그래밍/AI,ML

Langchain으로 간단한 RAG 구현하기

Lou Park 2025. 1. 8. 14:16

 

Langchain으로 소설 "난쟁이가 쏘아올린 작은 공" PDF 문서에 대한 답변을 제공해 줄 수 있는 간단한 RAG 애플리케이션을 구현했다. (코드에 대한 설명은 Gist 주석으로 대신한다.) 아직 잘 모르는 상태로 무작정 다이브했으니, 간단하게 개념을 정리하겠다.

 

LLM이 답변을 지어내는 것을 방지하고, 커스텀한 컨텍스트 제공을 위해 LLM을 이용한 챗봇에는 검색증강생성(RAG)라는 기술을 사용한다. RAG 애플리케이션은 일반적으로 두 구성요소로 이루어진다.

 

1. 인덱싱(Indexing) - 소스에서 데이터를 수집하고 인덱싱하는 과정

2. 검색과 생성(Retrieval and generation) - 유저에게 쿼리를 받아서 인덱스에서 관련 데이터를 찾아 모델에게 전달하는 실질적인 RAG 체인이다.

 

인덱싱을 그림으로 설명하면 이렇다.

LOAD - 여러가지 Document Loader들을 이용해 다양한 포맷의 Document를 불러온다.

SPLIT - 큰 문서를 인덱싱하기 편하고 모델에 넘기기 좋은 작은 청크로 나누는 단계다. 

STORE - 쪼개진 청크를 인덱싱하고 저장하는 단계다. 주로 VectorStore와 Embeddings 모델을 이용하여 이뤄진다.

 

검색과 생성은 다음과 같다.

RETRIEVE - 유저 입력이 주어지면, Retriever를 통해 저장소에서 관련된 청크조각을 찾아온다.

GENERATE - LLM이 가져온 데이터를 가지고 답변을 생성하는 단계다.

 

 

참고자료

https://js.langchain.com/docs/tutorials/rag/

'프로그래밍 > AI,ML' 카테고리의 다른 글

프롬프팅 팁  (0) 2025.01.09
프롬프팅의 기법  (1) 2025.01.09