Langchain-Chatchat:一种高效的开源知识库应用解决方案
Langchain-Chatchat 是一个开源项目。该项目属于智能聊天机器人可以进行对话,同时具有文档导入向量数据库功能,允许用户使用文档以建立知识库,然后用户可以进行基于知识库的查询。项目提供webui用户界面供用户使用,也提供api供其他程序调用。
快速上手
1环境配置
首先,确保你的机器安装了 Python 3.10
$ python --versionPython 3.10.12
接着,创建一个虚拟环境,并在虚拟环境内安装项目的依赖
# 拉取仓库$
git clone https://github.com/chatchat-space/Langchain-Chatchat.git
# 进入目录
$ cd Langchain-Chatchat# 安装全部依赖
$ pip install -r requirements.txt
$ pip install -r requirements_api.txt
$ pip install -r requirements_webui.txt
# 默认依赖包括基本运行环境(FAISS向量库)。如果要使用 milvus/pg_vector 等向量库,请将 requirements.txt 中相应依赖取消注释再安装。
2模型下载
如需在本地或离线环境下运行本项目,需要首先将项目所需的模型下载至本地,通常开源 LLM 与 Embedding 模型可以从 HuggingFace 下载。以本项目中默认使用的 LLM 模型 THUDM/ChatGLM2-6B 与 Embedding 模型 moka-ai/m3e-base 为例:
下载模型需要先安装 Git LFS,然后运行
$ git lfs install
$ git clone https://huggingface.co/THUDM/chatglm2-6b
$ git clone https://huggingface.co/moka-ai/m3e-base
3 初始化知识库和配置文件
按照下列方式初始化自己的知识库和简单的复制配置文件
$ python copy_config_example.py
$ python init_database.py --recreate-vs
4 一键启动
按照以下命令启动项目
$ python startup.py -a
注意事项
项目离线部署需要下载好ChatGLM2,m3e-base 模型。在项目configs中的model_config.py中配置模型路径。
从清华云盘下载模型参数文件,放到本地chatglm2-6b仓库下。
清华大学云盘 (tsinghua.edu.cn)
m3e-base
中文文本嵌入模型m3e-base_数据集-飞桨AI Studio星河社区 (baidu.com)
项目对服务器要求很高,因为chatglm2量化INT4要显存大于6G才能正常使用。使用pip install -r requirements.txt 安装依赖会安装cpu版本,会导致对话明显卡顿。因此安装过程中pytorch需要使用gpu版本。
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
pip install torch==2.0.0+cu118 torchvision==0.15.1+cu118 torchaudio==2.0.1+cu118 -f https://download.pytorch.org/whl/torch_stable.html
该项目的特点
一种利用 langchain 思想实现的基于本地知识库的问答应用,目标期望建立一套对中文场景与开源模型支持友好、可离线运行的知识库问答解决方案。
受 GanymedeNil 的项目 document.ai 和 AlexZhangji 创建的 ChatGLM-6B Pull Request 启发,建立了全流程可使用开源模型实现的本地知识库问答应用。本项目的最新版本中通过使用 FastChat 接入 Vicuna, Alpaca, LLaMA, Koala, RWKV 等模型,依托于 langchain 框架支持通过基于 FastAPI 提供的 API 调用服务,使用基于 Streamlit 的 WebUI 进行操作。
依托于本项目支持的开源 LLM 与 Embedding 模型,本项目可实现全部使用开源模型离线私有部署。与此同时,本项目也支持 OpenAI GPT API 的调用,并将在后续持续扩充对各类模型及模型 API 的接入。
该项目的原理
本项目实现原理:加载文件 -> 读取文本 -> 文本分割 -> 文本向量化 -> 问句向量化 -> 在文本向量中匹配出与问句向量最相似的 top k个 -> 匹配出的文本作为上下文和问题一起添加到 prompt中 -> 提交给 LLM生成回答。
项目地址
Github: https://gitee.com/simplify-code/Langchain-Chatchat.git
使用说明
l可以选择多种对话模式进行AI对话
目前支持的对话模式有:LLM对话,知识库问答,搜索引擎问答及自定义Agent文档。
可以自由选择LLM模型: zhipu,chatglm2-6b,OpenAI,Anthropic等模型。
l可以导入文档创建知识库,进行基于知识库的对话。初次使用此项目需要初始化数据库。
完成文档导入后可以进行如下测试。可以选择知识库问答模式进行对话。
总结
Langchain-Chatchat 项目是一个用 Python 开发的开源智能聊天机器人项目,在 Gitee 平台上托管。它使用深度学习技术实现自然语言处理和生成回复,并提供一个基础框架用于构建智能对话机器人应用。