AI-基于Langchain-Chatchat和chatglm3-6b部署私有本地知识库

目录

  • 参考
  • 概述
  • 部署安装
    • 环境准备
    • 原理和流程图
    • 一键启动
    • 启动WebAPI 服务
    • 启动WebUI服务
  • Docker部署
  • 知识库管理
  • 常见问题
    • 本地知识库怎么微调?回答不准确

参考

手把手教你搭建本地知识库问答AI机器人
LangChain-Chatchat:基于LangChain和ChatGLM2-6B构建本地离线私有化知识库
在家庭私有云上部署体验语言模型chatglm3-6b,打造私人助理

概述

自从去年GPT模型火爆以来,降低了很多个人和企业进入人工智能领域的门槛,对于大模型尤其是开源的大模型国内应该比较受关注和期待,毕竟高额的成本也能将不少人阻挡在门外,其次,大家都希望在产品中集成LLM的能力,结合业务来落地智能化应用,提升产品的竞争力,最直接的应用就是构建知识库。

下面汇总了一下之前介绍的有关构建知识库相关的文章和视频,包含了开源和闭源多种不同的解决方案,从使用情况来看,因为都是开源产品,所以在架构和功能完整性上可能都不够全面,因为一直在持续的迭代过程。

如果是站在一个中小企业的角度,去选型一款比较符合企业构建本地知识库需求的产品来评估,从以下介绍的开源产品目前的实现效果和未来规划目标来看,个人觉得Quivr从设计上来讲更加符合应用需求,前提是增加企业已有文档库、数据库纳入知识库的能力,扩展Danswer提高的功能,完善并丰富对于开源或者闭源模型的支持(目前暂时支持较弱)尤其是对于中文支持不错的国产模型比如ChatGLM2等,另外一种方案就是今天介绍的LangChain-Chatchat刚好可以与Quivr互补,其对于模型的支持很丰富,但对于业务端的属性支持较弱,只支持单个用户单个知识库,不能建立多个知识库通过权限来隔离。

部署安装

环境准备

我使用的硬件和模型信息:

显卡:一块英伟达的A6000

LLM:开源的chatglm3-6b

向量模型:开源的jina-embedding-l-en-v1

向量数据库:开源的milvus

原理和流程图

在这里插入图片描述

一键启动

一键启动聊天机器人
安装完成,输入以下命令启动

$ python startup.py -a

看到下面画面后,表示正常启动了
在这里插入图片描述

启动WebAPI 服务

在线调用API服务的情况下,直接执执行 server/api.py 脚本启动 API 服务;

python server/api.py

启动 API 服务后,可访问 localhost:7861 或 {API 所在服务器 IP}:7861 FastAPI 自动生成的 docs 进行接口查看与测试。

FastAPI docs 界面
在这里插入图片描述

启动WebUI服务

在浏览器输入聊天机器人地址:http://127.0.0.1:8561
在这里插入图片描述

Docker部署

如果想快速部署 LangChain-Chatchat 产品来体验,可以选择Docker一键部署的方式,比较简单,只需要先安装Docker 容器,在Unbuntu环境中如何安装 Docker & Docker Compose,可以参考文章 《Quivr 基于GPT和开源LLMs构建本地知识库 (更新篇)》中的3.2节。这里不过多赘述。 Windows安装Docker更简单。

Docker镜像使用的版本一般会稍微滞后一些,如果想快速体验最新的版本按前面开发模式部署会更合适一点。

LangChain-Chatchat项目使用的 Docker 镜像地址是:

http://registry.cn-beijing.aliyuncs.com/chatchat/chatchat:0.2.0

docker run -d --gpus all -p 80:8501 registry.cn-beijing.aliyuncs.com/chatchat/chatchat:0.2.0
  • 该版本镜像大小 33.9GB,使用 v0.2.0,以 nvidia/cuda:12.1.1-cudnn8-devel-ubuntu22.04 为基础镜像
  • 该版本内置一个 embedding 模型:m3e-large,内置 chatglm2-6b-32k
  • 该版本目标为方便一键部署使用,请确保您已经在Linux发行版上安装了NVIDIA驱动程序
  • 请注意,您不需要在主机系统上安装CUDA工具包,但需要安装 NVIDIA Driver 以及 NVIDIA Container Toolkit,请参考安装指南
  • 首次拉取和启动均需要一定时间,首次启动时请参照下图使用 docker logs -f 查看日志
  • 如遇到启动过程卡在 Waiting… 步骤,建议使用 docker exec -it bash 进入 /logs/ 目录查看对应阶段日志

