基于 Langchain-Chatchat,我搭建了一个本地知识库问答系统

news2024/11/27 18:28:46

图片

文章目录

    • 一、LangChain-Chatchat
    • 二、搭建步骤
      • 2.1 环境配置
      • 2.2 模型下载
      • 2.3 初始化知识库和配置文件
      • 2.4 一键启动
      • 2.5 启动界面示例
    • 技术交流群
    • 用通俗易懂方式讲解系列

一、LangChain-Chatchat

基于 ChatGLM 等大语言模型与 Langchain 等应用框架实现,开源、可离线部署的检索增强生成(RAG)大模型知识库项目。

喜欢本文记得收藏、关注、点赞,文末可以参与我们的技术讨论

✅ 依托于本项目支持的开源 LLM 与 Embedding 模型,本项目可实现全部使用开源模型离线私有部署。与此同时,本项目也支持 OpenAI GPT API 的调用,并将在后续持续扩充对各类模型及模型 API 的接入。

本项目实现原理如下图所示,过程包括 加载文件 -> 读取文本 -> 文本分割 -> 文本向量化 -> 问句向量化 -> 在文本向量中匹配出与问句向量最相似的 top k个 -> 匹配出的文本作为上下文和问题一起添加到 prompt中 -> 提交给 LLM生成回答。

图片

从文档处理角度来看,实现流程如下:

图片

二、搭建步骤

2.1 环境配置

强烈推荐使用 Python3.11, 创建一个虚拟环境,并在虚拟环境内安装项目的依赖。需要注意电脑显存要大于12G, 不然该项目跑不动。

# 拉取仓库
$ 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.2 模型下载

如需在本地或离线环境下运行本项目,需要首先将项目所需的模型下载至本地,通常开源 LLM 与 Embedding 模型可以从 HuggingFace 下载。

以本项目中默认使用的 LLM 模型 THUDM/ChatGLM3-6B 与 Embedding 模型 BAAI/bge-large-zh 为例:

下载模型需要先安装 Git LFS ,然后运行

$ git lfs install
$ git clone https://huggingface.co/THUDM/chatglm3-6b
$ git clone https://huggingface.co/BAAI/bge-large-zh

2.3 初始化知识库和配置文件

按照下列方式初始化自己的知识库和简单的复制配置文件

$ python copy_config_example.py
$ python init_database.py --recreate-vs

2.4 一键启动

按照以下命令启动项目

$ python startup.py -a

2.5 启动界面示例

如果正常启动,你将能看到以下界面

图片

图片

技术交流群

前沿技术资讯、算法交流、求职内推、算法竞赛、面试交流(校招、社招、实习)等、与 10000+来自港科大、北大、清华、中科院、CMU、腾讯、百度等名校名企开发者互动交流~

我们建了大模型面试与技术交流群, 想要进交流群、需要源码&资料、提升技术的同学,可以直接加微信号:mlc2060。加的时候备注一下:研究方向 +学校/公司+CSDN,即可。然后就可以拉你进群了。

方式①、微信搜索公众号:机器学习社区,后台回复:加群
方式②、添加微信号:mlc2060,备注:技术交流

资料1
在这里插入图片描述

用通俗易懂方式讲解系列

  • 用通俗易懂的方式讲解:自然语言处理初学者指南(附1000页的PPT讲解)
  • 用通俗易懂的方式讲解:NLP 这样学习才是正确路线
  • 用通俗易懂的方式讲解:28张图全解深度学习知识!
  • 用通俗易懂的方式讲解:不用再找了,这就是 NLP 方向最全面试题库
  • 用通俗易懂的方式讲解:实体关系抽取入门教程
  • 用通俗易懂的方式讲解:灵魂 20 问帮你彻底搞定Transformer
  • 用通俗易懂的方式讲解:图解 Transformer 架构
  • 用通俗易懂的方式讲解:大模型算法面经指南(附答案)
  • 用通俗易懂的方式讲解:十分钟部署清华 ChatGLM-6B,实测效果超预期
  • 用通俗易懂的方式讲解:内容讲解+代码案例,轻松掌握大模型应用框架 LangChain
  • 用通俗易懂的方式讲解:如何用大语言模型构建一个知识问答系统
  • 用通俗易懂的方式讲解:最全的大模型 RAG 技术概览
  • 用通俗易懂的方式讲解:利用 LangChain 和 Neo4j 向量索引,构建一个RAG应用程序
  • 用通俗易懂的方式讲解:使用 Neo4j 和 LangChain 集成非结构化知识图增强 QA
  • 用通俗易懂的方式讲解:面了 5 家知名企业的NLP算法岗(大模型方向),被考倒了。。。。。

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

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

