半天玩转大模型技术之RAG

news2024/9/20 10:55:20

引 言

当前大模型在金融行业最广泛的应用之一就是知识问答,而支撑该应用的技术正是当下火热的检索增强生成(Retrieval Augmented Generation)技术,简称 RAG。因企业具体的业务往往需要注入特定的知识,比如ChatBI中企业数据库的相关知识、客服助手中客服FAQ等,所以RAG不仅可以应用在知识问答中,也在很多的业务场景中均有应用。本文将带读者了解RAG技术,并以知识问答为例帮助读者快速搭建一套属于自己RAG。

什么是RAG?

RAG全称为检索增强生成(Retrieval Augmented Generation),“检索”顾名思义是对大模型外挂知识库的检索,“增强生成”则是把检索得到的信息通过prompt提示给大模型使其从包含外部信息中学习知识(in-context learning)并生成正确答案。

为什么产生RAG技术?

RAG的产生主要源自于大模型自身存在的局限性。

时效性

大模型的知识更新就停留在它完成训练的那一刻,而重训一次大模型硬件、能源、时间等成本消耗非常高,仅为更新知识频繁重训大模型并不现实。因此,大模型无法回答近期发生的事件、趋势等具有时效性的问题。

缺少专业领域知识

大模型的训练虽然用了海量的知识,但仍然无法覆盖所有领域,比如法律、医学及企业内部知识等,所以面对未知的知识问题时,大模型无法给出有效的回答。

幻觉问题

面对未知的问题,大模型仍然会给出看似合理的错误回答,让用户难辨真假,这就是大模型的幻觉问题。大模型产生幻觉是因其训练的本质,即经过大量的训练后,预测下一个token。所以面对未知的问题,大模型不知“自己不知道”,只是在预测下一个概率高的token。

图1 大模型预测下一个token

RAG的出现就是为了解决上述问题,通过外挂知识库,解决时效性问题、补充领域知识;通过将检索内容作为背景知识供大模型参考,减少幻觉。

RAG的核心组件

图2 RAG流程

(图源自论文:Gao, Yunfan et. “Retrieval-Augmented Generation for Large Language Models: A Survey.” arXiv e-prints (2023): arXiv-2312)

上图展示了RAG的工作流程,对于用户的问题“如何评价你们OpenAI公司……”,从事先已经建立好索引的知识向量库中(图中索引模块)检索出与问题相关的文档片段“片段1《Sam Altman 回归 OpenAI 重任CEO……》、片段2《大戏落幕?Sam Altman将回归OpenAI……》、片段3《OpenAI 人事震荡……》”(图中检索模块),再将用户问题和检索到知识片段拼接成一个prompt“问题:如何评价你们OpenAI公司的……,请基于以下资料回答上述问题:片段1……,片段2……,片段3……”提交给大模型LLM生成最终的回答(图中生成模块)。

从上述流程不难总结出,RAG包含以下核心组件:知识向量库,检索和LLM生成。

知识向量库

在介绍知识向量库前,我们先了解下知识向量,将知识数据通过embedding算法映射到一个固定维度的向量空间中,从而捕捉到知识数据的语义就是知识向量。用相同的embedding算法将用户问题映射到同一向量空间,用户问题和知识的语义相似度就可以通过两个向量在空间中的距离来度量。知识向量库顾名思义就是专门用来高效存储和检索向量数据的数据库。常见embedding算法有M3E、text-embedding-3、fasttext等,常见的向量库有faiss、Milvus、Elasticsearch等。

针对所有自学遇到困难的同学们,我帮大家系统梳理大模型学习脉络,将这份 LLM大模型资料 分享出来:包括LLM大模型书籍、640套大模型行业报告、LLM大模型学习视频、LLM大模型学习路线、开源大模型学习教程等, 😝有需要的小伙伴,可以 扫描下方二维码领取🆓↓↓↓

👉[CSDN大礼包🎁:全网最全《LLM大模型入门+进阶学习资源包》免费分享(安全链接,放心点击)]()👈

检索

检索是指基于向量数据库集成的向量相似度检索算法,召回与用户问题语义相似的知识向量的过程。常见检索算法包括全量搜索、降维、聚类、量化等。

LLM生成

