基于 InternLM 和 LangChain 搭建你的知识库

news2024/11/21 0:33:28

基于 InternLM 和 LangChain 搭建你的知识库

  • 大模型开发范式
    • LLM的局限性:
    • RAG 检索增强生成
  • LangChain简介
  • 构建向量数据库
  • 搭建知识库助手
  • Web Demo部署
    • 环境配置
    • 下载 NLTK 相关资源
    • 下载本项目代码

大模型开发范式

LLM的局限性:

  • 知识实效性受限:如何让LLM能够获得更新的知识
  • 专业能力有限:如何打造垂直领域大模型
  • 定制化成本高:如何打造个人专属的LLM应用

两种开发范式:
在这里插入图片描述

RAG 检索增强生成

在这里插入图片描述

LangChain简介

LangChain框架是一个开源工具,通过为各种LLM提供通用接口来简化应用程序的开发流程,帮助开发者自由构建LLM应用。
LangChain的核心组成模块:

  • 链:将组件组合实现端到端应用,通过一个对象封装实现一系列LLM操作
  • Eg.检索问答链:覆盖实现了GAR(增强检索生成)的全部流程
    在这里插入图片描述

构建向量数据库

  • 加载源文件
    确定源文件类型,针对不同类型源文件选用不同的加载器,核心在于将带格式文本转化为无格式字符串
  • 文档分块
    由于单个文档往往超过了模型上下文上限,我们需要对加载的文档进行切分
    一般按字符串长度进行分割
    可以手动控制分割块的长度和重叠区间的长度
  • 文档向量化
    使用向量数据库来支持语义检索,需要将文档向量化存入向量数据库
    可以使用任一一种Embedding模型来进行向量化
    可以使用多种支持语义检索的向量数据库,一般使用轻量级的Chroma

搭建知识库助手

将InternLM接入LangChain
在这里插入图片描述
基于RAG的问答系统性能核心受限于:

  • 检索精度
  • Prompt性能
    一些可能优化的点:
  • 检索方面:
    • 基于语义进行分割,保证每一个chunk的语义完整
    • 给每个chunk生成概括性索引,检索时匹配索引
  • Prompt方面
    • 迭代优化Prompt策略

Web Demo部署

有很多支持简易web部署的框架,如Gradio、Streamlit等

环境配置

在环境中安装运行 demo 所需要的依赖

# 升级pip
python -m pip install --upgrade pip

pip install modelscope==1.9.5
pip install transformers==4.35.2
pip install streamlit==1.24.0
pip install sentencepiece==0.1.99
pip install accelerate==0.24.1

在 /root 路径下新建目录 data,在目录下新建 download.py 文件并在其中输入以下内容,粘贴代码后记得保存文件,如下图所示。并运行 python /root/data/download.py 执行下载,模型大小为 14 GB,下载模型大概需要 10~20 分钟.
在这里插入图片描述

下载 NLTK 相关资源

我们在使用开源词向量模型构建开源词向量的时候,需要用到第三方库 nltk 的一些资源。正常情况下,其会自动从互联网上下载,但可能由于网络原因会导致下载中断,此处我们可以从国内仓库镜像地址下载相关资源,保存到服务器上。