知识库管理

切换到知识库管理后,可以查看和删除已创建知识库、新增知识库,也可以对知识库进行文件增减。
在这里插入图片描述

新建知识库:点击“新建知识库”,输入知识库名称和简介,选择向量数据库和模型,再点击新建即可。

在这里插入图片描述

上传文件到知识库:选择已创建知识库,选择上传文件,点击“添加文件到知识库”

在这里插入图片描述

创建好知识库后,可以切换菜单到“对话”,选择对话模式为“知识库问答”,并选择要对话的知识库,即可开启和特定知识库聊天。

常见问题

本地知识库怎么微调?回答不准确

知识库不用微调,不准确需要分析定位原因,是数据本身问题还是ai问题,ai层面可以考虑增加问题改写步骤(看我前两天分享),换更好的大模型,向量切分方面的优化等

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【小笔记】时序数据分类算法最新小结

2024.1.15 最近基于时序数据训练分类算法,对其进行了一番了解,主要围绕以下几点: 时序数据算法有哪些细分类?时序数据分类算法经典模型?当下时序分类算法模型强baseline?有没有现成的工具? 1…

Python - 深夜数据结构与算法之 位运算

目录 一.引言 二.位运算简介 1.二进制与十进制 2.左/右移 3.位运算 4.异或 XOR 5.指定位置的位运算 6.实战要点 三.经典算法实战 1.Number-1-of-bits [191] 2.Power-Of-Two [231] 3.Reverse-2-Bits [190] 4.N-Queens [51] 四.总结 一.引言 通常情况下我们计数采…

RequestResponse

1.Request 请求 作用:使用Request对象来获取请求数据 1.Request获取请求数据的方法 2.通用方式获取请求参数 3.POST请求参数中文乱码解决 4.请求转发 概念: 一种在服务器内部的资源跳转方式 2.Response 响应 作用:使用response对象设置响应数据 1.Response设置响应数据功能 …

【Emgu.CV教程】5.3、几何变换之金字塔变换

这一段文字描述来自百度百科: 图像金字塔是图像多尺度表达的一种,是一种以多分辨率来解释图像的有效但概念简单的结构。一幅图像的图像金字塔是一系列以金字塔形状(自下而上)逐步降低,且来源于同一张原始图的图像分辨率…

OpenCV-25sobel算子(索贝尔算子)

前面所提到的滤波都是用于降噪的,去掉噪声,而算子是用来找边界,来识别图像的边缘。 一、概念 边缘是像素值发生跃迁的值,是图像的显著特点之一,在图像特征提取,对象检测,模式识别等方面都有重…

数据结构与算法教程,数据结构C语言版教程!(第四部分、字符串,数据结构中的串存储结构)二

第四部分、字符串,数据结构中的串存储结构 串存储结构,也就是存储字符串的数据结构。 很明显,字符串之间的逻辑关系也是“一对一”,用线性表的思维不难想出,串存储结构也有顺序存储和链式存储。 提到字符串&#xff…

Java 日志体系泣血总结

目录 一. 前言 二. Log 日志体系 2.1. 背景/发展史 2.2. 关系/依赖 2.2.1. JCL(Jakarta Commons Logging) 2.2.2. SLF4J 2.2.3. SLF4J 的适配 2.2.4. Spring 统一输出 三. 总结 一. 前言 本文的目的是搞清楚 Java 中各种日志 Log 之间是怎样的关…

spring boot mybatis-plus dynamic-datasource 配置文件 相关依赖环境配置

spring boot mybatis-plus dynamic-datasource 配置文件 相关依赖环境配置 ##yaml配置 server:port: 8866servlet:context-path: /yymtomcat:max-threads: 300connection-timeout: 57000max-connections: 500connection-timeout: 57000 spring:datasource:dynamic:primary: m…

MyBatis 查询数据库

