ChatGPT for Document Retrieval using LangChain RAG

박종영

#ChatGPT #LLM #LANGCHAIN #RAG

매뉴얼등의 문서를 챗봇 Application시 문서 기반 검색과 LLM으로 보강한 정보를 검색을 위한 RAG 활용 방법.

 

RAG(Augumented Generation)

  • Retrieval-Augmented Generation은 검색된 응답과 생성 기술을 결합하여 생성된 응답의 품질과 관련성을 개선하며, Langchain의 맥락에서 RAG는 검색 및 ChatGPT와 같은 언어 모델을 통합하여 질문 답변 시스템을 만드는 것을 의미합니다.
  • 문서, 웹 사이트 또는 SQL 데이터베이스와 관계없이 QnA 형식으로 데이터와 채팅할 수 있습니다. 간단해 보이죠? 어떻게 작동하는지 봅시다
  • image.png

1단계: 로드

  • 첫째, 문서 로더를 사용하여 다양한 소스에서 문서 넷 또는 파일을 로드합니다. 이러한 로더는 프라이빗 S3 버킷, 퍼블릭 웹 사이트 스크랩 또는 제공된 PDF 파일과 같은 다양한 위치에서 문서를 가져올 수 있습니다. LangChain은 HTML, PDF, 코드 및 기타 여러 유형의 문서에 대해 100개 이상의 문서 로더를 제공합니다.
  •  

2단계: 분할

  • 문서가 로드되면 분할하거나 더 작은 부분으로 청크해야 할 수 있습니다. 이 기능은 큰 문서에 특히 유용합니다. LangChain은 또한 코드 또는 마크다운과 같은 특정 문서 유형에 최적화된 문서 분할을 위한 다양한 알고리즘을 제공합니다. 스플리터의 일부는 다음과 같습니다.
  • RecursiveCharacterTextSplitter: 문자로 분할합니다. 조정 가능한 조각 크기
  • CharacterTextSplitter: 위와 같지만 "\n\n" 및 " "와 같은 사용자 지정 구분 기호가 있습니다.
  • RecursiveTextSplitter: 단어/토큰으로 분할하여 콘텐츠 분석에 이상적입니다.
  • TokenTextSplitter: 토큰 기반 컨텍스트 인식 세그멘테이션에 OpenAI를 사용합니다. 고급 NLP에 이상적입니다.
  •  

3단계: 저장

분할 후 문서의 관련 부분은 벡터 저장소에 저장됩니다. 벡터 저장소는 텍스트의 의미론적 의미를 포착하는 텍스트 임베딩을 효율적으로 저장하고 검색하는 데이터베이스입니다. LangChain은 50개 이상의 벡터 저장소를 지원하므로 사용자는 자신의 필요에 가장 적합한 저장소를 선택할 수 있습니다.

이러한 벡터 저장소는 기본 기술, 확장성, 성능 및 기능 측면에서 다릅니다. 일부는 중소 규모 데이터 세트에 최적화되어 있고 다른 일부는 대규모 애플리케이션을 위해 설계되었습니다. 벡터 저장소의 선택은 데이터 세트의 크기, 원하는 검색 성능 및 응용 프로그램의 특정 요구 사항과 같은 요소에 따라 달라집니다. 몇 가지 예를 들면 다음과 같습니다.

 

  • Chroma: 실시간 처리에 사용되는 중소 규모 데이터 세트용 로컬 벡터 데이터베이스
  • FAISS: 효율적인 대규모 유사성 검색 및 다양한 인덱싱 기술 지원
  • LanceDB: 벡터 검색을 위한 오픈 소스이며 인덱싱 및 효율적인 검색 기능을 제공합니다.
  • Elasticsearch: 확장 가능한 검색 엔진으로 벡터 및 어휘 검색을 지원합니다.
  • Milvus: 대형 임베딩 벡터를 관리하고 유사성 검색을 지원합니다.

 

4단계: 지식 검색

이 단계에서는 관련 문서 검색이 수행됩니다. 다시 한번 LangChain은 원하는 정보를 가져오기 위해 다양한 검색 알고리즘을 제공합니다. 검색 결과의 범위를 좁히기 위해 메타데이터 필터를 사용하여 검색 프로세스를 더욱 구체화할 수 있습니다. 사용 가능한 알고리즘 중 일부는 다음과 같습니다.

  • 단순 검색: 사용자의 쿼리를 문서 포함과 일치시켜 관련 결과를 제공합니다.
  • 상위 문서: 문서의 특정 섹션을 검색하여 더 넓은 컨텍스트를 유지합니다.
  • 자체 쿼리: 정확한 결과를 위해 사용자 쿼리에서 의미 체계와 메타데이터를 분리합니다.
  • 앙상블: 여러 리트리버의 결과를 결합하여 포괄적이고 향상된 결과를 제공합니다.

 

