当前位置:   article > 正文

如何使用 AutoDL 云实例基于LangChain-Chatchat 和 ChatGLM 搭建本地知识库模型详细教程(更新中)_langchain chatchat github

langchain chatchat github

注册 AutoDL 算力云

AutoDL算力云是一个专注于提供人工智能(AI)和深度学习(DL)领域算力资源的云计算平台。它整合了高性能计算资源,如GPU和TPU等,为用户提供了弹性、高效且成本效益高的计算服务。通过AutoDL算力云,用户可以轻松进行模型训练、数据分析、算法研究等任务,加速AI应用的开发和部署。平台提供了用户友好的界面和强大的技术支持,使用户能够轻松上手并充分利用算力资源。AutoDL算力云致力于为用户提供稳定、可靠且价格合理的服务,帮助用户提升AI应用的性能和效果。

在这里插入图片描述
绑定微信

在这里插入图片描述

Langchain-Chatchat 概述

Github 地址:https://github.com/chatchat-space/Langchain-Chatchat

在这里插入图片描述
解决痛点

该项目是一个可以实现 完全本地化 推理的知识库增强方案, 重点解决数据安全保护,私域化部署的企业痛点。 本开源方案采用Apache License,可以免费商用,无需付费。

项目背景

Langchain-Chatchat 是一个基于本地知识库的问答系统,该项目结合了 ChatGLM 大语言模型与 Langchain 应用框架,实现了开源、可离线部署的检索增强生成(RAG)大模型。Langchain-Chatchat旨在建立一套对中文场景与开源模型支持友好、可离线运行的知识库问答解决方案。它依托于开源的LLM(大语言模型)与Embedding模型,支持私有化部署。

实现原理

项目通过加载文件、读取文本、文本分割、文本向量化、问句向量化等步骤,在文本向量中匹配出与问句向量最相似的 top k 个文本,并将这些文本作为上下文和问题一起添加到 prompt 中,最后提交给 LLM 生成回答。

配置文件详解

项目中的配置文件包括 basic_config、kb_config、model_config、prompt_config 和 server_config 等,分别用于配置基础参数、知识库参数、模型参数、prompt 参数和服务器参数等。

在这里插入图片描述

AutoDL 创建实例

chatchat-space/Langchain-Chatchat/Langchain-Chatchat

安装地址:https://www.codewithgpu.com/i/chatchat-space/Langchain-Chatchat/Langchain-Chatchat

在这里插入图片描述

选择 RTX 4090 显卡

在这里插入图片描述
创建完成

在这里插入图片描述

登陆 JupyterLab

点击 JupyterLab 登陆服务器管理端 UI 网页

在这里插入图片描述

LAB - JupyterLab

在这里插入图片描述

启动 Langchain-Chatchat

使用虚拟环境启动

更改当前工作目录(Current Working Directory)到 /root/Langchain-Chatchat/

cd /root/Langchain-Chatchat/
  • 1

权限注意:位于 /root 目录下的名为 Langchain-Chatchat 的文件夹,并且有权限(通常是 root 用户或具有适当权限的用户)来访问这个目录。

conda activate 激活 Conda 环境

conda activate /root/pyenv
  • 1

执行 startup.py Python 脚本

python startup.py -a
  • 1
2024-06-15 17:37:57 | ERROR | stderr | INFO:     Started server process [1524]
2024-06-15 17:37:57 | ERROR | stderr | INFO:     Waiting for application startup.
2024-06-15 17:37:57 | ERROR | stderr | INFO:     Application startup complete.
2024-06-15 17:37:57 | ERROR | stderr | INFO:     Uvicorn running on http://0.0.0.0:20000 (Press CTRL+C to quit)

······
 
  You can now view your Streamlit app in your browser.

  URL: http://0.0.0.0:6006
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

暴露端口:URL: http://0.0.0.0:6006 本地 SSH 连接端口映射需要

本地环境安装依赖

git clone https://github.com/chatchat-space/Langchain-Chatchat.git
  • 1

cd Langchain-Chatchat 目录

cd Langchain-Chatchat
  • 1

安装全部依赖

pip install -r requirements.txt
pip install -r requirements_api.txt
pip install -r requirements_webui.txt
  • 1
  • 2
  • 3

本地 SSH 连接端口映射

查看服务器实例 SSH 登陆指令 / 密码

在这里插入图片描述

登陆指令:ssh -p 36676 root@connect.cqa1.seetacloud.com
密码:H1ZxlPqSAYa2······
  • 1
  • 2

本地 SSH 连接端口映射

