RAG는 데이터 업데이트의 속도를 따라가지 못하는 LLM의 특성 상 최신정보를 사용자에게 제공하기위해 나온 기법이다. 우선 구조는 다음과 같다.

<aside> 💡 RAG의 순서

  1. 원하는 데이터를 가지는 데이터베이스를 만든다. → 이 데이터베이스가 어떤 데이터를 사용하게 만드는지가 쟁점이 될 것이다.
  2. 사용자의 질문과 유사한 정보를 탐색하기 위해 각 질문과 각 데이터간의 유사도를 계산해 유사한 정보를 가져온다.
  3. 가져온 추가 정보를 모델의 입력으로 주어주고, 사용자의 질문에 LLM이 답하도록 한다. </aside>

이러한 순서 중 2, 3번을 묶어 파이프라인으로 만들 수 있는 것이 LangChain이라 부르는 것이다.

아래는 위 순서를 바탕으로 작성한 RAG의 코드이다.

우선 그전에 langchain 설치하기

pip install langchain

데이터베이스 생성 및 임베딩하기

RAG에 필요한 모듈 임포트

데이터가공 하기(여기서는 csv로 이루어진 데이터가 있다고 가정하고 만듦)

데이터 임베딩 후 db로 저장하기

retriever 이용해 query와 유사한 데이터 가져오기