浅聊langchain-chatchat

个人的一点经验和总结,希望能帮助到大家。有不对的地方请留言和指正!

langchain-GLM是什么

        langchain-GLM是一个本地知识库应用解决方案,支持以cli、web、api方式提供以本地知识库在线资源为知识素材的对话服务,对中英文场景对话支持友好。它由LLM(大语言模型,例如:ChatGLM-6B、星火、文心一言)和Embedding 模型组成,支持私有化部署。

原理

  1. 加载文件
  2. 读取文本
  3. 文本分割
  4. 文本向量化(将文本表示成计算机可以识别的实数向量的过程)
  5. 问句向量化(问句向量化是自然语言处理中的一种技术,其目标是将问句转化为计算机可以解析的向量形式。这一过程通常发生在文本向量化之后,作为更复杂任务如问题回答、对话系统等的一部分。)
  6. 在文本向量中匹配出与问句向量最相似的top k
  7. 匹配出的文本作为上下文和问题一起添加到prompt中 
  8. 提交给LLM生成回答。

为什么要选择langchain

优点

  1. 支持私有化部署
  2. 几乎支持国内市面上开源的在线或本地模型
  3. 消费级GPU或者CPU上即可安装并运行
  4. 支持api方式提供服务,解决了大模型对话嵌入自有应用难的问题

缺点

  1. 大多数家用电脑配置不够运行大模型。需要 money 购买GPU
  2. 国内下载镜像难。模型镜像大,好几十G

解决了什么问题

稍微对大模型运行原理了解的童靴们可能都了解,大模型也不是生来什么领域的知识都懂的。需要给它喂数据,不断训练。

企业要想用大模型高效利用数据,把企业数据给大模型,那肯定是不可能的。

这个时候大模型本地部署,私有数据自己管控就是必要条件了。恰恰langchain就解决了这个问题。

langchain-GLM版本0.1.* 和0.2.*区别

  1. 安装方式:0.1.* 既支持docker方式部署,也支持本地加载模型,0.2.*版本目前仅支持从本地加载模型方式部署;
  2. 功能上:0.2.*版本支持LLM 更加全面。既包含在线开源大模型,也支持本地模型。

硬件、软件配置以及私有化部署方式

硬件配置要求:

  • python >=3.10 

第一种:安装0,1.*版本【建议使用docker方式部署】:

1.运行环境安装

sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit-base
sudo systemctl daemon-reload 
sudo systemctl restart docker

2.查看GPU编号,命令:nvidia-smi

 

3.安装langchain-chatchat镜像

#方式1
docker run -d -p 80:7860 --gpus all registry.cn-beijing.aliyuncs.com/isafetech/chatmydata:1.0#参数解释:
--gpus all  指定给该设备所有可用的GPU
--gpus '"device=1"'  指定设备编号为1的GPU#方式2
git clone -b 0.1.17 --single-branch https://github.com/chatchat-space/Langchain-Chatchat.gitdocker build -f Dockerfile-cuda -t chatglm-cuda:latest .
docker run --gpus all -d --name chatglm -p 7860:7860  chatglm-cuda:latest#若要使用离线模型,请配置好模型路径,然后此repo挂载到Container
docker run --gpus all -d --name chatglm -p 7860:7860 -v ~/github/langchain-ChatGLM:/chatGLM  chatglm-cuda:latest

3.查看启动日志

docker logs 容器ID

 4.启用后台服务

docker exec -it 容器ID /bin/bash#命令行服务
python cli_demo.py#接口服务
python api.py#web服务
python webui.py

