이것을 영어로 읽어보세요
LangChain-Chatchat (이전 Langchain-ChatGLM)
ChatGLM과 같은 대규모 언어 모델과 Langchain과 같은 애플리케이션 프레임워크를 기반으로 오프라인 배포가 가능한 오픈 소스 RAG 및 Agent 애플리케이션 프로젝트입니다.
개요
기능 소개
0.3.x 기능 개요
지원되는 모델 추론 프레임워크 및 모델
빨리 시작하세요
pip 설치 및 배포
소스코드 설치 및 배포/개발 배포
도커 배포
프로젝트 마일스톤
문의하기
?️ langchain 아이디어를 사용하여 구현된 현지 지식 베이스 기반의 질의응답 애플리케이션입니다. 중국 시나리오 및 오픈 소스 모델에 친화적이고 오프라인에서 실행할 수 있는 지식 베이스 질의응답 솔루션을 구축하는 것이 목표입니다.
? GanymedeNil의 프로젝트 document.ai와 Alex Zhangji가 만든 ChatGLM-6B Pull Request에서 영감을 받아 전체 프로세스에서 오픈 소스 모델을 사용하여 구현할 수 있는 로컬 지식 베이스 Q&A 애플리케이션이 구축되었습니다. 이 프로젝트의 최신 버전에서는 Xinference 및 Ollama와 같은 프레임워크를 사용하여 GLM-4-Chat, Qwen2-Instruct, Llama3 등과 같은 모델에 액세스할 수 있으며, langchain 프레임워크를 사용하여 제공되는 API를 통해 통화 서비스를 지원합니다. FastAPI를 사용하거나 Streamlit 기반의 WebUI를 사용하여 작동합니다.
✅ 이 프로젝트는 주류 오픈 소스 LLM, 임베딩 모델 및 시장의 벡터 데이터베이스를 지원하며 모든 오픈 소스 모델의 오프라인 프라이빗 배포를 실현할 수 있습니다. 동시에 이 프로젝트는 OpenAI GPT API 호출도 지원하며 앞으로도 다양한 모델 및 모델 API에 대한 액세스를 지속적으로 확장할 예정입니다.
⛓️ 이 프로젝트의 구현 원리는 아래 그림과 같습니다. 프로세스에는 파일 로드 -> 텍스트 읽기 -> 텍스트 분할 -> 텍스트 벡터화 -> 질문 벡터화 -> 가장 유사한 텍스트 벡터의 top k
일치가 포함됩니다. 질문 벡터 top k
-> 일치하는 텍스트가 prompt
에 컨텍스트 및 질문으로 추가됩니다. -> 답변을 생성하기 위해 LLM
에 제출됩니다.
? 원리 소개 영상
문서 처리 관점에서 구현 프로세스는 다음과 같습니다.
? 이 프로젝트에는 미세 조정이나 교육 과정이 포함되지 않지만 미세 조정이나 교육을 사용하여 이 프로젝트의 효과를 최적화할 수 있습니다.
? AutoDL 이미지 버전 0.3.0
에서 사용된 코드가 이 프로젝트 버전 v0.3.0
으로 업데이트되었습니다.
? Docker 이미지는 가까운 시일 내에 업데이트될 예정입니다.
?? 이 프로젝트에 기여하고 싶다면 개발 가이드를 방문하여 개발 및 배포에 대한 자세한 내용을 알아보세요.
기능 | 0.2.x | 0.3.x |
---|---|---|
모델 액세스 | 지역: 빠른 채팅 온라인: XXXModelWorker | 로컬: model_provider, 대부분의 주류 모델 로딩 프레임워크 지원 온라인: oneapi 모든 모델 액세스는 openai SDK와 호환됩니다. |
대리인 | ❌불안정 | ✅ChatGLM3 및 Qwen에 최적화되어 에이전트 기능이 크게 향상되었습니다. |
LLM 대화 | ✅ | ✅ |
지식 기반 대화 | ✅ | ✅ |
검색 엔진 대화 | ✅ | ✅ |
파일 대화 | ✅벡터 검색만 가능 | ✅파일 RAG 기능으로 통합되어 BM25+KNN 등 다양한 검색 방법 지원 |
데이터베이스 대화 | ❌ | ✅ |
다중 모드 그림 대화 | ❌ | ✅ qwen-vl-chat 사용을 권장합니다 |
ARXIV 문학 대화 | ❌ | ✅ |
볼프람 대화 | ❌ | ✅ |
빈첸시안 그림 | ❌ | ✅ |
로컬 지식 기반 관리 | ✅ | ✅ |
웹UI | ✅ | ✅더 나은 다중 세션 지원, 맞춤형 시스템 프롬프트 단어... |
버전 0.3.x의 핵심 기능은 에이전트에 의해 구현되지만 사용자는 도구 호출을 수동으로 구현할 수도 있습니다.
작동 모드 | 구현된 기능 | 적용 가능한 시나리오 |
---|---|---|
"에이전트 활성화"를 확인하고 여러 도구를 선택하십시오. | LLM에 의한 자동 도구 호출 | ChatGLM3/Qwen 또는 온라인 API와 같은 에이전트 기능이 있는 모델 사용 |
"에이전트 활성화"를 선택하고 단일 도구를 선택하십시오. | LLM은 도구 매개변수만 구문 분석합니다. | 사용된 모델 에이전트는 평균적인 기능을 가지고 있으며 도구를 잘 선택할 수 없습니다. 기능을 수동으로 선택하고 싶습니다. |
"에이전트 활성화"를 선택 취소하고 단일 도구를 선택하십시오. | Agent 기능을 사용하지 않고 수동으로 매개변수를 입력하여 도구를 호출합니다. | 사용된 모델에는 에이전트 기능이 없습니다. |
도구를 선택 취소하고 이미지를 업로드하세요. | 그림대화 | qwen-vl-chat과 같은 다중 모드 모델 사용 |
더 많은 기능과 업데이트를 보려면 실제 배포를 경험해 보세요.
이 프로젝트는 이미 GLM-4-Chat 및 Qwen2-Instruct와 같이 시장에서 주류인 최신 오픈 소스 대규모 언어 모델 및 임베딩 모델을 지원합니다. 이러한 모델에서는 사용자가 직접 모델 배포 프레임워크를 시작하고 구성 정보 이 프로젝트에서 지원되는 로컬 모델 배포 프레임워크는 다음과 같습니다.
모델 배포 프레임워크 | 신퍼런스 | 로컬AI | 올라마 | 패스트챗 |
---|---|---|---|---|
OpenAI API 인터페이스 정렬 | ✅ | ✅ | ✅ | ✅ |
추론 엔진 가속화 | GPTQ, GGML, vLLM, TensorRT, mlx | GPTQ, GGML, vLLM, 텐서RT | GGUF, GGML | vLLM |
액세스 모델 유형 | LLM, 임베딩, 순위 재지정, 텍스트를 이미지로, 비전, 오디오 | LLM, 임베딩, 순위 재지정, 텍스트를 이미지로, 비전, 오디오 | LLM, 텍스트-이미지 변환, 비전 | LLM, 비전 |
함수 호출 | ✅ | ✅ | ✅ | / |
더 많은 플랫폼 지원(CPU, Metal) | ✅ | ✅ | ✅ | ✅ |
이기종 | ✅ | ✅ | / | / |
무리 | ✅ | ✅ | / | / |
운영 문서 링크 | 선적 서류 비치 | LocalAI 문서 | 올라마 문서 | FastChat 문서 |
사용 가능한 모델 | Xinference는 이미 모델을 지원합니다. | LocalAI는 이미 모델을 지원합니다. | Ollama는 이미 모델을 지원합니다. | FastChat은 이미 모델을 지원합니다 |
위에서 언급한 로컬 모델 로딩 프레임워크 외에도 프로젝트는 OpenAI ChatGPT, Azure OpenAI API, Anthropic Claude, Zhipu Qingyan, Baichuan 및 기타 일반적으로 사용되는 온라인 API를 포함한 온라인 API에 대한 One API 프레임워크 액세스를 지원합니다. 사용.
메모
Xinference 로드 로컬 모델 정보: Xinference의 내장 모델이 자동으로 다운로드됩니다. 로컬로 다운로드한 모델을 로드하려면 Xinference 서비스를 시작한 후 프로젝트 tools/model_loaders 디렉토리에서 streamlit run xinference_manager.py
실행하면 됩니다. 페이지 프롬프트: 로컬 경로를 설정하려면 모델을 지정하기만 하면 됩니다.
? 소프트웨어 측면에서 본 프로젝트는 Python 3.8-3.11 환경에서 사용을 지원했으며 Windows, macOS 및 Linux 운영 체제에서 테스트되었습니다.
? 하드웨어 측면에서 버전 0.3.0은 다양한 모델 배포 프레임워크에 대한 액세스를 지원하도록 수정되었으므로 CPU, GPU, NPU, MPS 등 다양한 하드웨어 조건에서 사용할 수 있습니다.
버전 0.3.0부터 Langchain-Chachat은 Python 라이브러리 형태로 설치 방법을 제공합니다. 특정 설치를 위해서는 다음을 실행하십시오.
pip 설치 langchain-chatchat -U
중요한
사용된 Python 라이브러리가 최신 버전인지 확인하려면 공식 Pypi 소스 또는 Tsinghua 소스를 사용하는 것이 좋습니다.
메모
모델 배포 프레임워크 Xinference는 Langchain-Chachat에 연결할 때 해당 Python 종속성 라이브러리의 추가 설치가 필요하므로 Xinference 프레임워크와 함께 사용할 경우 다음 설치 방법을 사용하는 것이 좋습니다.
pip install "langchain-chatchat[xinference]" -U
버전 0.3.0부터 Langchain-Chatchat은 더 이상 사용자가 입력한 로컬 모델 경로를 기반으로 모델을 직접 로드하지 않습니다. 관련 모델 유형에는 향후 지원될 LLM, Embedding, Reranker 및 다중 모드 모델이 포함됩니다. 등은 Xinference, Ollama, LocalAI, FastChat, One API 등과 같이 시장에서 일반적으로 사용 가능한 주요 모델 추론 프레임워크에 대한 액세스를 지원하도록 변경되었습니다.
따라서 Langchain-Chachat 프로젝트를 시작하기 전에 먼저 모델 추론 프레임워크를 실행하고 필요한 모델을 로드하는지 확인하십시오.
여기서는 Xinference를 예로 들어 프레임워크 배포 및 모델 로딩에 대한 Xinference 문서를 참조하세요.
경고
종속성 충돌을 방지하려면 Langchain-Chachat 및 Xinference와 같은 모델 배포 프레임워크를 conda, venv, virtualenv 등과 같은 다양한 Python 가상 환경에 배치하세요.
버전 0.3.1부터 Langchain-Chachat은 구성을 위해 로컬 yaml
파일을 사용합니다. 사용자가 직접 내용을 보고 수정할 수 있으며 서버를 다시 시작하지 않고도 자동으로 업데이트됩니다.
Chatchat이 구성 파일 및 데이터 파일을 저장하는 루트 디렉터리 설정(선택 사항)
# Linux 또는 macosexport CHATCHAT_ROOT=/path/to/chatchat_data # windowsset CHATCHAT_ROOT=/path/to/chatchat_data
이 환경 변수가 설정되지 않으면 현재 디렉터리가 자동으로 사용됩니다.
초기화 수행
채팅 초기화
이 명령은 다음을 수행합니다.
필요한 모든 데이터 디렉터리 생성
샘플 지식창고 콘텐츠 복사
기본 yaml
구성 파일 생성
구성 파일 수정
모델 구성(model_settings.yaml)
2단계에서 선택한 모델 추론 프레임워크에 따라 모델 액세스 구성을 수행해야 합니다. 모델 추론 프레임워크를 로드하고 모델과 로드된 모델을 로드합니다 . 자세한 내용은 model_settings.yaml
의 주석을 참조하세요. 주로 다음 내용을 수정합니다.
# 기본 LLM 이름 DEFAULT_LLM_MODEL: qwen1.5-chat # 기본 임베딩 이름 DEFAULT_EMBEDDING_MODEL: bge-large-zh-v1.5 # `LLM_MODEL_CONFIG`의 `llm_model, action_model` 키를 해당 LLM 모델로 변경합니다.# 존재 `MODEL_PLATFORMS`에서 해당 모델 플랫폼 정보를 수정합니다.
기술 자료 경로(basic_settings.yaml) 구성(선택 사항)
기본 지식 베이스는 CHATCHAT_ROOT/data/knowledge_base
에 있습니다. 지식 베이스를 다른 위치에 배치하거나 기존 지식 베이스에 연결하려는 경우 여기에서 해당 디렉터리를 수정할 수 있습니다.
# 지식 베이스의 기본 저장 경로 KB_ROOT_PATH: D:chatchat-testdataknowledge_base # 데이터베이스의 기본 저장 경로. sqlite를 사용하는 경우에는 DB_ROOT_PATH를 직접 수정하면 되고, 다른 데이터베이스를 사용하는 경우에는 SQLALCHEMY_DATABASE_URI를 직접 수정하세요. DB_ROOT_PATH: D:chatchat-testdataknowledge_baseinfo.db # 지식 기반 정보 데이터베이스 연결 URI SQLALCHEMY_DATABASE_URI: sqlite:///D:chatchat-testdataknowledge_baseinfo.db
기술 자료(kb_settings.yaml) 구성(선택 사항)
FAISS
지식 베이스는 기본적으로 사용됩니다. 다른 유형의 지식 베이스에 연결하려면 DEFAULT_VS_TYPE
및 kbs_config
수정하면 됩니다.
경고
지식 베이스를 초기화하기 전에 모델 추론 프레임워크와 해당 embedding
모델이 시작되었는지, 위의 3단계 에 따라 모델 액세스 구성이 완료되었는지 확인하세요.
채팅 kb -r
더 많은 기능을 보려면 chatchat kb --help
참조하세요.
성공을 나타내는 다음 로그가 나타납니다.
----------------------------------------------------------------------------------------------------
知识库名称 :samples
知识库类型 :faiss
向量模型: :bge-large-zh-v1.5
知识库路径 :/root/anaconda3/envs/chatchat/lib/python3.11/site-packages/chatchat/data/knowledge_base/samples
文件总数量 :47
入库文件数 :42
知识条目数 :740
用时 :0:02:29.701002
----------------------------------------------------------------------------------------------------
总计用时 :0:02:33.414425
메모
기술 자료 초기화에 대해 자주 묻는 질문
이 문제는 새로 생성된 가상 환경에서 자주 발생하며 다음을 통해 확인할 수 있습니다.
from unstructured.partition.auto import partition
명령문이 중단되어 실행할 수 없는 경우 다음 명령을 실행할 수 있습니다.
pip uninstall python-magic-bin# 제거된 패키지 버전 확인 pip install 'python-magic-bin=={version}'
그런 다음 이 섹션의 지침에 따라 기술 자료를 다시 생성하세요.
채팅 시작 -a
다음 인터페이스가 나타나면 시작이 성공한 것입니다.
경고
챗챗에서 설정한 기본 리스닝 주소 DEFAULT_BIND_HOST
는 127.0.0.1이므로 다른 IP를 통해서는 접근이 불가능합니다.
머신 IP(예: Linux 시스템)를 통해 액세스해야 하는 경우 basic_settings.yaml
에서 수신 주소를 0.0.0.0으로 변경해야 합니다.
데이터베이스 대화 구성의 경우 여기로 이동하여 데이터베이스 대화 구성 지침을 확인하세요.
소스코드 설치 및 배포는 개발 가이드를 참고하세요.
docker pull chatimage/chatchat:0.3.1.3-93e2c87-20240829 docker pull ccr.ccs.tencentyun.com/langchain-chatchat/chatchat:0.3.1.3-93e2c87-20240829 # 국내 미러
중요한
강력 권장: docker-compose 배포를 사용하세요. 자세한 내용은 README_docker를 참조하세요.
0.3.x의 구조가 많이 변경되었으므로 설명서에 따라 재배포하는 것이 좋습니다. 다음 가이드는 100% 호환성과 성공을 보장하지 않습니다. 중요한 데이터는 미리 백업해 두세요!
먼저安装部署
단계에 따라 운영 환경을 구성하고 구성 파일을 수정합니다.
0.2.x 프로젝트의 Knowledge_base 디렉터리를 구성된 DATA
디렉터리에 복사합니다.
2023年4月
: ChatGLM-6B 모델을 기반으로 로컬 지식 베이스 질문과 답변을 지원하는 Langchain-ChatGLM 0.1.0
출시되었습니다.
2023年8月
: Langchain-ChatGLM
이 Langchain-Chatchat
으로 이름이 바뀌었고, fastchat
모델 로딩 솔루션으로 사용하여 더 많은 모델과 데이터베이스를 지원하는 버전 0.2.0
이 출시되었습니다.
2023年10月
: Langchain-Chatchat 0.2.5
출시되어 Agent 콘텐츠가 출시되었으며, 오픈소스 프로젝트는 Founder Park & Zhipu AI & Zilliz
가 개최한 해커톤에서 3위를 차지했습니다.
2023年12月
: Langchain-Chatchat
오픈 소스 프로젝트가 20,000 개 이상의 별을 받았습니다.
2024年6月
: Langchain-Chatchat 0.3.0
출시되어 새로운 프로젝트 구조가 도입되었습니다.
? 앞으로의 챗챗 이야기를 기대해볼까요...
이 프로젝트의 코드는 Apache-2.0 프로토콜을 따릅니다.
? Langchain-Chachat 프로젝트 WeChat 커뮤니케이션 그룹. 이 프로젝트에도 관심이 있으시면 그룹 채팅에 참여하여 토론과 교류에 참여하실 수 있습니다.
? Langchain-Chachat 프로젝트 공식 공개 계정을 팔로우하려면 QR 코드를 스캔하세요.
이 프로젝트가 귀하의 연구에 도움이 된다면 다음 내용을 인용해주세요.
@software{langchain_chatchat, title = {{langchain-chatchat}}, author = {Liu, Qian and Song, Jinke, and Huang, Zhiguo, and Zhang, Yuxuan, and glide-the, and liunux4odoo}, year = 2024, journal = {GitHub repository}, publisher = {GitHub}, howpublished = {url{https://github.com/chatchat-space/Langchain-Chatchat}} }