RAG는 데이터 업데이트의 속도를 따라가지 못하는 LLM의 특성 상 최신정보를 사용자에게 제공하기위해 나온 기법이다. 우선 구조는 다음과 같다.
<aside>
💡 RAG의 순서
- 원하는 데이터를 가지는 데이터베이스를 만든다.
→ 이 데이터베이스가 어떤 데이터를 사용하게 만드는지가 쟁점이 될 것이다.
- 사용자의 질문과 유사한 정보를 탐색하기 위해 각 질문과 각 데이터간의 유사도를 계산해 유사한 정보를 가져온다.
- 가져온 추가 정보를 모델의 입력으로 주어주고, 사용자의 질문에 LLM이 답하도록 한다.
</aside>
이러한 순서 중 2, 3번을 묶어 파이프라인으로 만들 수 있는 것이 LangChain이라 부르는 것이다.
아래는 위 순서를 바탕으로 작성한 RAG의 코드이다.
우선 그전에 langchain 설치하기
pip install langchain
데이터베이스 생성 및 임베딩하기
RAG에 필요한 모듈 임포트
데이터가공 하기(여기서는 csv로 이루어진 데이터가 있다고 가정하고 만듦)
데이터 임베딩 후 db로 저장하기
retriever 이용해 query와 유사한 데이터 가져오기