第二种部署方式:

  1. 下载并安装anaconda。为什么要安装anaconda?【见本文-常见问题2】
    wget https://repo.anaconda.com/archive/Anaconda3-2023.03-1-Linux-x86_64.sh
    bash Anaconda3-2023.03-1-Linux-x86_64.shconda create -n ai python=3.11  #创建虚拟环境
    conda activate ai  #激活虚拟环境
    conda list  #查看已安装的包
    conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia #安装依赖包
  2. 下载源码,安装依赖
    
    # 拉取仓库
    $ 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 中相应依赖取消注释再安装。
  3. 下载模型
    $ git lfs install$ git clone https://huggingface.co/THUDM/chatglm2-6b
    $ git clone https://huggingface.co/moka-ai/m3e-base###建议:上面地址下载慢的话,访问https://e.aliendao.cn/,搜索 chatglm2-6b和m3e-base,然后按照下面方式下载git clone https://github.com/git-cloner/aliendao
    cd aliendao
    pip install -r requirements.txt -i https://pypi.mirrors.ustc.edu.cn/simple --trusted-host=pypi.mirrors.ustc.edu.cnpython model_download.py --e --repo_id  模型ID
  4. 初始化配置模型
    $ python copy_config_example.py
  5. 修改配置文件,找到配置文件(路径:/configs/model_config.py),修改模型加载路径。
    # 如果模型目录名称和 MODEL_PATH 中的 key 或 value 相同,程序会自动检测加载,无需修改 MODEL_PATH 中的路径。
    MODEL_ROOT_PATH = "/usr/local/"#配置LLM线上模型参数
    ONLINE_LLM_MODEL = {
    }#配置本地模型参数,模型的相对路径,相对 MODEL_ROOT_PATH 所配置的路径
    MODEL_PATH = {
    "embed_model":{
    "m3e-base": "moka-ai/m3e-base"
    }, 
    "llm_model":{
    "chatglm2-6b": "THUDM/chatglm2-6b",
    }#### 
    #注意:线上模型和本地模型只需要配置一个即可。

  6. 初始化数据库
    python init_database.py --recreate-vs
  7. 一键启动
    python startup.py -a

选择适合你的方式安装即可。 

常见问题

部署方式一常见问题:

1、docker: Error response from daemon: could not select device driver “” with capabilities: [[gpu]].或者 apt-get install -y nvidia-container-toolkit找不到或者下载失败

解决方案:

curl -s -L https://nvidia.github.io/nvidia-docker/gpgkeyapt-key add gpgkeycurl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.listapt-get update && apt-get install -y nvidia-container-toolkit
systemctl restart docker

2、为什么要使用anaconda?

       anaconda是什么?

        Anaconda是Python的一个发行版本,专注于数据分析,能够对包和环境进行管理。它内置了conda、pip等管理工具,以及Jupyter Notebook、Spyder等开发工具

  • 避免已安装但是不满足运行大模型的python版本受影响;
  • 隔离python运行环境和依赖;
  • anaconda的基本操作
    conda env list  #查看已有的环境
    conda create -n ai python=3.11  #创建虚拟环境
    conda activate ai  #激活虚拟环境
    conda list  #查看已安装的包
    conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia #安装依赖包conda deactivate #退出虚拟环境

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/188048.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【AIOps】一种全新的日志异常检测评估框架:LightAD,相关成果已被软工顶会ICSE 2024录用

深度学习(DL)虽然在日志异常检测中得到了不少应用,但在实际轻量级运维模型选择中,必须仔细考虑异常检测方法与计算成本的关系。具体来说,尽管深度学习方法在日志异常检测方面取得了出色的性能,但它们通常需…

【Linux】awk 使用

awk 输出 // 打印所有列 $ awk {print $0} file // 打印第一列 $ awk {print $1} file // 打印第一和第三列 $ awk {print $1, $3} file // 打印第三列和第一列,注意先后顺序 $ cat file | awk {print $3, $1} …

探索数据之美:深入学习Plotly库的强大可视化

1. 引言: Plotly 是一个交互性可视化库,可以用于创建各种漂亮的图表和仪表板。它支持多种编程语言,包括Python、R、JavaScript。在Python中,Plotly提供了Plotly Express和Graph Objects两个主要的绘图接口。 2. Plotly库简介&am…

音乐播放器Swinsian mac功能介绍

Swinsian mac是一款音乐播放器,它的特点是轻量级、快速、易用。Swinsian支持多种音频格式,包括MP3、AAC、FLAC、WAV等。它还具有iTunes集成功能,可以自动导入iTunes音乐库中的音乐,并支持智能播放列表、标签编辑、自定义快捷键等功…

STM32Cube高效开发教程<基础篇>(十)----USART/UART通信

声明:本人水平有限,博客可能存在部分错误的地方,请广大读者谅解并向本人反馈错误。    本专栏博客参考《STM32Cube高效开发教程(基础篇)》,有意向的读者可以购买正版书籍进行学习,本书籍由王维波老师、鄢志丹老师、王钊老师倾力打造,书籍内容干货满满。 一、 功能概述…

Linux shell for jar test

Linux shell 脚本,循环解析命令行传入的所有参数,并按照不同的传参实现对不同的 java jar文件 进行测试执行。 [rootlocalhost demo]# cat connTest.sh #!/bin/bash# Linux shell for qftool java jar test# modes DEFAULT_MODE2jarfiles[1]common-1.0…

OpenAI公布CEO和董事会成员:微软加入,Ilya出局

11月30日,OpenAI在官网公布了新一届领导层和初始董事会成员:Sam Altman重新担任CEO,Mira Murati继续担任首席技术官,Greg Brockman继续担任总裁。 新的董事会成员包括:Bret Taylor(主席)、Larr…

docker部署elasticsearch+kibana+head

前言 最近,项目需要使用elasticsearch,所以就想快速安装一个使用,最开始是docker安装了7.10.1版本。 后面计划使用Java开发,发现有 RestHighLevelClient 和 Elasticsearch Java API Client两种客户端连接方式。 然后网上查阅了一…

深入剖析:知识付费系统源码解读与技术实现

知识付费系统源码是构建一个高效、稳定平台的关键。在本文中,我们将深入解析知识付费系统的源码,同时提供一些关键技术代码,以助你更好地理解和实现这一系统。 1. 知识付费系统的基本结构 首先,让我们看一下知识付费系统的基本…

共享娱乐宝库:电视盒子影视源分享攻略

共享娱乐宝库:电视盒子影视源分享攻略 前言电视盒子的基本原理解析1. **硬件组成**:2. **操作系统:**3. **网络连接:**4. **应用市场和应用:**5. **获取影视资源的方式:**6. **用户交互:**7. **…

linux 中vmalloc实现简述

vmalloc 用途 vmalloc只用于内核模块的逻辑地址分配,也就是说它的逻辑地址是挂在init_mm的pgd页表上的。它可将几段不连续物理区域合并分配一个连续逻辑区域。主要用于内核和驱动。 vmalloc 实现 入口在__vmalloc_node_range。 首先分配一个vm_struct&#xff0c…

论文学习-Bert 和GPT 有什么区别?

Foundation Models, Transformers, BERT and GPT 总结一下: Bert 是学习向量表征,让句子中某个词的Embedding关联到句子中其他重要词。最终学习下来,就是词向量的表征。这也是为什么Bert很容易用到下游任务,在做下游任务的时候&a…

经验分享:JMeter控制RPS

一、前言 ​ RPS (Request Per Second)一般用来衡量服务端的吞吐量,相比于并发模式,更适合用来摸底服务端的性能。我们可以通过使用 JMeter 的常数吞吐量定时器来限制每个线程的RPS。对于RPS,我们可以把他理解为我们的TPS,我们就…

C语言猜数字小游戏

本文将介绍如何使用C语言写一个猜数字的小游戏 具体代码如下&#xff1a; #include<stdio.h> #include<stdlib.h> #include<time.h>// 显示游戏菜单 void menu() {printf("**** 猜数字游戏! ****\n");printf("**** 按1开始游戏 ****\…

数组?NO 系Vector啊!

文章目录 前言一、vector的介绍二、vector的使用2.1 vector求容量的用法2.2 vector的增删查改用法2.2.1 尾插2.2.2 尾删2.2.3 头插2.2.4 任意位置删除 2.3 vector的iterator是什么以及失效问题 三、vector的模拟实现3.1 成员变量3.2 成员函数3.2.1 构造函数3.2.2 拷贝构造3.2.3…

Elasticsearch桶聚合和管道聚合

1. 根据名称统计数量 GET order/_search {"_source": false,"aggs": {"aggs_name": { // 自定义查询结果名称"terms": { // 使用的函数"field": "name.keyword"}}} }查询结果例子&#xff1a; "aggregat…

一起学docker系列之十五深入了解 Docker Network:构建容器间通信的桥梁

目录 1 前言2 什么是 Docker Network3 Docker Network 的不同模式3.1 桥接模式&#xff08;Bridge&#xff09;3.2 Host 模式3.3 无网络模式&#xff08;None&#xff09;3.4 容器模式&#xff08;Container&#xff09; 4 Docker Network 命令及用法4.1 docker network ls4.2 …

MSSQL注入

目录 基本的UNION注入&#xff1a; 错误基于的注入&#xff1a; 时间基于的盲注入&#xff1a; 堆叠查询&#xff1a; 理解MSSQL注入是学习网络安全的一部分&#xff0c;前提是您在合法、授权的环境中进行&#xff0c;用于了解如何保护您的应用程序免受此类攻击。以下是有关…

【linux】/etc/security/limits.conf配置文件详解、为什么限制、常见限制查看操作

文章目录 一. limits.conf常见配置项详解二. 文件描述符&#xff08;file descriptor&#xff09;简述三. 为什么限制四. 相关操作1. 展示当前资源限制2. 查看系统当前打开的文件描述符数量3. 查看某个进程打开的文件描述符数量4. 各进程占用的文件描述符 /etc/security/limits…

大势智慧与四川资源测绘签署战略合作协议

战略合作 11月27日上午&#xff0c;武汉大势智慧科技有限公司&#xff08;后简称“大势智慧”&#xff09;和四川省自然资源测绘地理信息有限责任公司&#xff08;后简称“测绘公司”&#xff09;在成都成功签订战略合作协议&#xff0c;大势智慧董事长黄先锋&#xff0c;测绘…