![](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#模型支持)
* [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#路线图)
* [项目交流群](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.5)
💻 一行命令运行 Docker 🌲:
```shell
docker run -d --gpus all -p 80:8501 registry.cn-beijing.aliyuncs.com/chatchat/chatchat:0.2.5
```
---
## 环境最低要求
想顺利运行本代码,请按照以下的最低要求进行配置:
+ Python版本: >= 3.8.5, < 3.11
+ Cuda版本: >= 11.7
+ 强烈推荐使用Python3.10,部分Agent功能可能没有完全支持Python3.10以下版本。
如果想要顺利在GPU运行本地模型(int4版本),你至少需要以下的硬件配置:
+ chatglm2-6b & LLaMA-7B 最低显存要求: 7GB 推荐显卡: RTX 3060, RTX 2060
+ LLaMA-13B 最低显存要求: 11GB 推荐显卡: RTX 2060 12GB, RTX3060 12GB, RTX3080, RTXA2000
+ 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 则显存x1.5 fp16 x2.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://huggingface.co/lcw99/polyglot-ko-12.8b-chang-instruct-chat)
- [lmsys/fastchat-t5-3b-v1.0](https://huggingface.co/lmsys/fastchat-t5)
- [mosaicml/mpt-7b-chat](https://huggingface.co/mosaicml/mpt-7b-chat)
- [Neutralzz/BiLLa-7B-SFT](https://huggingface.co/Neutralzz/BiLLa-7B-SFT)
- [nomic-ai/gpt4all-13b-snoozy](https://huggingface.co/nomic-ai/gpt4all-13b-snoozy)
- [NousResearch/Nous-Hermes-13b](https://huggingface.co/NousResearch/Nous-Hermes-13b)
- [openaccess-ai-collective/manticore-13b-chat-pyg](https://huggin
没有合适的资源?快使用搜索试试~ 我知道了~
Langchain-Chachat基于Langchain与ChatGLM等语言模型的本地知识库问答
共197个文件
py:96个
pickle:39个
md:14个
1星 需积分: 0 113 下载量 78 浏览量
2023-10-09
12:08:12
上传
评论 10
收藏 20.33MB ZIP 举报
温馨提示
Langchain-Chatatch(以前称为 langchain-ChatGLM),基于本地知识的 LLM(如 ChatGLM),带有 langchain 的 QA 应用程序 一种利用langchain思想实现的基于本地知识库的问答应用,目标是建立一套针对中文场景与开源模型支持模式、可离线运行的知识库问答解决方案。 受GanymedeNil的项目document.ai和AlexZhangji创建了ChatGLM-6B Pull Request指令,建立了全流程可使用开源模型实现的本地知识库问答应用。本项目的最新版本中通过使用FastChat接入Vicuna、Alpaca、 LLaMA、Koala、RWKV 等模型,依托于langchain框架通过支持基于FastAPI提供的API调用服务,或使用基于Streamlit的WebUI进行操作。 依托于本项目支持的LLM与嵌入模型,项目可实现全部使用开源模型离线部署。同时,本项目也支持OpenAI。
资源推荐
资源详情
资源评论
收起资源包目录
Langchain-Chachat基于Langchain与ChatGLM等语言模型的本地知识库问答 (197个子文件)
cmudict 3.64MB
swagger-ui.css 148KB
langchain-ChatGLM_open.csv 74KB
langchain-ChatGLM_closed.csv 39KB
model_config.py.example 10KB
server_config.py.example 4KB
prompt_config.py.example 2KB
basic_config.py.example 520B
kb_config.py.exmaple 3KB
index.faiss 216KB
.gitignore 3KB
qr_code_63.jpg 271KB
qr_code_64.jpg 84KB
chatchat-qrcode.jpg 27KB
ocr_test.jpg 8KB
swagger-ui-bundle.js 1.38MB
redoc.standalone.js 1018KB
langchain-ChatGLM_open.jsonl 90KB
langchain-ChatGLM_closed.jsonl 47KB
LICENSE 11KB
README.md 24KB
README_en.md 24KB
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 157B
ocr_test.pdf 25KB
averaged_perceptron_tagger.pickle 5.85MB
polish.pickle 1.95MB
greek.pickle 1.86MB
finnish.pickle 1.86MB
finnish.pickle 1.77MB
polish.pickle 1.66MB
estonian.pickle 1.52MB
german.pickle 1.46MB
estonian.pickle 1.43MB
german.pickle 1.4MB
czech.pickle 1.21MB
danish.pickle 1.21MB
norwegian.pickle 1.2MB
turkish.pickle 1.17MB
danish.pickle 1.14MB
norwegian.pickle 1.13MB
czech.pickle 1.07MB
swedish.pickle 1010KB
turkish.pickle 993KB
swedish.pickle 957KB
greek.pickle 855KB
slovene.pickle 813KB
dutch.pickle 725KB
slovene.pickle 717KB
dutch.pickle 677KB
italian.pickle 643KB
portuguese.pickle 634KB
italian.pickle 601KB
portuguese.pickle 598KB
spanish.pickle 584KB
french.pickle 570KB
spanish.pickle 549KB
french.pickle 541KB
english.pickle 423KB
english.pickle 397KB
malayalam.pickle 216KB
malayalam.pickle 216KB
russian.pickle 32KB
russian.pickle 32KB
index.pkl 46KB
official_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
docker_logs.png 69KB
logo-long-chatchat-trans-v2.png 48KB
1694251762513.png 27KB
1694252029167.png 27KB
chatchat_icon_blue_square_v2.png 7KB
favicon.png 7KB
utils.py 31KB
startup.py 30KB
utils.py 18KB
kb_doc_api.py 18KB
utils.py 16KB
weather.py 11KB
base.py 11KB
knowledge_base.py 11KB
dialogue.py 10KB
llm_api_stale.py 9KB
search_engine_chat.py 7KB
test_kb_api.py 7KB
共 197 条
- 1
- 2
资源评论
- eeijack2024-03-31内容很不错
Web面试那些事儿
- 粉丝: 4930
- 资源: 101
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于matlab实现夜间车牌识别程序(1).rar
- 基于matlab实现无线传感器网络无需测距定位算法matlab源代码 包括apit,dv-hop,amorphous在内的共7个
- 基于python的yolov5实现的旋转目标检测
- 基于matlab实现无线传感器网络 CAB定位仿真程序 这是无线传感器节点定位CAB算法的仿真程序,由matlab完成.rar
- 基于matlab实现图像处理,本程序使用背景差分法对来往车辆进行检测和跟踪.rar
- 基于matlab实现视频监控中车型识别代码,自己写的,希望和大家多多交流.rar
- springcodespringcodespringcodespringcode
- 基于matlab实现权值的MAXDEV无线传感器网络定位算法研究 MAXDEV 无线传感器 定位 算法.rar
- sdk.config
- 基于matlab实现配电网三相潮流计算方法,对几种常用的配电网潮流计算方法进行了对比分析.rar
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功