5단계: 응답 생성

  • 마지막 단계는 ChatGPT와 같은 언어 모델을 사용하여 답변을 생성하는 것입니다.
  • 4단계에서 관련 문서를 검색하면 언어 모델의 컨텍스트 역할을 하여 간결하고 유익한 답변을 생성합니다.
  • GPT-3.5-turbo와 같은 LLM은 검색된 문서를 답변으로 추출하는 데 사용됩니다.
  • 모델은 검색된 문서와 사용자의 질문을 입력으로 사용하고 컨텍스트 및 질문에 대한 이해를 기반으로 응답을 생성합니다.
  • 생성된 답변은 사용자의 쿼리에 포괄적이고 유익한 응답을 제공하는 것을 목표로 합니다.
  • LangChain에 구현된 RAG 애플리케이션

LLM의 기능을 활용하여 5단계를 통해 시스템은 검색된 지식을 기반으로 정확하고 관련성 있는 답변을 제공할 수 있습니다.

 

TEST: 

1단계: 로드 - 문스토리 소설 한권을 가져옵니다  

2단계: 분할

3단계: 저장

4단계: 지식 검색

5단계: 응답 생성

** Cyber Moon소설에서는 프랑스는 나오지 않습니다.**

 

소설에서는 “석유와 핵연료 등 화석에너지를 대체할 수 있는 대체에너지를 개발하여 환경을 개선하려는 과학적 노력은 이 비극적인 대세를 만회하기엔 역부족이었다”라고 되어 있으나,응답에서는 “석유와 핵연료 등 화석에너지를 대체할 수 있는 대체에너지로는 태양, 풍력, 수력, 지열 등의 재생에너지가 있습니다..” → ChatGPT에서 추가한 정보

 

소설에서 “지구환경연합”관련 내용은 다음과 같음

- 지구환경연합은 곧바로 지구녹지화 프로젝트를 수립하고 연구 개발에 착수했다

- 각 국의 지도자들은 그제야 인류의 생존은 곧 지구 환경의 회복에 달려 있음에 뜻을 같이하고 공동 노력을 기울이기 시작했던 것이다 그리하여 조직된 범지구적 연구단체가 바로 지구환경연합이었다

- 인류에게 구원의 손길을 던질 지구환경연합이라는 범지구적 연구단체를 수립할 수 있었던 건 그의 주도적 역할 덕분이었다 
 

-GW103은 지구상의 모든 동식물에 침투하여 활성유전자를 전달하는 역할을 한다 일단 활성유전자를 받아들인 동식물은 극도로 오염된 환경에 강력한 저항력을 지니게 된다 특히 식물의 경우 그 번식 속도가 수 백 배로 증가되어 십 년이 지나기도 전에 지구상의 대기와 해양을 오십 년 전의 수준으로 정화시킬 수 있으리라는 것이 지구환경연합의 최종 결론이었다
- 활성유전자 GW103은 영국의 유전 공학의 결정체였다 지구환경연합은 영국이 이미 개발한 GW103의 안전성과 효과를 확인하는 작업을 수행했을 뿐이었다


소설에서 세린관련 내용은 

- 세린은 자신에게 닥쳐온 운명을 감지하고 있었다 이 가녀린 소녀는 놀랍게도 자신의 미래뿐만이 아니라 인류 전체의 미래까지 훤히 꿰뚫고 있었던 것이다 물론 이런 불가사의한 능력은 그녀가 원치 않는 것이지만 사람은 때때로 원치 않는 일을 받아들여야 하는 것이다 
- 세린은 구슬픈 눈으로 부친을 바라보았다
-세린은 더욱 서글퍼진 어조로 조용히 말했다

-세린은 벌써 마당에 나와 있었다 여전히 앞치마를 두른 차림의 그녀는 무엇에 홀리기라도 한 사람처럼 백발의 노인을 바라보고 있었다
-세린은 부친을 올려다보았다 그녀의 서글서글한 눈가에 한 방울 이슬이 맺혔다
-세린은 금방이라도 눈물을 떨굴 듯한 눈으로 부친을 바라보았다
-세린은 울음을 머금은 목소리로 속삭였다. 미안해요 아버지 하지만 전 가야 해요 모두를 위한 일이에요

-세린은 가만한 한숨을 내쉬었다
 

기업 홍보를 위한 확실한 방법
협회 홈페이지에 회사정보를 보강해 보세요.