【Datawhale LLM学习笔记】一、什么是大型语言模型(LLM)

news2024/9/23 17:12:57

文章目录

  • 1. 什么是大模型
  • 2. 检索增强生成 RAG
    • 一、什么是 RAG
    • 二、RAG 的工作流程
  • 3. langChain介绍
    • 一、什么是 LangChain
    • 二、LangChain 的核心组件
  • 4. 开发 LLM 应用的整体流程
    • 一、何为大模型开发
    • 二、大模型开发的一般流程
    • 三、搭建 LLM 项目的流程简析(以知识库助手为例)
      • 步骤一:项目规划与需求分析
      • 步骤二:数据准备与向量知识库构建
      • 步骤三:大模型集成与 API 连接
      • 步骤四:核心功能实现
      • 步骤五:核心功能迭代优化
      • 步骤六:前端与用户交互界面开发
      • 步骤七:部署测试与上线
      • 步骤八:维护与持续改进

1. 什么是大模型

一种旨在理解和生成人类语言的人工智能模型

2. 检索增强生成 RAG

一、什么是 RAG

指导大型语言模型生成更为精准的答案

LLM面临如下挑战

  • 信息偏差/幻觉: LLM 有时会产生与客观事实不符的信息。RAG 通过检索数据源,确保输出内容的精确性和可信度,减少信息偏差
  • 知识更新滞后性:LLM 基于静态的数据集训练,这可能导致模型的知识更新滞后,RAG 通过实时检索最新数据,保持内容的时效性

二、RAG 的工作流程

RAG工作可以分为以下4个阶段:数据处理、检索、增强和生成

在这里插入图片描述

  • 数据处理:清洗原始数据,转换为可检索格式,然后存入db
  • 检索:将用户的问题在db中检索
  • 增强:增强检索到的信息,让模型更容易理解
  • 生成:生成模型依据增强结果,生成回答

3. langChain介绍

一、什么是 LangChain

LangChain是一个开源框架,为各种大型语言模型应用提供通用接口,从而简化应用程序的开发流程,帮助开发者们快速构建基于大型语言模型的端到端应用程序或工作流程

利用 LangChain 框架,我们可以轻松地构建如下所示的 RAG 应用

在这里插入图片描述

二、LangChain 的核心组件

LangChain 主要由以下 6 个核心组件组成:

  • 模型输入/输出(Model I/O):与语言模型交互的接口
  • 数据连接(Data connection):与特定应用程序的数据进行交互的接口
  • 链(Chains):将组件组合实现端到端应用。比如后续我们会将搭建检索问答链来完成检索问答。
  • 记忆(Memory):用于链的多次运行之间持久化应用程序状态;
  • 代理(Agents):扩展模型的推理能力。用于复杂的应用的调用序列;
  • 回调(Callbacks):扩展模型的推理能力。用于复杂的应用的调用序列;
    在这里插入图片描述

4. 开发 LLM 应用的整体流程

一、何为大模型开发

通过大预言模型强大的理解生成能力,结合自身数据与业务,开发出来的应用程序称为大模型发开

用通俗的话来说,就是调用大模型api,开发属于自己的产品。比如暴躁女友在线聊天软件

在这里插入图片描述

大模型开发要素:
在这里插入图片描述

二、大模型开发的一般流程

在这里插入图片描述

  • 确定目标: 在开发之前,明确应用的目标、场景和受众,尽量首选最小可行产品(MVP)作为起点,逐步完善。

  • 设计功能: 根据目标,设计应用的功能和实现逻辑,着重于核心功能,逐步扩展上下游功能,确保全面覆盖用户需求。

  • 搭建整体架构: 基于特定数据库、Prompt和通用大模型的架构,使用LangChain等框架,构建从用户输入到应用输出的完整流程。

  • 搭建数据库: 建立个性化数据库支持,使用Chroma等向量数据库进行数据预处理、向量化存储,确保数据质量和向量化构建。

  • Prompt工程化: 通过迭代构建高质量的Prompt,对大模型性能具有重要影响,包括原则、技巧、小型验证集设计和Prompt的持续优化。

  • 验证迭代: 通过发现Bad Case并改进Prompt工程化,不断优化系统效果,应对各种边界情况,直至达到稳定且能实现目标的Prompt版本。

  • 前后端搭建: 核心功能完成后,进行前后端搭建,设计产品页面,利用Gradio和Streamlit等工具帮助快速搭建可视化页面,实现Demo上线。

  • 体验优化: 上线后,持续跟踪用户体验,记录Bad Case和用户反馈,针对性优化,确保长期用户满意度。

三、搭建 LLM 项目的流程简析(以知识库助手为例)

以下我们将结合本实践项目与上文的整体流程介绍,简要分析知识库助手项目开发流程:

步骤一:项目规划与需求分析

1.项目目标:基于个人知识库的问答助手

2.核心功能:

  • 将爬取并总结的MD文件及用户上传文档向量化,并创建知识库;
  • 选择知识库,检索用户提问的知识片段;
  • 提供知识片段与提问,获取大模型回答;
  • 流式回复;
  • 历史对话记录

