생성형 AI/langchain

Langchain - preface, pdf.ai (한)

monsangter 2024. 7. 8. 01:07

pdf.ai는 수십장에 달하는 pdf를 입력하고, 유저의 질문을 입력하면, 유저의 질문에 대한 대답을 해준다.

 

 

이 과정은 어떻게 이루어 질까?

 

먼저 pdf의 텍스트를 전부 긁고, 그 아래에 유저의 질문을 덧붙이는 것을 생각해보자.

아마 제한된 텍스트만을 gpt에 입력 가능하기에, 이는 좋은 아이디어가 아니다.

그리고 많은 텍스트 입력은 결국, 비용 증가로 이어지게 된다.

 

다른 방법으론,

유저가 pdf를 입력한다면, 모든 텍스트를 추출하고, 이 텍스트를 단위로 나누어서,

해당 단위들에 대한 요약을 각각 저장한후, 여기에 유저의 질문을 덧붙이는 방법이 있다.

이러한 텍스트 단위는 , 엠베딩 생성 알고리즘에 따라, 1536개의 벡터(실수 집합)으로 변환되고, 특수한 데이터 베이스에 저장이 된다.

 

이렇게 저장된 벡터를, 똑같이 엠베딩된 질문을 가지고, 유사도를 판단하여, 유사도가 비슷한 단위에 대하여, 첨부하고 질문하는 식으로 

모든 과정이 이루어진다.

 

랭체인으로 이러한 과정을 구현할 수 있을까 ?

랭체인은 pdf나 json, 심지어는 s3 서버까지, 필요한 텍스트를 parse해 단어를 추출 할 수 있는 라이브러리를 제공하며.

 

이를 벡터 저장소에 저장하는 과정까지도 라이브러리를 제공한다.

 

현재 이런 vector store가 매우 큰 화두이기 때문에, postgres, redis등 다양한 회사와 스타트업에서 서비스를 제공하고 있는데,

랭체인은 이런 플랫폼들에 대한 interchangable한 라이브러리를 제공한다.(인자등 라이브러리의 시그니처가 비슷..)

 

즉 langchain의 goal은 다음과 같다.

1. 데이터를 로딩, 파싱, 저장, querying하고 이를 gpt같은 모델에 통과시킨다.

2. 매우 많은 회사들에서 제공하는, 매우 많은 종류의 서비스들을 하나로 통합한다.

3. providers를 바꾸는 것이 매우 간단하다. 다른 모델, 다른 서비스들간의 전환이 간단하다.