ssh -CNg -L 6006:127.0.0.1:6006 root@connect.cqa1.seetacloud.com -p 36676
  • 1

解释说明

选项描述
sshSecure Shell 缩写,用于安全地登录到远程服务器。
-C启用压缩功能,可以加速数据传输,特别是当连接速度较慢时。
-N不执行远程命令。通常与端口转发一起使用。
-g允许远程主机连接到本地转发的端口。
-L 6006:127.0.0.1:6006本地端口转发选项。将本地机器的 6006 端口上的连接转发到远程服务器的 localhost 的 6006 端口。
root@connect.cqa1.seetacloud.com要连接的远程服务器的用户名(root)和地址(connect.cqa1.seetacloud.com)。
-p 36676指定连接到远程服务器的端口号 36676。

请注意,-L选项中的目标地址(在本例中是127.0.0.1:6006)通常是远程服务器上的一个服务地址和端口。如果你只是想将本地端口转发到远程服务器上的某个服务,那么你需要确保该服务在远程服务器上的相应端口上运行。如果你的目的是将远程服务器上的服务转发回你的本地机器,那么你可能需要更改目标地址以指向远程服务器上的实际服务地址。

开启 powershell

在这里插入图片描述

执行效果

PS C:\Users\Administrator> ssh -CNg -L 6006:127.0.0.1:6006 root@connect.cqa1.seetacloud.com -p 36676
The authenticity of host '[connect.cqa1.seetacloud.com]:36676 ([58.144.141.28]:36676)' can't be established.
ED25519 key fingerprint is SHA256:hYeXoQZZ+DNPLXUQRpQzusRVPsqDXaLX8GsC4GurD3s.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '[connect.cqa1.seetacloud.com]:36676' (ED25519) to the list of known hosts.
root@connect.cqa1.seetacloud.com's password:
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

注意:在进行填写 SSH 密码后等待片刻,若未出现任何报错,即 SSH 连接服务器实例成功。错误情况 Permission denied, please try again.

访问:http://127.0.0.1:6006

在这里插入图片描述

服务器端日志

INFO:     127.0.0.1:55968 - "POST /llm_model/list_config_models HTTP/1.1" 200 OK
2024-06-15 17:43:27,093 - _client.py[line:1027] - INFO: HTTP Request: POST http://127.0.0.1:7861/llm_model/list_config_models "HTTP/1.1 200 OK"
  • 1
  • 2

LangChain Web UI

测试对话

在这里插入图片描述

ChatGLM temperature 控制参数

在 ChatGLM 模型中,temperature 是一个重要的控制参数,它主要用于调整模型在生成回答时的随机性和确定性。temperature 影响模型从生成分布中随机抽样的程度。通过调整 temperature 的值,可以控制模型生成回答的多样性和确定性。

当 temperature 设置为 0 时,模型将始终产生相同的输出,因为此时没有引入任何随机性。
当 temperature 的值逐渐增加时,模型生成的回答会变得更加多样化和具有创造性,但也可能包含更多的不确定性和噪声。
较高的 temperature 值意味着模型会以更高的概率选择不太常见的单词,从而生成更具创新性的回答。
较低的 temperature 值则意味着模型会更倾向于选择更常见和更确定的单词,生成更保守和可预测的回答。
  • 1
  • 2
  • 3
  • 4

** ChatGLM 历史会话轮数**

在 ChatGLM 模型中,历史会话轮数(即多轮对话的能力)是一个重要的特性,它允许模型理解和生成基于之前对话回合的连续响应。

历史会话轮数限制

ChatGLM模型能够处理的历史会话轮数取决于具体的实现和配置。理论上,只要模型有足够的显存和计算能力,它可以处理任意数量的历史会话轮数。然而,在实际应用中,由于显存和计算资源的限制,模型可能无法处理过多的历史会话轮数。因此,在设计和实现多轮对话系统时,需要权衡历史会话轮数的数量和系统的性能。

ChatGLM 模型通过特定的数据组织格式和算法实现来处理历史会话轮数,并展现出强大的多轮对话能力。在实际应用中,需要根据具体需求来选择合适的模型配置和训练策略。

提示:LLM(Large Language Model)是大型语言模型的缩写,它是一种基于深度学习技术的语言模型。

LangChain 创建知识库

创建知识库

在这里插入图片描述
上传文件知识库

在这里插入图片描述

选择 Browse files 选择本地电脑文件添加到知识库,点击 添加文件到知识库 完成添加。

在这里插入图片描述
运行测试结果

在这里插入图片描述

ChatGLM 微调

待更新······

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/897464
推荐阅读
相关标签
  

闽ICP备14008679号