基于Langchain-chatchat搭建本地智能知识问答系统

基于Langchain-chatchat搭建本地智能

  • 搭建本地智能知识问答系统:基于Langchain-chatchat的实践指南
    • 引言
    • 项目概述
    • 环境安装
      • Anaconda
      • pip
    • 项目安装步骤
    • 大语言模型(LLM)的重要性
    • 结语


搭建本地智能知识问答系统:基于Langchain-chatchat的实践指南

引言

在数字化时代,企业对知识管理的需求日益增长。本地化的知识问答系统不仅能提升数据安全性,还能实现私域化部署,满足企业对数据保密和快速响应的需求。本文将介绍如何基于Langchain-chatchat搭建一个本地智能知识问答系统。

项目概述

基于 ChatGLM 等大语言模型与 Langchain 等应用框架实现,开一种利用 langchain 思想实现的基于本地知识库的问答应用,目标期望建立一套对中文场景与开源模型支持友好、可离线运行的知识库问答解决方案。
依托于本项目支持的开源 LLM 与 Embedding 模型,本项目可实现全部使用开源模型离线私有部署。与此同时,本项目也支持 OpenAI GPT API 的调用,并将在后续持续扩充对各类模型及模型API 的接入。
本项目实现原理如下图所示,过程包括加载文件 -> 读取文本 -> 文本分割 -> 文本向量化 -> 问句向量化 -> 在文本向量中匹配出与问句向量最相似的 -> 匹配出的文本作为上下文和问题一起添加打包-> 提交给LLM,最后生成回答。
强烈推荐使用 Python3.11,创建一个虚拟环境,并在虚拟环境内安装项目的依赖。需要注意电脑显存要大于12G,不然该项目跑不动。
该项目是一个可以实现完全本地化推理的知识库增强方案, 重点解决数据安全保护,私域化部署的企业痛点。本开源方案采用Apache License,可以免费使用,无需付费。

以下是搭建基于Langchain-chatchat的本地智能知识问答系统的流程图:

成功
失败
开始
环境检查
结束
是否安装Anaconda?
创建并激活Anaconda环境
安装Anaconda
检查Anaconda安装
安装pip
克隆Langchain-Chatchat仓库
安装依赖
下载模型资料包
初始化配置
启动系统
演示系统
结束

环境安装

Anaconda

Anaconda是一个流行的Python数据科学和机器学习平台,它通过提供集成的发行版和包管理器conda,简化了数据科学项目的设置和管理。Anaconda的主要功能包括包管理、环境管理、数据科学工具和库的预装以及跨平台支持。

# 创建新的环境
conda create--name环境名称
# 创建指定 Python 版本的环境
conda create--name环境名称python=版本号# 查看环境
condaenvlist
# 激活环境
conda activate 环境名称
# 删除环境
conda remove-n环境名称--all
# 安装指定包:
condainstall包名称
# 安装指定版本的包
condainstall包名称=版本号
# 安装多个包
condainstall包名称1 包名称2 包名称3 # 查看当前环境的所有包
conda list
# 卸载包
conda remove 包名称

pip

pip是一个现代的、通用的Python包管理工具,用于查找、下载、安装和卸载Python包。

# 安装库
pipinstallpackage-name
# 查看已安装的库
pip list
# 卸载库
pip uninstall package_name

项目安装步骤

  1. 通过Git克隆Langchain-Chatchat仓库。
  2. 进入目录并安装全部依赖。
  3. 使用git lfs安装模型下载资料包。
  4. 初始化配置和数据库。
# 拉取仓库
$ 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 中相应依赖取消注释再安装。
  • 模型下载:
资料包
$ git lfs install
$ git clone https://huggingface.co/THUDM/chatglm3-6b $ git clone https://huggingface.co/BAAI/bge-large-zh 初始化
$ python copy_config_example.py
$ python init_database.py --recreate-vs
$ python startup.py -a

大语言模型(LLM)的重要性

LLM是利用机器学习技术理解和生成人类语言的AI模型。它们使用基于神经网络的模型和自然语言处理(NLP)技术,能够执行文本分析、情绪分析、语言翻译和语音识别等任务。

结语

基于Langchain-chatchat搭建的本地智能知识问答系统,不仅提供了一个开源的解决方案,还通过Apache License允许免费商用,无需付费。这为企业提供了一个高效、安全且成本效益高的知识管理工具。


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

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

相关文章

记错医院预约的日期,选择加号还是回去?

记错了去医院的日期,起了个大早,用了 90 分钟才到医院,取号时提示没有预约的号,才发现记错时间了。这个时候是选择找医生加号还是直接回去呢?如果是你怎么选择? 如果选择找医生加号,号会排到最后…

STM32 ---- F1系列内核和芯片系统架构 || 存储器映像 || 寄存器映射

一,存储器映像 STM32 寻址范围:2^32 4 * 2^10 *2^10 K 4 * 2^10 M 4G 地址所访问的存储单元是按字节编址的。 0x0000 0000 ~ 0xFFFF FFFF 什么是存储器映射? 存储器本身不具有地址信息,给存储器分配地址的…

STM32单片机WDG看门狗详解

文章目录 1. WDG简介 2. IWDG框图 3. IWDG键寄存器 4. IWDG超时时间 5. WWDG框图 6. WWDG工作特性 7. WWDG超时时间 8. IWDG和WWDG对比 9. 代码示例 1. WDG简介 WDG(Watchdog)看门狗 看门狗可以监控程序的运行状态,当程序因为设计…

2024年6月24日 语法纠正

修改前的 So happy to see you again in our English Corner. Today, we have our old friend Fannie come with us and Ms. Liang is also here. Because today we use this new meeting material at first time, I arbitrarily assgin the roles according to everyone’s r…

