RAG (개요)
* 해당 게시물은 wikidocs 를 참고하여 작성하였습니다.
* 문제가 있을시 알려주시면 감사합니다.
RAG 개요
RAG 파이프라인은 기존의 언어 모델에 검색 기능을 추가하여,
주어진 질문이나 문제에 대해 더 정확하고 풍부한 정보를 기반으로 답변을 생성할 수 있게 해줌.
파이프라인은 크게 아래 다섯 단계로 구성
* 데이터 로드
* 텍스트 분할
* 인덱싱
* 검색
* 생성
———
1. 데이터 로드
RAG에 사용할 데이터를 불러오는 단계 입니다.
외부 데이터 소스에서 정보를 수집하고,
필요한 형식으로 변환하여 시스템에 로드합니다.
예를 들면 공개 데이터셋, 웹 크롤링을 통해 얻은 데이터, 또는 사전에 정리된 자료일 수 있습니다.
가져온 데이터는 검색에 사용될 지식이나 정보를 담고 있어야 합니다.
2. 텍스트 분할 (text split)
불러온 데이터를 작은 크기의 단위 (chunk)로 분할하는 과정입니다.
자연어 처리 기술읗 활용하여 큰 문서를 처리가 쉽도록,
문단, 문장 또는 구 단위로 나누는 작업입니다.
검색 효율성을 높이기 위한 중요한 과정입니다.
3. 인덱싱 (indexing)
분할된 텍스트를 검색 가능한 형태로 만드는 단계입니다.
인덱싱은 검색 시간을 단축시키고, 검색의 정확도를 높이는 데 중요한 역할을 합니다.
Langchain 라이브러리를 사용하여 텍스트를 임베딩으로 변환하고, 이를 저장한 후,
저장된 임베딩을 기반으로 유사성 검색을 수행하는 과정을 보여줍니다.
4. 검색 (Retrieval)
사용자의 질문이나 주어진 컨텍스트에 가장 관련된 정보를 찾아내는 과정입니다.
사용자의 입력을 바탕으로 쿼리를 생성하고, 인덱싱된 데이터에서 가장 관련성 높은 정보를 검색합니다.
Langchain 메소드를 사용합니다.
5. 생성 (Generation)
검색된 정보를 바탕으로 사용자의 질문에 답변을 생성하는 최종 단계입니다.
LLM 모델에 검색 결과와 함께 사용자의 입력을 전달합니다.
모델은 사전 학습된 지식과 검색 결과를 결합하여 주어진 질문에 가장 적절한 답변을 생성합니다.