3.确定技术架构和工具

  • 框架:LangChain
  • Embedding模型:GPT、智谱、M3E
  • 数据库:Chroma
  • 大模型:GPT、讯飞星火、文心一言、GLM 等
  • 前后端:Gradio 和 Streamlit

步骤二:数据准备与向量知识库构建

加载本地文档 -> 读取文本 -> 文本分割 -> 文本向量化 -> question 向量化 -> 在文本向量中匹配出与问句向量最相似的 top k 个 -> 匹配出的文本作为上下文和问题一起添加到 Prompt 中 -> 提交给 LLM 生成回答。

在这里插入图片描述

  1. 文档收集与处理

    • 收集用户提供的文档,如PDF、TXT、MD等格式。
    • 使用LangChain的文档加载器或Python包进行读取。
    • 将长文档切分为短文本,每段文本作为一个知识单位。
  2. 文档向量化

    • 利用文本嵌入技术将文档片段向量化,保持语义相似性。
    • 将向量化的文本存入向量数据库,建立索引以实现快速检索。
  3. 建立知识库索引

    • 将向量化的文档导入Chroma知识库,利用LangChain集成向量数据库。
    • 通过向量相关性算法(如余弦算法)匹配最相似的知识库片段,作为上下文与用户问题一起提交给LLM进行回答。

步骤三:大模型集成与 API 连接

  • 集成 GPT、星火、文心、GLM 等大模型,配置 API 连接。
  • 编写代码,实现与大模型 API 的交互,以便获取问题回答。

步骤四:核心功能实现

  1. Prompt工程化和流式回复

    • 建立Prompt工程,使大模型能够根据用户提问和知识库内容生成回答。
    • 实现流式回复功能,支持用户进行多轮对话,提高交互自然度和连贯性。
  2. 历史对话记录功能

    • 添加历史对话记录功能,记录用户与助手的交互历史。
    • 保存对话记录,为用户提供更好的个性化服务和回溯功能。

步骤五:核心功能迭代优化

  • 进行验证评估,收集 Bad Case。
  • 根据 Bad Case 迭代优化核心功能实现。

步骤六:前端与用户交互界面开发

  • 使用 Gradio 和 Streamlit 搭建前端界面。
  • 实现用户上传文档、创建知识库的功能。
  • 设计用户界面,包括问题输入、知识库选择、历史记录展示等。

步骤七:部署测试与上线

部署问答助手到服务器或云平台,上线并向用户发布。

步骤八:维护与持续改进

  1. 系统监测与用户反馈

    • 监测系统性能和用户反馈,快速响应并处理问题,确保系统稳定运行。
  2. 知识库更新

    • 定期更新知识库,添加新文档和信息,保持知识库内容的时效性和全面性。
  3. 用户需求收集与改进

    • 主动收集用户需求,进行系统改进和功能扩展,提升用户体验和系统功能。

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

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

相关文章

明日周刊-第6期

最近一周杭州的天气起起伏伏,下雨就凉,不下雨就热。但是夏天的感觉确实是越来越浓烈了,又是一年夏,在这个夏天大家都有什么新的计划呢。 文章目录 一周热点资源分享言论歌曲推荐 一周热点 一、我国自主研发科技壮举震惊全球航天界…

SpringBoot删除菜品模块开发(SpringMVC分割参数、事务管理、异常处理、批量删除)

需求分析与设计 一:产品原型 在菜品列表页面,每个菜品后面对应的操作分别为修改、删除、停售,可通过删除功能完成对菜品及相关的数据进行删除。 删除菜品原型: 业务规则: 可以一次删除一个菜品,也可以批…

Zookeeper中的节点类型和实现持久化的两种方式

进入zookeeper的bin目录,执行./zkServer.sh start ../conf/zoo.cfg启动! Zookeeper内部的数据模型 类似于数据结构中的树,同时也很像文件系统的目录, 节点的类型 持久节点:create /znode 创建出的节点&#xff0c…

如何在Linux系统部署Tale并实现无公网IP远程管理内网博客网站

文章目录 前言1. Tale网站搭建1.1 检查本地环境1.2 部署Tale个人博客系统1.3 启动Tale服务1.4 访问博客地址 2. Linux安装Cpolar内网穿透3. 创建Tale博客公网地址4. 使用公网地址访问Tale 前言 今天给大家带来一款基于 Java 语言的轻量级博客开源项目——Tale,Tale…

一本免费开源的电子书籍!这个 71.8k star 的项目,让你轻轻松松学会算法【文末有福利】

话说作为一名程序员,肯定都少不了在准备面试的时候刷 LeetCode 的算法题吧。虽然面试考察的算法题在工作中用到的非常少,但是确实是能让我们对常用的数据结构有更深刻的理解,以及对思维逻辑有很大的提升。不过枯燥的刷题可能让新手无从下手&a…

C++入门:类与对象(1)

本篇作为学习类与对象后的一些记录与感想,不适用于第一次接触类和对象的朋友。 目录 1.面向过程和面向对象 2.类 2.1类的基础知识 2.2 类中的访问限定符 2.3类中的函数声明定义分离(如何在不同的文件中实现同一个类) 2.4类的封装 2.5类…