基于大模型的技术综合考虑检索文档或信息片段和用户的问题,产出一份逻辑连贯、上下文一致的回答。

如何搭建RAG应用

搭建大模型环境

推荐使用Ollama框架搭建大模型运行环境,以Windows操作系统为例(Windows10或更高版本)进行说明。

1.安装ollama

从Ollama官网【https://ollama.com/download】下载Windows版的安装文件 【OllamaSetup.exe】,下载完成后直接点击安装即可。在命令行窗口输入 【ollama -v】查看是否安装成功。

2.模型文件拉取

联网情况

执行【ollama pull】命令进行模型文件拉取(支持拉取的模型可参考官方文档【https://ollama.com/library】, 包含Qwen2、Llama3.1、Gemma2等主流大模型 ),拉取完成后可执行【ollama list】查看已经安装的模型。

非联网情况

建议先从联网机器上中通过ollama pull提前完成模型拉取,再通过ollama show --modelfile获取模型的配置,其中以“FROM”开头的这行配置说明了模型源文件存储位置。将整个模型配置拷贝到配置文件Modelfile中,再将Modelfile和模型源文件拷贝到要安装的非联网机器上。在非联网机器上执行【ollama create-f Modelfile】完成模型文件导入,注意需要修改Modelfile中FROM的位置到非联网机器上模型源文件的位置。

图3 Ollama命令获取大模型配置

3.启动大模型

执行【ollama run】启动大模型,即可跟大模型对话了。执行【ollama ps】可查看正在运行的大模型的情况。

图4 调起大模型并查看大模型运行状态

安装python依赖

推荐使用miniconda来安装python相关的依赖包。

1.安装miniconda

在可信源上(如清华源)下载可执行文件,Miniconda3-py311_24.5.0-0-Windows-x86_64.exe,下载完成后点击安装即可。

2.安装python依赖包

联网情况

联网情况下安装可直接使用pip命令,【pip install ollama faiss-cpu tqdm numpy】,即可完成所有RAG应用程序所需的安装包。

非联网情况

需先在联网环境中使用pip命令下载好所需的所有python依赖到指定目录【pip download -d /path/to/your/directory ollama faiss-cpu tqdm numpy】。下载完毕后,将整个下载目录拷贝到离线环境设备上。执行【pip install --no-index --find-links= /path/to/your/directory ollama faiss-cpu tqdm numpy】即可完成python依赖安装。

搭建RAG应用-知识问答

下面代码块中展示了完整的RAG程序。其中,大模型采用的通义千问(qwen2:7b),embedding算法采用的是bge-m3,知识读取自相同目录下的“doc.txt”的文件。

程序主要包含4个函数:

text_to_embedding,将text文本转化为向量

faiss_database,建立知识向量库

find_relative_knowledge,检索相关知识

llm_generate,llm生成问答

main,程序执行的主流程:

Step1:构建知识向量库

Step2:提示用户输入问题

Step3:基于用户问题检索相关知识

Step4:基于检索到的知识让大模型生成回答

测试效果

下图展示了以金融相关知识构建的知识文档并在程序执行之前提前保存到“doc.txt”中。通过python example_rag.py命令,程序开始执行,首先按行对问数需求进行向量转化并存储(step1),共计12条知识片段;其次,提示用户提问(step2);然后针对用户的问题“货币供应量是什么”召回的相关的知识片段“什么叫货币供应量?货币…”(step3),最后将召回的知识片段和用户问题拼接成prompt让大模型生成回答(step4)。

图5 RAG应用程序测试效果

总 结

本文介绍了RAG技术产生的背景、RAG技术的核心组件以及如何搭建一个自己的RAG应用。得益于大模型技术的开源文化,搭建大模型及RAG应用均不难上手,读者可动手搭建开启自己的大模型RAG之旅。

如何学习AI大模型?

大模型时代,火爆出圈的LLM大模型让程序员们开始重新评估自己的本领。 “AI会取代那些行业?”“谁的饭碗又将不保了?”等问题热议不断。

不如成为「掌握AI工具的技术人」,毕竟AI时代,谁先尝试,谁就能占得先机!

想正式转到一些新兴的 AI 行业,不仅需要系统的学习AI大模型。同时也要跟已有的技能结合,辅助编程提效,或上手实操应用,增加自己的职场竞争力。

但是LLM相关的内容很多,现在网上的老课程老教材关于LLM又太少。所以现在小白入门就只能靠自学,学习成本和门槛很高

那么针对所有自学遇到困难的同学们,我帮大家系统梳理大模型学习脉络,将这份 LLM大模型资料 分享出来:包括LLM大模型书籍、640套大模型行业报告、LLM大模型学习视频、LLM大模型学习路线、开源大模型学习教程等, 😝有需要的小伙伴,可以 扫描下方二维码领取🆓↓↓↓

👉[CSDN大礼包🎁:全网最全《LLM大模型入门+进阶学习资源包》免费分享(安全链接,放心点击)]()👈

学习路线

在这里插入图片描述

第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;

第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;

第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;

第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;

第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;

第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;

第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。

在这里插入图片描述

👉学会后的收获:👈

• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;

• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;

• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;

• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。

在这里插入图片描述

1.AI大模型学习路线图
2.100套AI大模型商业化落地方案
3.100集大模型视频教程
4.200本大模型PDF书籍
5.LLM面试题合集
6.AI产品经理资源合集

👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓

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

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

相关文章

Google出了一个黑科技,可以把书变成真人多角色对话的音频,效果真的很牛!

大家有没有想过,像读书、查资料这种事情,如果可以用听的,效率会不会更高?我想大部分人都曾有过这种念头。尤其是在这信息爆炸的时代,手头上有大量的书籍、论文等资源,但我们根本没时间一页一页地去翻。对吧?这时,Google Illuminate 的出现,简直像是为我们解了燃眉之急…

力扣: 赎金信

文章目录 需求分析及编码结尾 需求 给你两个字符串:ransomNote 和 magazine ,判断 ransomNote 能不能由 magazine 里面的字符构成。 如果可以,返回 true ;否则返回 false 。 magazine 中的每个字符只能在 ransomNote 中使用一次…

kubernetes中的微服务Service(ClusterIP、NodePort、LoadBalancer)

目录 一 、什么是微服务 二 、微服务的类型 三、 ipvs模式 3.1 ipvs模式配置方式 四、微服务类型详解 4.1 clusterip 4.2 ClusterIP中的特殊模式headless 4.3 nodeport 4.4 loadbalancer 4.5 metalLB 4.6 externalname 五 Ingress-nginx 5.1 ingress-nginx功能 5.2…

【大模型专栏—入门篇】CUDA入门与AutoDL“炼丹”

大模型专栏介绍 😊你好,我是小航,一个正在变秃、变强的文艺倾年。 🔔本文为大模型专栏子篇,大模型专栏将持续更新,主要讲解大模型从入门到实战打怪升级。如有兴趣,欢迎您的阅读。 &#x1f4…

PointNet++改进策略 :模块改进 | SWA| PVT,融入Transformer的点云与体素的模块同时提升模型精度和效率

目录 介绍PVT原理PVT的核心思想和结构PVT模块结构体素分支点分支 代码实现 论文题目:PVT: Point-Voxel Transformer for Point Cloud Learning发布期刊:International Journal of Intelligent Systems通讯地址:杭州电子科技大学&伦敦大学…

善于善行——贵金属回收

在当今社会,贵金属回收已成为一项日益重要的产业。随 着科技的不断进步和人们对资源可持续利用的认识逐渐提高,贵金属回收的现状也备受关注。 目前,贵金属回收市场呈现出蓬勃发展的态势。一方面,贵金属如金、银、铂、钯等在众多领…

【C语言】结构体超详细全讲解 (代码+万字文字+画图讲解)

目录 1.什么是结构体类型 2.结构体变量的创建 3.结构体变量的初始化 4.结构体的特殊声明 5.typedef重定义结构体变量(两种方式) 6.结构体自引用 7.创建结构体指针变量 8.结构体内容的访问 8.1直接访问: 8.2 结构体指针访问 9.结构体内…

IPD推行成功的核心要素(二十二)IPD流程持续优化性地推出具备商业成功潜力的产品与解决方案

产品开发是非常复杂的。随着创新环境的快速发展,大部分研发型企业普遍会面临着这些核心问题:如何快速响应市场的变化?如何推出更有竞争力的产品?如何在竞争中脱颖而出?因此,往往随着企业的规模化发展&#…

深度优先搜索(DFS)在图的运行过程

深度优先搜索(DFS)在图的运行过程 深度优先搜索算法(DFS)C语言实现运行DFS并记录结果节点发现时间和完成时间:图a是一个有向图,为了清晰起见,我们首先假设图a的具体结构如下(节点和边的集合): 图a: 节点集合: {A, B, C, D, E, F} 边集合: {(A, B), (A, C), (B, D),…

带你了解Android Jetpack库中的依赖注入框架:Hilt

本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点 Hilt概述 Hilt是Google推出的一种用于Android的依赖注入(Dependency Injection,DI)框架,构建于…

Java 学习中使用文件、网络连接等资源时,未正确关闭资源,导致资源泄漏应该怎么办?

在Java编程中,处理文件、网络连接、数据库连接等资源时,如果没有正确关闭资源,就会发生资源泄漏。资源泄漏会导致系统性能下降、内存占用增加,甚至可能导致程序崩溃,特别是在高负载的系统中。 一、什么是资源泄漏&…

【C+继承】

继承 1.继承的概念及定义2.基类和派生类对象赋值转换3.继承中的作用域4.派生类的默认成员函数5.继承与友元6.继承与静态成员7.复杂的菱形继承及菱形虚拟继承8.继承的总结和反思 1.继承的概念及定义 ->继承的概念 继承的本质:就是继承的父类的成员 ->继承的…

《哈利波特:魔法觉醒》仅16个月欧美停服,引来“阴谋论”

易采游戏网9月11日消息:2022年,当网易宣布将与华纳兄弟合作推出《哈利波特:魔法觉醒》时,全球玩家一片欢腾。不仅在中国市场掀起了一股狂潮,也迅速进入了欧美市场,吸引了无数哈迷和卡牌游戏爱好者。令人始料…

vue+el-table 可输入表格使用上下键进行input框切换

使用上下键进行完工数量这一列的切换 <el-table :data"form.detailList" selection-change"handleChildSelection" ref"bChangeOrderChild" max-height"500"><!-- <el-table-column type"selection" width&quo…

视频融合共享平台LntonAIServer视频分析平台噪声监测优势

LntonAIServer的视频质量诊断功能中的噪声检测是一项关键技术&#xff0c;旨在帮助用户及时发现并解决视频流中的噪声问题&#xff0c;确保视频监控系统的稳定性和可靠性。 在视频监控系统中&#xff0c;噪声问题常常影响到视频画面的清晰度和可用性。噪声可能由多种因素引起&a…

基于SpringBoot+Vue的考研学习分享互助平台

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 【2025最新】基于JavaSpringBootVueMySQL的考研学习…

仕考网:省考面试流程介绍,提前了解

省考面试流程介绍&#xff0c;一文带大家了解! 一、面试登记及抽签 考生通常需要提前10至30分钟到达指定地点进行登记。 考试工作人员核对考生身份证和面试通知书等相关证件后&#xff0c;进行抽签确定分组和进场顺序。 二、候考阶段 考生完成抽签后进入候考区等待考试。在…

空气开关跳闸的原因及解决办法

空气开关&#xff08;也称为断路器或空气断路器&#xff09;跳闸通常是因为电路中的某些问题导致的。下面是一些常见的原因及解决办法&#xff1a; 1. 过载 原因&#xff1a;当电路中的电流超过空气开关的额定值时&#xff0c;会导致过载保护动作&#xff0c;使空气开关跳闸。…

银行安全用电典型产品解决方案介绍-安科瑞-叶西平

应用背景 银行作为国家重要部门&#xff0c;是国家经济建设的中枢&#xff0c;也是消防的重点单位。用电安全是银行安全保卫工作 的一个重要环节。银行安保设施、数据中心、自助设施、办公设备等能耗单元对用电的连续性、稳定性和安 全性要求非常高&#xff0c;实时监测线路及…

一文理解单点登录与联合登录

img 如今&#xff0c;许多组织都有大量需要每天进行身份验证的应用程序。用户使用传统意义上的凭据在应用程序进行身份验证时容易遭到社会工程学攻击以及信息泄露风险。 单点登录验证&#xff08;Single Sign-On&#xff09; 单点登录身份验证&#xff0c;无论是内部还是外部…