一. MyBatis 框架的搭建 本篇所用sql 表: drop table if exists userinfo; create table userinfo(id int primary key auto_increment,username varchar(100) not null,password varchar(32) not null,photo varchar(500) default ,createtime timestamp default current_tim…

SpringBoot 全局异常统一处理:BindException(绑定异常)

概述 在Spring Boot应用中,数据绑定是一个至关重要的环节,它负责将HTTP请求中的参数映射到控制器方法的入参对象上。在这个过程中如果遇到任何问题,如参数缺失、类型不匹配或验证失败等,Spring MVC将会抛出一个org.springframewo…

Hive 数据迁移

一、需求 同步集团的数据到断直连环境。 二、思路 三、同步数据(方案) 1、环境:断直连模拟环境 2、操作机器:ETL 机器 XX.14.36.216 3、工作路径:cd /usr/local/fqlhadoop/hadoop/bin 4、执行命令: 命令…

python 元组的详细用法

当前版本: Python 3.8.4 文章目录如下 1. 介绍元组 2. 定义元组 3. 访问元组 4. 查询元组 1. 介绍元组 元组(Tuple)是一个有序的、不可变的数据序列。它可以包含各种类型的数据,例如数字、字符串、列表等。元组使用圆括号()来…

书生·浦语大模型实战营第四节课笔记及作业

XTuner 大模型单卡低成本微调实战 1 Finetune简介 大语言模型LLM是在海量的文本内容基础上,以无监督或半监督方式进行训练的。海量的文本内容赋予了大模型各种各样的行业知识。但是如果直接把大模型的知识用于生产实践,会发现回答不大满意。微调的目的…

【RL】(task1)绪论、马尔科夫过程、动态规划、DQN(更新中)

note 文章目录 note一、马尔科夫过程二、动态规划DQN算法时间安排Reference 一、马尔科夫过程 递归结构形式的贝尔曼方程计算给定状态下的预期回报,这样的方式使得用逐步迭代的方法就能逼近真实的状态/行动值。 有了Bellman equation就可以计算价值函数了马尔科夫过…

微服务架构设计核心理论:掌握微服务设计精髓

文章目录 一、微服务与服务治理1、概述2、Two Pizza原则和微服务团队3、主链路规划4、服务治理和微服务生命周期5、微服务架构的网络层搭建6、微服务架构的部署结构7、面试题 二、配置中心1、为什么要配置中心2、配置中心高可用思考 三、服务监控1、业务埋点的技术选型2、用户行…

Burp Suite如何拦截站点请求

Burp Suite是一款强大的Web渗透测试工具,可以用于拦截、修改和分析Web应用程序的请求和响应。要使用Burp Suite拦截站点请求有两个方案。我会倾向选用方案二,因为它不会影响本地电脑代理配置。 1. 方案一 安装Burp Suite:首先,您…

【C语言】ipoib驱动 - ipoib_cm_post_receive_nonsrq_rss函数

一、ipoib_cm_post_receive_nonsrq_rss函数定义 static int ipoib_cm_post_receive_nonsrq_rss(struct net_device *dev,struct ipoib_cm_rx *rx, int id) {struct ipoib_dev_priv *priv ipoib_priv(dev);struct ipoib_recv_ring *recv_ring priv->recv_ring rx->ind…

提升开发效率的google插件

在如今的软件开发领域,Google Chrome浏览器的开发者插件扮演着至关重要的角色,为开发人员提供了丰富的工具和功能,从而提高了开发效率。下面介绍几款强大的 Google 插件,它们在不同方面为开发者提供了便利,并能显著提升…

力扣每日一题--2088. 统计农场中肥沃金字塔的数目

看到这道题有些人很容易放弃,其实这道题不是很难,主要是题目长,读的容易让人放弃,但是 只要抓住一些性质就可以解决该问题。 本题中的定义放到图像里其实就是个金字塔,下层的那部分比上一层的那部分,长度加…

51单片机HC-SR04超声波测距lcd1602显示(程序+ad硬件设计+文档说明)

本帖主控使用STC89C52单片机,超声波测距采用HC-SR04模块,包含ad硬件设计和文档。 测距原理 超声波测距是通过不断检测超声波发射后遇到障碍物所反射的回波,从而测出发射和接收回波的时间差t,然后求出距SCt/2,式中的C为超声波波速。由于超声…