![](img/logo-long-chatchat-trans-v2.png)
[![Telegram](https://img.shields.io/badge/Telegram-2CA5E0?style=for-the-badge&logo=telegram&logoColor=white "langchain-chatglm")](https://t.me/+RjliQ3jnJ1YyN2E9)
🌍 [READ THIS IN ENGLISH](README_en.md)
📃 **LangChain-Chatchat** (原 Langchain-ChatGLM): 基于 Langchain 与 ChatGLM 等大语言模型的本地知识库问答应用实现。
## 目录
* [介绍](README.md#介绍)
* [环境最低要求](README.md#环境最低要求)
* [变更日志](README.md#变更日志)
* [模型支持](README.md#模型支持)
* [Agent 生态](README.md#Agent-生态)
* [Docker 部署](README.md#Docker-部署)
* [开发部署](README.md#开发部署)
* [软件需求](README.md#软件需求)
* [1. 开发环境准备](README.md#1-开发环境准备)
* [2. 下载模型至本地](README.md#2-下载模型至本地)
* [3. 设置配置项](README.md#3-设置配置项)
* [4. 知识库初始化与迁移](README.md#4-知识库初始化与迁移)
* [5. 一键启动 API 服务或 Web UI](README.md#5-一键启动-API-服务或-Web-UI)
* [常见问题](README.md#常见问题)
* [最佳实践](README.md#最佳实践)
* [项目 Wiki](README.md#项目-Wiki)
* [路线图](README.md#路线图)
* [项目交流群](README.md#项目交流群)
---
## 介绍
🤖️ 一种利用 [langchain](https://github.com/hwchase17/langchain) 思想实现的基于本地知识库的问答应用,目标期望建立一套对中文场景与开源模型支持友好、可离线运行的知识库问答解决方案。
💡 受 [GanymedeNil](https://github.com/GanymedeNil) 的项目 [document.ai](https://github.com/GanymedeNil/document.ai) 和 [AlexZhangji](https://github.com/AlexZhangji) 创建的 [ChatGLM-6B Pull Request](https://github.com/THUDM/ChatGLM-6B/pull/216) 启发,建立了全流程可使用开源模型实现的本地知识库问答应用。本项目的最新版本中通过使用 [FastChat](https://github.com/lm-sys/FastChat) 接入 Vicuna, Alpaca, LLaMA, Koala, RWKV 等模型,依托于 [langchain](https://github.com/langchain-ai/langchain) 框架支持通过基于 [FastAPI](https://github.com/tiangolo/fastapi) 提供的 API 调用服务,或使用基于 [Streamlit](https://github.com/streamlit/streamlit) 的 WebUI 进行操作。
✅ 依托于本项目支持的开源 LLM 与 Embedding 模型,本项目可实现全部使用**开源**模型**离线私有部署**。与此同时,本项目也支持 OpenAI GPT API 的调用,并将在后续持续扩充对各类模型及模型 API 的接入。
⛓️ 本项目实现原理如下图所示,过程包括加载文件 -> 读取文本 -> 文本分割 -> 文本向量化 -> 问句向量化 -> 在文本向量中匹配出与问句向量最相似的 `top k`个 -> 匹配出的文本作为上下文和问题一起添加到 `prompt`中 -> 提交给 `LLM`生成回答。
📺 [原理介绍视频](https://www.bilibili.com/video/BV13M4y1e7cN/?share_source=copy_web&vd_source=e6c5aafe684f30fbe41925d61ca6d514)
![实现原理图](img/langchain+chatglm.png)
从文档处理角度来看,实现流程如下:
![实现原理图2](img/langchain+chatglm2.png)
🚩 本项目未涉及微调、训练过程,但可利用微调或训练对本项目效果进行优化。
🌐 [AutoDL 镜像](https://www.codewithgpu.com/i/chatchat-space/Langchain-Chatchat/Langchain-Chatchat) 中 `v9` 版本所使用代码已更新至本项目 `v0.2.5` 版本。
🐳 [Docker 镜像](registry.cn-beijing.aliyuncs.com/chatchat/chatchat:0.2.3)
💻 一行命令运行 Docker 🌲:
```shell
docker run -d --gpus all -p 80:8501 registry.cn-beijing.aliyuncs.com/chatchat/chatchat:0.2.3
```
---
## 环境最低要求
想顺利运行本项目代码,请按照以下的最低要求进行配置:
+ Python 版本: >= 3.8.5, < 3.11
+ CUDA 版本: >= 11.7
+ 强烈推荐使用 Python 3.10,部分 Agent 功能可能没有完全支持 Python 3.10 以下版本。
如果想要顺利在 GPU 运行本地模型(int4 版本),你至少需要以下的硬件配置:
+ ChatGLM2-6B & LLaMA-7B
+ 最低显存要求: 7GB
+ 推荐显卡: RTX 3060, RTX 2060
+ LLaMA-13B
+ 最低显存要求: 11GB
+ 推荐显卡: RTX 2060 12GB, RTX 3060 12GB, RTX 3080, RTX A2000
+ Qwen-14B-Chat
+ 最低显存要求: 13GB
+ 推荐显卡: RTX 3090
+ LLaMA-30B
+ 最低显存要求: 22GB
+ 推荐显卡: RTX A5000, RTX 3090, RTX 4090, RTX 6000, Tesla V100, RTX Tesla P40
+ LLaMA-65B
+ 最低显存要求: 40GB
+ 推荐显卡: A100, A40, A6000
若使用 int8 推理,则显存大致为 int4 推理要求的 1.5 倍;
若使用 fp16 推理,则显存大致为 int4 推理要求的 2.5 倍。
💡 例如:使用 fp16 推理 Qwen-7B-Chat 模型,则需要使用 16GB 显存。
以上仅为估算,实际情况以 nvidia-smi 占用为准。
---
## 变更日志
参见 [版本更新日志](https://github.com/imClumsyPanda/langchain-ChatGLM/releases)。
从 `0.1.x` 升级过来的用户请注意,需要按照[开发部署](README.md#3-开发部署)过程操作,将现有知识库迁移到新格式,具体见[知识库初始化与迁移](docs/INSTALL.md#知识库初始化与迁移)。
### `0.2.0` 版本与 `0.1.x` 版本区别
1. 使用 [FastChat](https://github.com/lm-sys/FastChat) 提供开源 LLM 模型的 API,以 OpenAI API 接口形式接入,提升 LLM 模型加载效果;
2. 使用 [langchain](https://github.com/langchain-ai/langchain) 中已有 Chain 的实现,便于后续接入不同类型 Chain,并将对 Agent 接入开展测试;
3. 使用 [FastAPI](https://github.com/tiangolo/fastapi) 提供 API 服务,全部接口可在 FastAPI 自动生成的 docs 中开展测试,且所有对话接口支持通过参数设置流式或非流式输出;
4. 使用 [Streamlit](https://github.com/streamlit/streamlit) 提供 WebUI 服务,可选是否基于 API 服务启动 WebUI,增加会话管理,可以自定义会话主题并切换,且后续可支持不同形式输出内容的显示;
5. 项目中默认 LLM 模型改为 [THUDM/ChatGLM2-6B](https://huggingface.co/THUDM/chatglm2-6b),默认 Embedding 模型改为 [moka-ai/m3e-base](https://huggingface.co/moka-ai/m3e-base),文件加载方式与文段划分方式也有调整,后续将重新实现上下文扩充,并增加可选设置;
6. 项目中扩充了对不同类型向量库的支持,除支持 [FAISS](https://github.com/facebookresearch/faiss) 向量库外,还提供 [Milvus](https://github.com/milvus-io/milvus), [PGVector](https://github.com/pgvector/pgvector) 向量库的接入;
7. 项目中搜索引擎对话,除 Bing 搜索外,增加 DuckDuckGo 搜索选项,DuckDuckGo 搜索无需配置 API Key,在可访问国外服务环境下可直接使用。
---
## 模型支持
本项目中默认使用的 LLM 模型为 [THUDM/ChatGLM2-6B](https://huggingface.co/THUDM/chatglm2-6b),默认使用的 Embedding 模型为 [moka-ai/m3e-base](https://huggingface.co/moka-ai/m3e-base) 为例。
### LLM 模型支持
本项目最新版本中支持接入**本地模型**与**在线 LLM API**。
本地 LLM 模型接入基于 [FastChat](https://github.com/lm-sys/FastChat) 实现,支持模型如下:
- [meta-llama/Llama-2-7b-chat-hf](https://huggingface.co/meta-llama/Llama-2-7b-chat-hf)
- Vicuna, Alpaca, LLaMA, Koala
- [BlinkDL/RWKV-4-Raven](https://huggingface.co/BlinkDL/rwkv-4-raven)
- [camel-ai/CAMEL-13B-Combined-Data](https://huggingface.co/camel-ai/CAMEL-13B-Combined-Data)
- [databricks/dolly-v2-12b](https://huggingface.co/databricks/dolly-v2-12b)
- [FreedomIntelligence/phoenix-inst-chat-7b](https://huggingface.co/FreedomIntelligence/phoenix-inst-chat-7b)
- [h2oai/h2ogpt-gm-oasst1-en-2048-open-llama-7b](https://huggingface.co/h2oai/h2ogpt-gm-oasst1-en-2048-open-llama-7b)
- [lcw99/polyglot-ko-12.8b-chang-instruct-chat](https://huggi
没有合适的资源?快使用搜索试试~ 我知道了~
Langchain-Chatchat源码
需积分: 1 10 下载量 88 浏览量
2023-10-18
22:53:06
上传
评论 1
收藏 73.96MB GZ 举报
温馨提示
共220个文件
py:96个
pickle:39个
png:14个
Langchain-Chatchat(原Langchain-ChatGLM)基于 Langchain 与 ChatGLM 等语言模型的本地知识库问答 | Langchain-Chatchat (formerly langchain-ChatGLM), local knowledge based LLM (like ChatGLM) QA app with langchain
资源推荐
资源详情
资源评论
收起资源包目录
Langchain-Chatchat源码
(220个子文件)
cmudict 3.77MB
config 315B
swagger-ui.css 148KB
langchain-ChatGLM_open.csv 75KB
langchain-ChatGLM_closed.csv 39KB
description 73B
model_config.py.example 10KB
server_config.py.example 4KB
prompt_config.py.example 2KB
basic_config.py.example 542B
exclude 240B
kb_config.py.exmaple 3KB
index.faiss 216KB
.gitignore 3KB
HEAD 192B
HEAD 192B
HEAD 32B
HEAD 23B
pack-0950896c924c996b341fc87c46a8dda5a84562e8.idx 207KB
index 21KB
qr_code_66.jpg 240KB
qr_code_65.jpg 188KB
chatchat-qrcode.jpg 27KB
ocr_test.jpg 8KB
swagger-ui-bundle.js 1.38MB
redoc.standalone.js 1019KB
langchain-ChatGLM_open.jsonl 91KB
langchain-ChatGLM_closed.jsonl 47KB
LICENSE 11KB
master 192B
master 41B
README.md 25KB
README_en.md 25KB
FAQ.md 9KB
Issue-with-Installing-Packages-Using-pip-in-Anaconda.md 6KB
在Anaconda中使用pip安装包无效问题.md 5KB
自定义Agent.md 3KB
CHANGELOG.md 2KB
INSTALL.md 2KB
CONTRIBUTING.md 2KB
bug_report.md 2KB
启动API服务.md 1KB
splitter.md 1KB
feature_request.md 1KB
向量库环境docker.md 165B
pack-0950896c924c996b341fc87c46a8dda5a84562e8.pack 53.28MB
packed-refs 2KB
ocr_test.pdf 25KB
averaged_perceptron_tagger.pickle 5.85MB
polish.pickle 2.18MB
finnish.pickle 2.09MB
greek.pickle 1.95MB
finnish.pickle 1.77MB
estonian.pickle 1.72MB
polish.pickle 1.66MB
german.pickle 1.63MB
estonian.pickle 1.43MB
german.pickle 1.4MB
danish.pickle 1.36MB
czech.pickle 1.36MB
norwegian.pickle 1.36MB
turkish.pickle 1.3MB
danish.pickle 1.14MB
norwegian.pickle 1.13MB
swedish.pickle 1.11MB
czech.pickle 1.07MB
turkish.pickle 993KB
swedish.pickle 957KB
slovene.pickle 918KB
greek.pickle 855KB
dutch.pickle 820KB
italian.pickle 731KB
portuguese.pickle 723KB
slovene.pickle 717KB
dutch.pickle 677KB
spanish.pickle 665KB
french.pickle 648KB
italian.pickle 601KB
portuguese.pickle 598KB
spanish.pickle 549KB
french.pickle 541KB
english.pickle 483KB
english.pickle 397KB
malayalam.pickle 216KB
malayalam.pickle 216KB
russian.pickle 32KB
russian.pickle 32KB
index.pkl 46KB
official_wechat_mp_account.png 4.07MB
langchain+chatglm.png 1.07MB
1694251973694.png 249KB
webui_0915_0.png 237KB
fastapi_docs_020_0.png 204KB
webui_0915_1.png 170KB
langchain+chatglm2.png 124KB
qr_code_64_2.png 108KB
docker_logs.png 69KB
logo-long-chatchat-trans-v2.png 48KB
1694252029167.png 27KB
1694251762513.png 27KB
共 220 条
- 1
- 2
- 3
资源评论
otischan
- 粉丝: 0
- 资源: 18
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功