jsb17/RAinboG-Bot

LLM과 RAG 기법을 결합한 업로드 문서 기반 질의응답 챗봇 서비스

0

stars

5

commits

Python

primary language

Apr 4, 2024

updated

README

🌈 RAinboG Bot

오픈소스 LLM과 RAG 기법을 결합한 챗봇 프레임워크


✨ 프로젝트 개요

사용자가 업로드한 문서를 기반으로 사용자 질문 의도에 맞는 적절한 답변을 찾아 챗봇 형태로 제공하는 LLM x RAG 프레임워크이다. 이는 질문에 대한 답변 뿐만 아니라, LLM이 답변을 생성하는데 참고한 문서 청크, 해당 청크의 메타 정보들(ex.몇번째 페이지, 몇번째 문장 등)이 함께 제공된다.

RAinboG Bot은 아래와 같은 특장점을 보유하고 있다.

  • 사용자가 업로드한 문서를 기반으로 근거 있는 답변을 생성하기 때문에 환각 발생 가능성이 적다.

  • 시간이 지남에 최신화되는 데이터로 LLM의 재학습을 수행할 필요가 없어 시간, 비용적 측면에서 유리하다.

  • 외부 데이터베이스/문서 등에 질의 시 적합하고 확장성이 좋다.

  • LLM의 의사결정 과정이 투명하며, 어떤 외부 문서 또는 데이터 포인트가 관련성이 있는지 검사할 수 있다.


🚀 시작하는 법

  1. Clone or fork Client:

    git clone https://github.com/jsb17/LLM_RAG.git
    
  2. Install all dependencies:

    cd LLM_RAG
    pip install -r requirements.txt
    
  3. Run your App:

    python -m streamlit run llm_rag_streamlit.py
    

    OR

    streamlit run llm_rag_streamlit.py
    
  4. Initial Screen:

    초기화면

    4-1. 챗봇이 참고하고 답변할 수 있는 문서를 업로드합니다.

    4-2. 챗봇의 기본 모델이 될 LLM을 선택합니다.

    4-3. [Process] 버튼을 클릭하면 선택한 LLM 로드 및 RAG 검색 프로세스가 수행됩니다.


🖇️ RAG Retrieval Process

검색과정

  1. 사용자가 업로드한 문서의 내용을 로드한다.
  2. 로드된 문서의 내용을 여러 개의 Chunk(글 덩어리)로 분할한다.
  3. 임베딩 모델을 통해 비정형 데이터인 Chunk를 정형 데이터인 Vector로 변환한다. 이때, 변환된 Vector들은 Vector Store에 저장된다.
  4. Retrieval을 통해 출력된 유사도가 높은 문장을 기반으로 Langchain의 체인을 거쳐 LLM이 답변을 생성하게 된다.

🖥️ 시연 결과

  1. 프로세스 완료를 보여주는 화면:

    프로세스완료

  2. 질의응답 화면:

    질의응답_1 [참고문서 확인] 부분의 '?' 아이콘에 마우스를 가져다대면, LLM이 문서에서 참고한 문장을 확인할 수 있다.

    질의응답_2

Contributors

jsb17

5 commits

jsb17/RAinboG-Bot

LLM과 RAG 기법을 결합한 업로드 문서 기반 질의응답 챗봇 서비스

0

stars

5

commits

Python

primary language

Apr 4, 2024

updated

README

🌈 RAinboG Bot

오픈소스 LLM과 RAG 기법을 결합한 챗봇 프레임워크


✨ 프로젝트 개요

사용자가 업로드한 문서를 기반으로 사용자 질문 의도에 맞는 적절한 답변을 찾아 챗봇 형태로 제공하는 LLM x RAG 프레임워크이다. 이는 질문에 대한 답변 뿐만 아니라, LLM이 답변을 생성하는데 참고한 문서 청크, 해당 청크의 메타 정보들(ex.몇번째 페이지, 몇번째 문장 등)이 함께 제공된다.

RAinboG Bot은 아래와 같은 특장점을 보유하고 있다.

  • 사용자가 업로드한 문서를 기반으로 근거 있는 답변을 생성하기 때문에 환각 발생 가능성이 적다.

  • 시간이 지남에 최신화되는 데이터로 LLM의 재학습을 수행할 필요가 없어 시간, 비용적 측면에서 유리하다.

  • 외부 데이터베이스/문서 등에 질의 시 적합하고 확장성이 좋다.

  • LLM의 의사결정 과정이 투명하며, 어떤 외부 문서 또는 데이터 포인트가 관련성이 있는지 검사할 수 있다.


🚀 시작하는 법

  1. Clone or fork Client:

    git clone https://github.com/jsb17/LLM_RAG.git
    
  2. Install all dependencies:

    cd LLM_RAG
    pip install -r requirements.txt
    
  3. Run your App:

    python -m streamlit run llm_rag_streamlit.py
    

    OR

    streamlit run llm_rag_streamlit.py
    
  4. Initial Screen:

    초기화면

    4-1. 챗봇이 참고하고 답변할 수 있는 문서를 업로드합니다.

    4-2. 챗봇의 기본 모델이 될 LLM을 선택합니다.

    4-3. [Process] 버튼을 클릭하면 선택한 LLM 로드 및 RAG 검색 프로세스가 수행됩니다.


🖇️ RAG Retrieval Process

검색과정

  1. 사용자가 업로드한 문서의 내용을 로드한다.
  2. 로드된 문서의 내용을 여러 개의 Chunk(글 덩어리)로 분할한다.
  3. 임베딩 모델을 통해 비정형 데이터인 Chunk를 정형 데이터인 Vector로 변환한다. 이때, 변환된 Vector들은 Vector Store에 저장된다.
  4. Retrieval을 통해 출력된 유사도가 높은 문장을 기반으로 Langchain의 체인을 거쳐 LLM이 답변을 생성하게 된다.

🖥️ 시연 결과

  1. 프로세스 완료를 보여주는 화면:

    프로세스완료

  2. 질의응답 화면:

    질의응답_1 [참고문서 확인] 부분의 '?' 아이콘에 마우스를 가져다대면, LLM이 문서에서 참고한 문장을 확인할 수 있다.

    질의응답_2

Contributors

jsb17

5 commits

Languages

Python

100.0%