개발/인공지능

Embedding, LangChain

kwony 2023. 11. 13. 20:36

ChatGPT 에게 학습 데이터 전달하기

 

일반적으로 우리가 ChatGPT 에게 질문을 하는 것은 이미 정보를 학습한 LLM 모델에게 질문을 하는 것이다. 그런데 어떤 LLM 이든 모든 정보를 미리 학습하고 있을수는 없다 없다. 이럴 때는 LLM에서 응용할 수 있도록 정보를 미리 알려줘야 예상했던 답변을 얻을 수 있다.

 

예를 들어 올해 개봉한 영화 오펜하이머에 대해서 알려달라고 하면 Chat GPT 3.5 는 2004년도에 개봉된 “Eternal Sunshine of the Spotless Mind” 라는 영화에 대해서 알려준다. 원래 필요한 내용과 완전히 다른 내용을 말하고 있다.

 

 

하지만 프롬프트를 적절하게 사용해서 오펜하이머에 대한 내용을 전달하면 만족할만한 답변을 받을 수 있다.

 

 

Embedding

 

오펜하이머의 경우 내용이 짧기 때문에 Chat GPT 에게 간단히 학습시킬 수 있었다. 그런데 학습시키고 싶은 내용이 4MB짜리 PDF 파일이라면? 최대 8천자까지만 받을 수 있기 때문에 질문은 하지도 못하고 에러가 뜨게 된다.

 

이럴때 사용할 수 있는 기술이 Embedding 이다. 대용량의 텍스트 파일을 임베딩을 잉용해 컴퓨터가 읽기 쉬운 숫자의 형태로 변환 시켜 놓은 후 Vector Database에 저장한다. 그리고 사용자의 질문도 동일하게 Embedding 을 시킨 후 Vector Database 를 이용해 유사성을 검색하면 질문과 가장 밀접한 정보를 가져올 수 있다.

 

이런 방식을 이용하면 PDF를 통째로 전달하지 않고도 질문에 답이 될만한 정보만 추출해서 Chat GPT 에게 전달하기 때문에 만족할만한 답을 얻어낼 수 있다.

 

  1. 학습 데이터를 임베딩 알고리즘을 이용해서 벡터 데이터베이스에 저장한다
  2. 유저에게 질문을 받는다
  3. 질문을 동일한 임베딩 알고리즘을 이용해서 변환한다
  4. Retrieval QA 라이브러리를 이용해서 가장 관련된 정보를 찾는다
  5. Chat GPT 에게 관련된 정보와 Question 을 같이 전달한다
  6. Chat GPT 에게 답변을 받아서 유저에게 전달한다

 

LangChain

 

LangChain은 라이브러리다. 앞에서 질문과 밀접한 정보를 얻어 올 수 있도록 쉬운 툴을 제공한다. 쉽게 말해 데이터의 전처리를 담당해주는 역할을 한다고 보면 될 것 같다. 여러가지 데이터 전처리 과정을 거쳐서 질문과 유효한 정보를 가져오고 Chat GPT 에게 질문할 수 있을만한 데이터 셋을 만들어준다.

 

아래 그림에서 빨간선 내부에 해당하는 영역이 LangChain 이 담당한다고 보면 된다.