Python+selenium的web自动化之元素的常用操作详解

前言 今天呢,笔者想和大家来聊聊pythonselenium的web自动化之元素的常用操作,废话不多说直接进入主题吧 一、常用操作 关键代码: 点击:ele.click()输入内容:ele.send_keys("内容")清空内容:el…

conda配置多版本python

安装conda 以下任选下载 Anaconda Miniconda 配置conda环境变量 比如windows,在配置我的电脑中的环境变量,在系统变量的Path中新增下面内容 需要根据实际目录进行更改 D:\soft\miniconda3 D:\soft\miniconda3\Scripts D:\soft\miniconda3\Library\bi…

嵌入式驱动学习第七周——GPIO子系统

前言 GPIO子系统是用来统一便捷地访问实现输入输出中断等效果。 嵌入式驱动学习专栏将详细记录博主学习驱动的详细过程,未来预计四个月将高强度更新本专栏,喜欢的可以关注本博主并订阅本专栏,一起讨论一起学习。现在关注就是老粉啦&#xff0…

云卓LS-01喊话器说明书-新版中文

一: 概述 LS-01 无人机喊话器适用于搭载无人机进行交通管制、现场指挥、应急救援、人群疏导、防疫宣传、景区安防、鱼塘巡视、林业防控等场景。产品具有喊话、警报、播放多媒体文件等多种功能。喊话器外壳采用尼龙加纤材质,具有抗、抗震、轻便灵活、外观新颖、质量稳…

NXopen C++ 装配体部件遍历 体积质量计算 NewMassProperties

打开装配体&#xff0c;逐一遍历部件测量体积&#xff0c;最后计算出装配体的总的体积和质量 NX1953VS2019 //1、模板文件添加头文件* #include <NXOpen/UnitCollection.hxx> #include <NXOpen/ScCollectorCollection.hxx> #include <NXOpen/Unit.hxx> #inc…

github 双因素验证

环境 华为手机 下载app 华为应用市场下载 输入对应验证码&#xff0c;然后一路下一步即可 联系方式 手机&#xff1a;13822161573 微信&#xff1a;txsolarterms QQ&#xff1a;419396409

实验一:配置IP地址

实验环境 主机A和主机B通过一根网线相连 需求描述 为两台主机配置IP地址&#xff0c;验证IP地址是否生效&#xff0c;验证同一网段的两台主机可以互通&#xff0c;不同网段的主机不能直接互通 一.实验拓扑 二.推荐步骤 1.为两台主机配置P地址&#xff0c;主机A为192.168.1.…

多无人机集群协同避障

matlab2020a正常运行 场景1规划结果 场景2规划结果 场景3规划结果 代码地址&#xff1a; 多无人机集群协同避障效果&#xff08;5架&#xff09;资源-CSDN文库

解决Ant Design Vue使用Modal对话框无法关闭的问题,本地可以关闭对话框但是打包后不能关闭对话框的问题。

首先说为什么会导致这个问题&#xff1a;因为现在vue官方的最新版本是3.4.x&#xff0c;可能是vue最新版本的部分代码与Ant Design不兼容导致的。 解决&#xff1a;所以将vue版本固定在vue3.4以下&#xff0c;就可以了。 1.删除node_modules和package-lock.json&#xff08;如…

8.基础乐理-纯八度

一个音听上去是高还是低&#xff0c;是由音的振动频率决定的&#xff0c;也就是每一秒多少 Hz 所决定的&#xff0c;Hz数越小音听上去就越低&#xff0c;Hz数越大音听上去就越大&#xff0c;钢琴从左到右&#xff0c;Hz数 在逐渐增大&#xff0c;当两个音的振动频率数越接近简单…

VSCode插件分享--免费的ER工具

首先在VSCode里面下载插件 再将插件导入后&#xff0c;添加文本修改后缀名&#xff08;将后缀名修改为.drawio&#xff09;就可以使用了

【CLR】《Cyclical Learning Rates for Training Neural Networks》

WACV-2017 IEEE Winter Conference on Applications of Computer Vision 文章目录 1 Background and Motivation2 Related Work3 Advantages / Contributions4 Method5 Experiments5.1 Datasets and Metrics5.2 CIFAR-10 and CIFAR-1005.3 ImageNet 6 Conclusion&#xff08;o…

Python机器学习实战教程

一、引言 机器学习是人工智能的一个子集&#xff0c;它使用算法来让计算机系统从数据中“学习”并改进其性能&#xff0c;而无需进行明确的编程。Python因其易于学习、强大的库和广泛的应用场景&#xff0c;成为了机器学习的首选语言。本教程旨在帮助读者从零开始学习Python机…

(六)C++自制植物大战僵尸游戏关卡数据讲解

植物大战僵尸游戏开发教程专栏地址http://t.csdnimg.cn/xjvbb 游戏关卡数据文件定义了游戏中每一个关卡的数据&#xff0c;包括游戏类型、关卡通关奖励的金币数量、僵尸出现的波数、每一波出现僵尸数量、每一波僵尸出现的类型等。根据不同的游戏类型&#xff0c;定义了不同的通…