본문 바로가기

인공지능

LangChain-Chatchat 기반 오프라인 RAG 구축 가이드와 주요 기능

728x90
반응형
728x170

LangChain-Chatchat이란?

대규모 언어 모델(LLM)을 실제 서비스에 적용할 때 가장 많이 활용되는 방식 중 하나가 바로 RAG(Retrieval-Augmented Generation) 입니다. 하지만 자체 지식 기반을 구축하고, 오픈소스 모델을 활용해 완전한 오프라인 환경을 구성하는 것은 생각보다 쉽지 않습니다.

LangChain-Chatchat은 이러한 문제를 해결하기 위해 개발된 오픈소스 프로젝트입니다. LangChain 프레임워크를 기반으로 ChatGLM을 비롯한 다양한 오픈소스 LLM과 Embedding 모델을 활용하여 로컬 지식 기반 질의응답(RAG)Agent 기능을 구현할 수 있도록 지원합니다.

특히 최신 버전에서는 Xinference, Ollama 등 다양한 모델 추론 프레임워크를 지원하며, FastAPI 기반 API 서비스와 Streamlit 기반 WebUI를 함께 제공해 개발과 운영을 더욱 편리하게 수행할 수 있습니다.

이번 글에서는 LangChain-Chatchat의 개념부터 주요 기능, 동작 방식, 지원 모델, 설치 방법까지 정리해보겠습니다.

반응형

LangChain-Chatchat의 특징

LangChain-Chatchat은 중국어 환경과 오픈소스 LLM 활용에 최적화된 로컬 지식 기반 질의응답 프로젝트입니다.

프로젝트의 주요 목표는 다음과 같습니다.

  • 오픈소스 LLM 기반 RAG 시스템 구축
  • 오프라인 환경에서의 완전한 프라이빗 배포 지원
  • 다양한 Embedding 모델과 벡터 데이터베이스 지원
  • Agent 기반 AI 서비스 제공
  • API 및 WebUI 제공

또한 모든 구성 요소를 오픈소스로 구성할 수 있어 기업 내부망이나 인터넷 연결이 제한된 환경에서도 활용할 수 있습니다.


LangChain-Chatchat의 동작 원리

LangChain-Chatchat은 일반적인 RAG(Retrieval-Augmented Generation) 구조를 기반으로 동작합니다.

전체 처리 과정은 다음과 같습니다.

  1. 문서 업로드
  2. 문서 내용 추출
  3. 문서 분할(Text Split)
  4. 문서 임베딩(Vector Embedding)
  5. 사용자 질문 임베딩
  6. 벡터 데이터베이스에서 유사 문서 검색(Top-K)
  7. 검색된 문서를 Prompt에 포함
  8. LLM이 최종 답변 생성

즉, 사용자의 질문에 대해 단순히 언어 모델만 사용하는 것이 아니라, 사전에 구축된 지식 기반에서 가장 관련성이 높은 정보를 찾아 함께 전달하기 때문에 보다 정확한 답변을 생성할 수 있습니다.

문서 처리 과정 역시 다음과 같은 단계로 구성됩니다.

  • 문서 읽기
  • 텍스트 추출
  • 텍스트 분할
  • 임베딩 생성
  • 벡터 저장
  • 검색
  • 답변 생성

프로젝트 자체에는 모델 학습이나 파인튜닝 과정은 포함되지 않지만, 별도의 학습을 통해 성능을 더욱 향상시킬 수 있습니다.


0.3.x 버전 주요 기능

최신 0.3.x 버전에서는 프로젝트 구조가 크게 개선되었으며 Agent 기능이 핵심 기능으로 자리잡았습니다.

주요 기능은 다음과 같습니다.

다양한 모델 추론 프레임워크 지원

기존 FastChat 중심 구조에서 벗어나 다음과 같은 다양한 프레임워크를 지원합니다.

  • Xinference
  • Ollama
  • LocalAI
  • FastChat
  • One API

또한 모든 모델은 OpenAI SDK 형태로 통합 사용할 수 있습니다.


Agent 기능 강화

기존 버전에서는 Agent 기능이 불안정했지만,

0.3.x에서는

  • ChatGLM3
  • Qwen

등을 중심으로 Agent 기능이 크게 개선되었습니다.

필요한 경우 사용자가 직접 Tool Calling을 구현하는 것도 가능합니다.


다양한 대화 기능 제공

LangChain-Chatchat은 단순한 채팅만 제공하는 것이 아닙니다.

지원 기능은 다음과 같습니다.

  • 일반 LLM 대화
  • 지식 기반 대화
  • 검색 엔진 기반 대화
  • 파일 기반 RAG
  • 데이터베이스 질의응답
  • 이미지 기반 멀티모달 대화
  • ArXiv 논문 질의응답
  • Wolfram 연산 기능
  • Text-to-Image 생성
  • 로컬 지식베이스 관리
  • WebUI

특히 파일 기반 대화는 기존 단순 벡터 검색에서 발전하여 BM25와 KNN 등 다양한 검색 방식을 함께 지원합니다.


지원하는 모델 및 플랫폼

LangChain-Chatchat은 특정 모델에 종속되지 않습니다.

대표적으로 다음과 같은 최신 오픈소스 모델을 지원합니다.

  • GLM-4-Chat
  • Qwen2-Instruct
  • Llama3