相关文章

图像异或加密、解密的实现

很多论文提到了从左上角开始做异或,逐行推导得到结果。 解密过程是加密的逆过程。 先看其基本方法: 参考文献: A Chaotic System Based Image Encryption Scheme with Identical Encryption and Decryption Algorithm 大多数论文都用了这个思路,我们使用MATLAB实现代码…

永久删除 Elasticsearch 中的主节点

Elasticsearch 是一个开源分布式搜索和分析引擎,用于各种任务,例如全文搜索、日志分析和实时数据分析。 Elasticsearch 集群由一个或多个节点组成,每个节点可以具有多种角色,包括主节点(master node)、数据…

【JaveWeb教程】(37)SpringBootWeb案例之《智能学习辅助系统》的详细实现步骤与代码示例(10)JWT令牌技术讲解

目录 SpringBootWeb案例10 JWT令牌2.3 JWT令牌2.3.1 介绍2.3.2 生成和校验2.3.3 登录下发令牌 SpringBootWeb案例10 JWT令牌 2.3 JWT令牌 前面我们介绍了基于令牌技术来实现会话追踪。这里所提到的令牌就是用户身份的标识,其本质就是一个字符串。令牌的形式有很多…

【vim 学习系列文章 3.2 -- vim 删除 空格】

文章目录 vim 删除行尾空格 vim 删除行尾空格 在代码开发的过程中&#xff0c;经常会遇到行尾有空格的现象&#xff0c;如下&#xff1a; 我们可以在 .vimrc 中通过map 命令来映射删除行尾空格的快捷键&#xff0c;如下&#xff1a; map d<space> :%s/\s*$//g <cr…

C++初阶 类和对象(补充)

目录 一、友元 1.1什么是友元&#xff1f; 1.2如何使用友元&#xff1f; 1.3使用友元 1.4使用友元注意事项 二、初始化列表 2.1什么是初始化列表? 2.2为什么要有初始化列表&#xff1f; 2.3使用初始化列表 2.4注意事项 一、友元 1.1什么是友元&#xff1f; 友元是一…

前端使用cache storage实现远程图片缓存

Cache Storage 的主要特点和用途 缓存网络资源&#xff1a;可以将经常访问的网络资源缓存到 Cache Storage 中&#xff0c;以提高网页加载速度&#xff0c;减少网络请求。离线访问&#xff1a;当用户处于离线状态时&#xff0c;可以使用 Cache Storage 中的缓存资源来加载网页…

2024程序员的未来方向如何走?还看今朝

这几年的IT行业想必大家已经感受到了&#xff0c;Android、Java、前端等等程序员都经历了大厂裁员、小厂倒闭、找不到工作、毕业即失业的情况。大量失业是必然的&#xff0c;因为互联网公司都逐渐走向统一标准化&#xff0c;只剩下头部的一些大厂&#xff0c;所以市场需求少了。…

C++ QT入门2——记事本功能实现与优化(事件处理+基本控件)

C QT入门2——记事本功能优化&#xff08;事件处理基本控件&#xff09; 一、记事本功能优化编码乱码问题QComboBox下拉控件QString、string、char * 间的数据转化编码问题解决整合 光标行列值显示记事本打开窗口标题关闭按钮优化—弹窗提示快捷键设计 二、☆ QT事件处理事件处…

Common Mistakes in German

Comman Mistakes in German 1, Haus oder Hause2, ja nein oder doch(1) Positive Fragen(2) Negative Fragen 1, Haus oder Hause 2, ja nein oder doch (1) Positive Fragen (2) Negative Fragen kein / nicht P3

docker集成 nacos/nacos-server (包括踩的坑)

tips 这边需要的数据库我已经安装好了&#xff0c;所以数据库的安装这边已经省略了 拉取镜像&#xff08;这边使用nacos1.4.1作为例子&#xff09; docker pull nacos/nacos-server:1.4.1创建映射的文件夹 (conf存放配置文件&#xff0c;logs存放日志文件) mkdir -p /data/n…

