Langchain-Chatchat
무엇인가
Langchain-Chatchat은 LangChain을 기반으로 지식베이스 검색(RAG)과 Agent 실행을 묶은 애플리케이션이다. 원래 이름은 Langchain-ChatGLM이며, 라이브러리보다는 API 서버와 웹 UI까지 포함한 완성된 배포 단위에 가깝다. 중국어 문서와 중국계 오픈소스 모델을 우선 지원하는 것을 목표로 한다.
어떻게 동작하나
처리 흐름은 파일 로드, 텍스트 추출, 텍스트 분할, 임베딩 벡터 생성, 질문 임베딩, 벡터 저장소에서 top-k 유사 청크 검색, 검색된 텍스트와 질문을 하나의 프롬프트로 조립, LLM 호출로 이어진다. 실행 구성은 FastAPI 기반 API 서버와 Streamlit 기반 WebUI 두 갈래이며, 0.3.x의 핵심 기능은 Agent가 담당하고 사용자가 직접 도구 호출을 구성할 수도 있다. 설정은 로컬 yaml 파일로 관리하며 model_settings.yaml이 모델 접속을, basic_settings.yaml이 지식베이스 경로를, kb_settings.yaml이 벡터 저장소 종류를 정한다. 데이터 루트는 CHATCHAT_ROOT 환경변수로 지정하고, 기본 지식베이스 위치는 그 아래 data/knowledge_base, 기본 벡터 저장소는 FAISS다.
무엇과 다른가
0.2.x가 로컬 모델 경로를 받아 fastchat으로 직접 로드하던 것과 달리, 0.3.x는 LLM·Embedding·Reranker를 자체적으로 로드하지 않고 Xinference, Ollama, LocalAI, FastChat, One API 같은 외부 추론 프레임워크에 위임한다. One API를 경유하면 OpenAI ChatGPT, Azure OpenAI, Anthropic Claude, 지푸칭옌, 바이촨 같은 온라인 API도 같은 설정 체계로 붙는다. 모델 미세조정이나 학습은 이 프로젝트의 범위에 들어가지 않는다.
어떻게 쓰나
설치는 pip로 하고, 모델 추론 프레임워크를 별도 가상환경에서 먼저 띄운 뒤 사용할 모델을 로드한다. 이어서 chatchat init을 실행하면 데이터 디렉터리 생성, samples 지식베이스 복사, 기본 yaml 파일 생성이 한 번에 수행된다. model_settings.yaml에 선택한 추론 프레임워크와 모델을 적고, chatchat kb로 지식베이스를 초기화한 다음 chatchat start로 서버를 기동한다. yaml 파일은 서버가 자동으로 다시 읽으므로 수정 후 재시작이 필요 없다.
전제와 한계
Python 3.8~3.11에서 동작하고 Windows, macOS, Linux에서 테스트되었으며 CPU, GPU, NPU, MPS를 모두 전제로 한다. 지식베이스 초기화 시점에 임베딩 모델이 이미 떠 있어야 하고, Xinference를 쓸 경우 별도 Python 의존성이 추가로 필요하다. 기본 바인드 주소가 127.0.0.1이라 다른 IP로는 접속할 수 없고, 원격 접속이 필요하면 basic_settings.yaml에서 0.0.0.0으로 바꿔야 한다. 0.3.x는 구조 변경이 커서 0.2.x에서의 마이그레이션은 보장되지 않으며, knowledge_base 디렉터리를 새 DATA 경로로 복사하는 방식만 안내된다.
관련 논문 5
유사 도구
- langchainLLM 애플리케이션과 에이전트를 조립하는 Python 프레임워크다. 모델·임베딩·벡터 스토어·툴을 표준 인터페이스로 감싸 제공자 교체를 코드 수정 없이 처리한다.
- ragflow비정형 문서를 파싱·청킹해 검색 증강 생성 파이프라인과 에이전트 워크플로를 한 엔진에서 돌리는 오픈소스 RAG 서버다.
- MaxKBRAG 파이프라인과 워크플로 엔진, MCP 도구 호출을 묶어 기업용 에이전트를 만드는 Python/Django 오픈소스 플랫폼이다.
- difyLLM 애플리케이션을 워크플로·RAG·에이전트·모델 관리·관측까지 한 워크스페이스에서 만들고, 클라우드나 셀프호스팅으로 배포하는 오픈소스 플랫폼이다.
- FastGPTLLM 위에 지식베이스 RAG 검색과 시각적 워크플로 편집을 얹어 질의응답 시스템을 구성하는 TypeScript 플랫폼이다.
- langgraph상태를 가진 장기 실행 에이전트를 그래프로 정의하고 실패 후에도 이어서 실행하는 파이썬 저수준 오케스트레이션 프레임워크다.