cd /root
git clone https://gitee.com/yzy0612/nltk_data.git  --branch gh-pages
cd nltk_data
mv packages/*  ./
cd tokenizers
unzip punkt.zip
cd ../taggers
unzip averaged_perceptron_tagger.zip

下载本项目代码

cd /root/data
git clone https://github.com/InternLM/tutorial

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

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

相关文章

模型\视图一般步骤:为什么经常要用“选择模型”QItemSelectionModel?

一、“使用视图”一般的步骤: //1.创建 模型(这里是数据模型!) tabModelnew QSqlTableModel(this,DB);//数据表 //2.设置 视图的模型(这里是数据模型!) ui->tableView->setModel(tabModel); 模型种类: QStringListModel…

vue element plus Typography 排版

我们对字体进行统一规范,力求在各个操作系统下都有最佳展示效果。 字体# 字号# LevelFont SizeDemoSupplementary text12px Extra SmallBuild with ElementBody (small)13px SmallBuild with ElementBody14px BaseBuild with ElementSmall Title16px MediumBuild w…

了解不同方式导入导出的速度之快

目录 一、用工具导出导入 Navicat(速度慢) 1.1、导入: 共耗时: 1.2、导出表 共耗时: 二、用命令语句导出导入 2.1、mysqldump速度快 导出表数据和表结构 共耗时: 只导出表结构 导入 共耗时&…

Linux 网络层收发包流程及 Netfilter 框架浅析

1. 前言 本文主要对 Linux 系统内核协议栈中网络层接收,发送以及转发数据包的流程进行简要介绍,同时对 Netfilter 数据包过滤框架的基本原理以及使用方式进行简单阐述。 内容如有理解错误而导致说明错误的地方,还请指正。如存在引用而没有添…

怎样的摆渡系统,能实现安全可管控的跨网数据传输?

大数据时代,数据在流通与传输的过程中,更需要注意到数据的安全防护,护航数据价值。“让数据主宰一切的隐忧”,数字战争的时代,各国早已认识到网络安全愈发重要,数据也成为各国发展的重要武器。 出于安全性和…

vmware虚拟机内存异常占用问题一例

关键词 vmware esxi、hypervisor虚拟化平台内存模式 Guest virtual memory 一、问题现象 业务一台vmware虚拟机出现内存使用率告警,运维人员登录系统检查内存确实高水位状态 检查各进程使用内存不高,合计内存总数与使用率占用情况明显不匹配&#xf…

面试题:什么是雪花算法?啥原理?

SnowFlake 算法,是 Twitter 开源的分布式 ID 生成算法。 其核心思想就是:使用一个 64 bit 的 long 型的数字作为全局唯一 ID。在分布式系统中的应用十分广泛,且 ID 引入了时间戳,基本上保持自增的,后面的代码中有详细…

Bert-vits2最终版Bert-vits2-2.3云端训练和推理(Colab免费GPU算力平台)

对于深度学习初学者来说,JupyterNoteBook的脚本运行形式显然更加友好,依托Python语言的跨平台特性,JupyterNoteBook既可以在本地线下环境运行,也可以在线上服务器上运行。GoogleColab作为免费GPU算力平台的执牛耳者,更…

密钥管理机制如何进行工作

密钥管理机制是信息安全领域中一个至关重要的环节,其目标是确保密钥的安全传输、存储和使用,从而保障整个系统的安全性和可靠性。在实际工作中,密钥管理机制涉及到多个方面的技术和方法,下面将详细介绍其工作原理和过程。 密钥管理…

linux(ubuntu)中crontab定时器命令详解 以及windows中定时器

linux(ubuntu)中crontab定时器命令详解 crontab 是一个用于创建、编辑和管理用户的定时任务的命令,它可以让用户在指定的时间自动执行指定的命令或脚本。 基本语法 -e:编辑用户的 crontab 文件;-l:列出用…

万界星空科技家具制造业MES系统解决方案

家具行业专业化生产和信息化管理程度较低。随着企业规模的迅速扩大,家具行业中用现有的凭手工发放图纸、制作bom、发放工艺说明文件越来越难以适应现代家具行业、已经成为家具行业快速发展的瓶颈。必须通过实施万界星空科技MES生产管理软件,实现部门之间…

【51单片机】延时函数delay的坑——关于无符号整型数据for语句“x >= 0“变成死循环

请认真看看以下延时函数是否正确,并且指出错误:(考考C语言功底) void delay_ms(unsigned int xms) //delay x ms {unsigned int x,y;for(xxms;x>0;x--)for(y124;y>0;y--); }废话少说,上正确代码: v…

Vue3-watch的用法

watch简介 作用:监视数据的变化 (和 Vue2 中的 watch 作用一致) 特点: Vue3 中的 watch 只能监视以下四种数据 1.ref 定义的数据(又可以分 基本 和 对象 ) 2.reactive 定义的数据 3.函数返回一个值。(getter 函数) 4.一个包含上述内容的数组 我们在 Vue3 中使用 watch …

聊聊 Java 集合框架中的 ArrayList

其实 Java 集合框架也叫做容器,主要由两大接口派生而来,一个是 collection,主要存放对象的集合。另外一个是Map, 存储着键值对(两个对象)的映射表。 下面就来说说 List接口,List存储的元素是有序、可重复的。其下有三个…

Harbor配置同步规则删除不掉

【问题原因】 harbor上主从两个仓库,配置同步规则时,定时任务配置太频繁,导致规则修改,删除都失败。 【问题现象】 点击修改后保存,页面报internal server error的错。 【问题排查】 docker ps | grep harbor 查看…

解决VirtualBox rc=-1908的错误

日常虽然使用linux办公,但是还是用virtualbox安装了一个20G的Windows作为ps等不可替代软件的作业环境。 每次Linux滚动更新(尤其是内核更新)后,virtualbox经常会遇到趴窝的情况。经过多方查证,有时可以解决问题,有时又不行,并且网…

数据库开发工具Navicat Premium 15 mac软件特色

Navicat Premium 15 mac版是一款数据库开发工具,Navicat Premium 15 Mac版可以让你以单一程序同時连接到 MySQL、MariaDB、SQL Server、SQLite、Oracle 和 PostgreSQL 数据库。 Navicat Premium mac软件特色 无缝数据迁移 数据传输,数据同步和结构同步…

[软件工具]AI软件离线表格识别工具使用教程图像转excel转表格可复制文字表格导出实时截图识别成表格

【官方框架地址】 https://github.com/PaddlePaddle/PaddleOCR.git 【算法介绍】 PaddleOCR是一个基于PaddlePaddle框架的开源光学字符识别(OCR)工具库,由百度公司开发。它提供了一套完整的OCR解决方案,包括文字检测、文字识别以…

MySQL连续案例续集

01)查询学过「张三」老师授课的同学的信息 SELECT s.*, c.cname, t.tname, sc.score FROM t_mysql_teacher t, t_mysql_course c, t_mysql_student s, t_mysql_score sc WHERE t.tid c.tid AND c.cid sc.cid AND sc.sid s.sid AND t.tname ‘张三’ 02&#x…