Docker Compose--安装Nginx--方法/实例

原文网址:Docker Compose--安装Nginx--方法/实例_IT利刃出鞘的博客-CSDN博客 简介 说明 本文介绍Docker Compose如何安装Nginx。 目录结构 ├── config │ ├── cert │ │ ├── xxx_bundle.pem │ │ └── xxx.key │ ├── conf.d │ …

【ONLYOFFICE震撼8.1】ONLYOFFICE8.1版本桌面编辑器测评

随着远程工作的普及和数字化办公的发展,越来越多的人开始寻找一款具有强大功能和便捷使用的办公软件。在这个时候,ONLYOFFICE 8.1应运而生,成为了许多用户的新选择。ONLYOFFICE 8.1是一种办公套件软件,它提供了文档处理、电子表格…

jupyter中如何看plt.plot的局部细节

在Jupyter中使用matplotlib时,如果你想要放大图表的某一部分,可以使用matplotlib的交互式方式查看局部细节。 %matplotlib notebook # 在Jupyter中使用交互式后端 import matplotlib.pyplot as plt import numpy as np# 生成数据 x np.linspace(0, 10…

TiDB 资源管控的对撞测试以及最佳实践架构

作者: GreenGuan 原文来源: https://tidb.net/blog/bc405c21 引言 TiDB 是一个存算分离的架构,资源管控对这种分离的架构来说实现确实有非常大的难度,TiDB 从 7.1 版本开始引入资源管控的概念,在社区也有不少伙伴测…

STM32实现独立看门狗和窗口看门狗

文章目录 1. WDG 2. IWDG独立看门狗 2.1 main.c 3. WWDG窗口看门狗 3.1 main.c 1. WDG 对于WDG看门狗的详细解析可以看下面这篇文章: STM32单片机WDG看门狗详解-CSDN博客 看门狗可以监控程序的运行状态,当程序因为设计漏洞、硬件故障、电磁干扰等原…

论文速递 | Management Science 4月文章合集(下)

编者按 在本系列文章中,我们梳理了运筹学顶刊Management Science在2024年4月份发布有关OR/OM以及相关应用的13篇文章的基本信息,旨在帮助读者快速洞察领域新动态。本文为第二部分(2/2)。 推荐文章1 ● 题目:Social Le…

模拟面试之外卖点单系统(高频面试题目mark)

今天跟大家分享一个大家简历中常见的项目-《外卖点单系统》,这是一个很经典的项目,有很多可以考察的知识点和技能点,但大多数同学都是学期项目,没有实际落地,对面试问题准备不充分,回答时抓不到重点&#x…

SpringBoot中使用MQTT实现消息的订阅和发布

SpringBoot中使用MQTT实现消息的订阅和发布 背景 java框架SpringBoot通过mQTT通信 控制物联网设备 还是直接上代码 第一步依赖&#xff1a; <!--mqtt相关依赖--><dependency><groupId>org.springframework.integration</groupId><artifactId>s…

百度百科词条创建的前提条件

随着互联网的发展&#xff0c;人们获取信息越来越依赖于搜索引擎&#xff0c;而百度百科作为百度搜索的核心产品在百度中一般能够稳居首位&#xff0c;而且百科词条具有权威性&#xff0c;可信度比较高&#xff0c;非常适用于企业和人物的形象宣传。 最近&#xff0c;小马识途营…

JS-数组扁平化方法合集(递归,while循环,flat)

前言 数组扁平化也是面试常考题之一&#xff0c;今天就和大家简单分享一下常见的数组扁平方法。这题其实主要考察的是递归思想&#xff0c;因为当数组里面嵌套非常多层数组的时候只能通过循环递归来进行扁平。本次分享主要也是分享本题的递归思想。话不多说&#xff0c;开始分…

基于Spring Boot构建淘客返利平台

基于Spring Boot构建淘客返利平台 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天我们将讨论如何基于Spring Boot构建一个淘客返利平台。 淘客返利平台通过…

计算机网络地址划分A-E(自学)

1、网络地址组成 &#xff08;1&#xff09;物理地址MAC&#xff08;Media Access Control Address&#xff09; 网卡生产商分配&#xff0c;全球唯一&#xff0c;48/64位二进制 &#xff08;2&#xff09;逻辑地址IP(Internet Protocol) 网络层地址&#xff0c;用于在不同网…

Handling `nil` Values in `NSDictionary` in Objective-C

Handling nil Values in NSDictionary in Objective-C When working with Objective-C, particularly when dealing with data returned from a server, it’s crucial (至关重要的) to handle nil values appropriately (适当地) to prevent unexpected crashes. Here, we ex…

VBA递归过程快速组合数据

实例需求&#xff1a;数据表包含的列数不固定&#xff0c;有的列&#xff08;数量和位置不固定&#xff09;包含组合数据&#xff0c;例如C2单元格为D,P&#xff0c;说明Unit Config有两种分别为D和P&#xff0c;如下图所示。 现在需要将所有的组合罗列出来&#xff0c;如下所示…

git上传本地项目及更新项目

1、注册GitHub账号和下载git 2、在GitHub上新建一个仓库&#xff0c;点击号——>New repository&#xff0c;给仓库起一个名字&#xff0c;点击Create repository 3、进入要上传的项目中&#xff0c;右键点击git back here&#xff0c;命令行输入git init初始化&#xff0c…

19、复杂链表的复制?、 二叉搜索树与双向链表

题目&#xff1a; 复杂链表的复制&#xff1f; 描述&#xff1a; 输入一个复杂链表&#xff08;每个节点中有节点值&#xff0c;以及两个指针&#xff0c;一个指向下一个节点&#xff0c; 另一个特殊指针指向任意一个节点&#xff09;&#xff0c;返回结果为复制后复杂链表的h…