Embedding 모델 역시 다양한 오픈소스 모델을 사용할 수 있습니다.

또한 온라인 API 연동도 지원합니다.

지원 대상은 다음과 같습니다.

  • OpenAI ChatGPT
  • Azure OpenAI
  • Anthropic Claude
  • Zhipu AI
  • Baichuan
  • One API

이를 통해 로컬 모델과 클라우드 모델을 혼합하여 사용할 수도 있습니다.


시스템 요구사항

소프트웨어

다음 환경에서 사용할 수 있습니다.

  • Python 3.8 ~ 3.11
  • Windows
  • macOS
  • Linux

하드웨어

0.3.x 버전부터는 모델 추론 프레임워크를 사용하는 구조로 변경되어 다양한 환경을 지원합니다.

예를 들어 다음과 같은 하드웨어에서 실행 가능합니다.

  • CPU
  • GPU
  • NPU
  • Apple MPS

설치 방법

1. LangChain-Chatchat 설치

가장 간단한 설치 방법은 pip를 이용하는 것입니다.

pip install langchain-chatchat -U

Xinference를 함께 사용하는 경우에는 추가 의존성을 설치합니다.

pip install "langchain-chatchat[xinference]" -U

2. 모델 추론 프레임워크 준비

프로젝트 실행 전에 먼저 모델 추론 프레임워크를 실행해야 합니다.

예를 들어 다음과 같은 플랫폼을 사용할 수 있습니다.

  • Xinference
  • Ollama
  • LocalAI
  • FastChat
  • One API

이후 원하는 LLM과 Embedding 모델을 로드합니다.


3. 프로젝트 초기화

프로젝트를 초기화합니다.

chatchat init

이 명령은 다음 작업을 수행합니다.

  • 데이터 디렉터리 생성
  • 샘플 지식베이스 생성
  • YAML 설정 파일 생성

4. 모델 설정

생성된 설정 파일에서 다음 항목을 수정합니다.

  • 기본 LLM
  • 기본 Embedding 모델
  • 모델 플랫폼 정보
  • 지식베이스 저장 위치
  • 데이터베이스 위치

YAML 기반 설정을 사용하기 때문에 서버를 재시작하지 않아도 설정 변경이 반영됩니다.


5. 지식베이스 생성

모델과 Embedding이 실행 중인 상태에서 다음 명령을 수행합니다.

chatchat kb -r

명령이 완료되면 문서 수, 임베딩 개수, 처리 시간 등의 정보를 확인할 수 있습니다.


6. 프로젝트 실행

프로젝트는 다음 명령으로 실행합니다.

chatchat start -a

기본적으로 127.0.0.1에서 실행되며, 외부에서 접근하려면 설정 파일에서 바인드 주소를 0.0.0.0으로 변경해야 합니다.


Docker 배포 지원

LangChain-Chatchat은 Docker 이미지도 제공합니다.

공식 Docker 이미지를 사용할 수 있으며, 프로젝트에서는 docker-compose를 이용한 배포를 권장하고 있습니다.


프로젝트 발전 과정

LangChain-Chatchat은 지속적으로 발전하고 있는 오픈소스 프로젝트입니다.

주요 이력은 다음과 같습니다.

  • 2023년 4월 : Langchain-ChatGLM 0.1.0 공개
  • 2023년 8월 : Langchain-Chatchat으로 프로젝트명 변경
  • 2023년 10월 : 0.2.5 버전에서 Agent 기능 추가
  • 2023년 12월 : GitHub Star 20,000개 달성
  • 2024년 6월 : 0.3.0 출시 및 새로운 프로젝트 아키텍처 적용

728x90

LangChain-Chatchat은 오픈소스 LLM과 LangChain을 활용하여 오프라인 환경에서도 완전한 RAG 기반 지식 검색 시스템을 구축할 수 있도록 지원하는 프로젝트입니다.

특히 최신 0.3.x 버전에서는 다양한 모델 추론 프레임워크를 지원하고, Agent 기능을 강화했으며, 데이터베이스 질의응답, 멀티모달 대화, 파일 기반 RAG, 문서 검색 등 폭넓은 기능을 제공해 활용 범위를 크게 확장했습니다.

또한 FastAPI 기반 API와 Streamlit WebUI를 함께 제공하여 개발과 운영 편의성을 높였으며, 다양한 오픈소스 LLM과 Embedding 모델을 유연하게 연동할 수 있는 구조를 갖추고 있습니다.

오픈소스 기반의 프라이빗 AI 시스템이나 사내 지식 검색 서비스를 구축하려는 조직이라면, LangChain-Chatchat은 RAG와 Agent 기능을 효과적으로 구현할 수 있는 유용한 선택지가 될 수 있습니다.

300x250

https://github.com/chatchat-space/Langchain-Chatchat

 

GitHub - chatchat-space/Langchain-Chatchat: Langchain-Chatchat(原Langchain-ChatGLM)基于 Langchain 与 ChatGLM, Qwen 与 L

Langchain-Chatchat(原Langchain-ChatGLM)基于 Langchain 与 ChatGLM, Qwen 与 Llama 等语言模型的 RAG 与 Agent 应用 | Langchain-Chatchat (formerly langchain-ChatGLM), local knowledge based LLM (like ChatGLM, Qwen and...

github.com

728x90
반응형
그리드형