Retrieval-Augmented Generation (RAG) 가이드
Retrieval-Augmented Generation (RAG) 가이드 개요 대용량 언어 모델(LLM)은 많은 언어 생성 작업에서 좋은 성능을 보여주고 있습니다. 그러나 이러한 모델은 특정 주제에 대한 정보를 생성하는 데 한계가 있습니다. 이러한 한계를 극복하기 위해 RAG는 검색을 통해 권위있는 정보를 가져와 생성하는 방식을 제안합니다. 이를 통해 모델은 특정 주제에 대한 정보를 검색하여 가져와 이를 기반으로 생성을 수행할 수 있습니다. RAG를 사용한 텍스트 생성 작업은 다음과 같은 다이어그램으로 설명할 수 있습니다. 출처: 예를 들어, "작년에 크리스가 보낸 이메일의 영화가 무엇인가요?"라는 질문에 대한 답변을 생성하는 경우, RAG는 먼저 이메일에 대한 정보를 검색하여 가져온 후, LLM은 사전 지식 없이는 답변을 할 수 없습니다. RAG를 사용하면 이메일에 대한 정보를 가져와 이를 기반으로 답변을 생성할 수 있습니다. 출처: Langchain 그리고 RAG Langchain은 다양한 RAG 모델과 파이프라인을 구축하는데 편리한 API를 제공하는 라이브러리입니다. Langchain을 사용하면 다양한 RAG 모델을 쉽게 사용할 수 있습니다. 단계별로 정리 Indexing: 데이터 로딩 (load) 필요한 데이터를 로딩하는 단계로, 크게 그리고 로더들을 지원합니다. - - Indexing: 데이터 정제 및 분리 (transform / split) 로딩한 문서들을 형식에 따라 정제하고 LLM 모델 사용에 적합하도록 분리하는 모듈입니다. Langchain은 다음과 같은 Text Splitter들을 지원합니다: - Indexing: 데이터 저장 (store) 분리된 데이터를 저장하는 모듈입니다. 저장시 벡터스토어에 텍스트 임베딩 형식으로 저장합니다. 참조: 다음과 같은 임배딩과 벡터 스토어를 지원합니다: - - Retrieval: 데이터 불러오기 (RAG) 저장된 데이터에서 LLM이 사용할 수 있는 가장 적합한 도큐먼트를 불러옵니다. Langchain에서는 다음과 같은 Retriever를 지원합니다. () Generation: LLM을 사용한 최종 결과물 생성 불러온 데이터를 기반으로 LLM에게 (배경 지식)을 제공하여 더 양질의 텍스트를 생성합니다. Langchain 구현 예제 다음은 Langchain을 통해 RAG를 사용하여 LLM 모델을 호출하는 파이프라인 코드 예제입니다. 프롬프트 템플릿: 5번 단계에서 호출되는 프롬프트는 다음과 같습니다. 에서 예제 코드의 전체적인 실행계획을 볼 수 있습니다. 최종 답변: 참조 문서 - - - - - -
9 months ago