202415读书笔记|《鲸鱼安慰了大海》——我不知道你爱不爱我 湖水想被青山拥在怀里

202415读书笔记|《鲸鱼安慰了大海》——我不知道你爱不爱我 湖水想被青山拥在怀里 辑一 我们一起站在山坡上开花辑二 野花唱歌给自己听辑三 星空给我留了位置后记 《鲸鱼安慰了大海》作者燕七&#xff0c;是在一个关注的友友那里知道的这本书&#xff0c;决定读下去&#xff0c…

IDEA如何进行远程Debug调试

背景&#xff1a; 使用docker进行CVE漏洞复现的时候&#xff0c;由于只能黑盒进行复现&#xff0c;并不能知道为什么会产生这个漏洞&#xff0c;以及漏洞的POC为什么要这么写&#xff0c;之前我都是通过本地debug来进行源码分析&#xff0c;后来搜了一下&#xff0c;发现可以进…

林浩然的“微分剑法”大显神威

林浩然的“微分剑法”大显神威 Lin Haoran’s Mighty “Differential Sword Technique” 在数学王国的一隅&#xff0c;有一位名叫林浩然的智者&#xff0c;他以其独特的“微分剑法”名震江湖。这门源自微积分的绝世武学&#xff0c;让他成功解决了瞬时速度难题和曲线切线问题&…

解决:ModuleNotFoundError: No module named ‘torchvision’

解决&#xff1a;ModuleNotFoundError: No module named ‘torchvision’ 文章目录 解决&#xff1a;ModuleNotFoundError: No module named torchvision背景报错问题报错翻译报错位置代码报错原因解决方法方法一&#xff0c;直接安装方法二&#xff0c;手动下载安装方法三&…

一文详解docker swarm

文章目录 1、简介1.1、涉及到哪些概念&#xff1f;1.2、需要注意什么&#xff1f; 2、集群管理2.1、创建集群2.2、将节点加入集群2.3、查看集群状态。2.4、将节点从集群中移除2.5、更新集群2.6、锁定/解锁集群 3、节点管理4、服务部署4.1、准备4.2、服务管理4.2.1、常用命令4.2…

OSPF排错

目录 实验拓扑图 实验要求 实验排错 故障一 故障现象 故障分析 故障解决 故障二 故障现象 故障分析 故障解决 故障三 故障现象 故障分析 故障解决 故障四 故障现象 故障分析 故障解决 故障五 故障现象 故障分析 故障解决 故障六 故障现象 故障分析 …

为 Spring Boot 项目配置 Logback 日志

关于 Logback 日志系统是一个线上项目必备的素质之一&#xff0c;代表性的日志框架 Log4j、SLF4J、Logback 这哥仨竟然是亲兄弟&#xff0c;他们有一个亲爹&#xff0c;那就是巨佬 Ceki Gulcu。 由于 Spring Boot 的默认日志框架选用的 Logback&#xff0c;再加上 Log4j2 之前…

[网络安全 渗透实验 01]基于MSF框架渗透攻击Win7主机系统的设计与实现

基于MSF框架渗透攻击Win7主机系统的设计与实现 文章目录 基于MSF框架渗透攻击Win7主机系统的设计与实现[Warning] 写在前面1. 实验要求2. 实验环境搭建2.1 攻击机&#xff08;Linux kali&#xff09;的下载与安装2.2 靶机&#xff08;Windows 7 Enterprise with Service Pack 1…

AI赋能—EasyCVR视频融合平台为春节人员流动保驾护航

春节期间&#xff0c;如景区、商场、车站等公共场所的人流量激增&#xff0c;人员密集度大。在此情况下&#xff0c;监控客流量可以及时发现人群聚集、过度拥挤等安全隐患&#xff0c;防止发生安全事故。通过实时监测和分析客流量数据&#xff0c;可以及时发现安全隐患和拥堵问…

MySQL 可重复读隔离级别,完全解决幻读了吗?

文章目录 前言一、什么是幻读&#xff1f;二、快照读是如何避免幻读的&#xff1f;三、当前读是如何避免幻读的&#xff1f;四、幻读被完全解决了吗&#xff1f;场景1场景2 总结 前言 MySQL InnoDB 引擎的默认隔离级别虽然是「可重复读」&#xff0c;但是它很大程度上避免幻读…