用检索增强生成让大模型更强大,这里有个手把手的Python实现
自从人们察觉到能够运用自身专有的数据以使大型语言模型也就是 LLM 变得更为强大之后, 人们便持续在探讨怎样去有效地把 LLM 的一般性知识同专有数据整合到一块。针对此状况人们同样一直处于争论之中, 其中一派观点觉得是微调更合适, 另一派观点则认为检索增强生成也就是也就是 RAG 更合适, 究竟哪个更合适呢?本文首先会去留意 RAG 的概念以及理论, 之后会呈现能够怎样运用用于编排的、语言模型以及向量数据库去达成一个简易的 RAG。检索增强生成是什么进行检索增强生成即RAG这一概念所指方向是借助外部知识源, 以此为LLM供给更多附加信息, 从而凭借如此做法, 能让LLM生成具备更高准确性的且更加更妥贴处于一定情境下的答案, 与此同时降低减少假象这类虚幻情况的发生概率。问题当下最优的语言模型都是运用海量数据进行训练而得出的, 所以其神经网络权重里存储了诸多一般性知识参数记忆。然而, 要是在借助语言模型生成结果之际需要其训练数据以外的知识像新信息、专有数据抑或特定领域的信息这类, 那么就有可能出现事实不准确的情况幻觉, 如下截图所呈现的那样:所以呀, 把LLM的一般性知识跟附加上下文整合到一起这件事, 是极为重要的, 这能够帮助LLM生成更加准确并且更契合上下文情境的结果, 与此同时产生的幻觉也是更少的。解决方案从传统的角度来讲, 借助对模型进行微调这一方式, 能够使得神经网络来适应特定领域的信息或者专属于某方面的信息。虽说这样的技术是具备有效性的, 然而它需要进行密集的计算, 成本是比较高的, 并且还需要技术专家给予相应的支持, 所以在适应不断变化的信息时就很难做到敏捷。2020年, Lewis等人所撰写的论文《- for - NLP Tasks》, 提出了一项更为灵活的技术, 即检索增强生成, 也称RAG。在这篇论文里, 研究者把生成模型与一个检索模块组合在了一块儿, 这个检索模块能够借助一个更容易更新的外部知识源来提供附加信息。就老百姓的话音来讲, RAG 对于 LLM 如同开卷考评对于人类。于开卷考评之际, 学员能够带着教材以及笔记等参考材料, 他们能够从其中找寻用以作答的相关讯息。开卷考评背后的见解是: 此次考评衡量的关键是学员的推导水平而并非记忆特殊信息的本事。与之相类似, 事实方面的知识跟LLM的推理能力是相互分离存在, 且能够被保存在可以轻易进行访问以及更新这样的外部知识来源里面, 是的:经过训练期间才可学到进而于神经网络权重那儿以含混隐晦的样式存储起来的知识, 就是参数化知识。非参数化知识储存于外部知识源比如向量数据库。下图展示了最基本的 RAG 工作流程检索增强生成RAG的工作流程为了将用户查询用于检索外部知识源里有关系的上下文, 需要进行检索。要达成这个目的, 得运用一个嵌入模型, 把该用户查询嵌入同一个向量空间当中, 让它成为向量数据库里的附加性的上下文。如此做的话, 便能够执行相似类型的搜索, 进而返回该向量数据库里与用户查询最为接近的k个数据对象。接下来, 把用户所进行的查询, 以及检索得到的附加上下文, 放入到一个模板里。生成最后将经过检索增强的 馈送给 LLM。使用 实现检索增强生成接下来会阐述怎样借由达成RAG工作流程, 这会运用到LLM, 以及向量数据库, 还有一个嵌入模型, 其作用是进行编排。必要前提请确保你已安装所需的 软件包#!pip -再者, 于根目录之中, 借由一个名为.env的文件去界定相关的环境变量。你是必定得要有一个账户的, 如此才能够获取API Key, 接着继而在API keys里面。「创建新的密钥」。然后运行以下命令来加载相关环境变量。.()准备工作于准备阶段之时, 你得准备一个当作外部知识源的向量数据库, 借助它来留存所有的附加信息。而这个向量数据库的构建涵盖以下步骤啦:收集并载入数据将文档分块对文本块进行嵌入操作并保存第一步, 是去收集数据, 然后将其载入。比如说, 要是我们把拜登总统2022年的国情咨文用作附加上下文, 其库给出了原始文本文档来为了载入这些数据, 我们能够运用不少内置的文档加载工具一个文档是由文本以及元数据所构成的词典为了加载文本, 可以使用其的。原始文档地址.你提供的内容存在语法错误。正确的代码应该是: 下面改写符合要求: url等于空字符串, 然后使用.get方法获取该url对应的内容, 接着打开一个名为.txt的文件以写入模式, 之后将获取到的内容的文本写入该文件。 (./.txt) .load()紧接而来的是, 要把文档实施分块操作.乃是源于文档处于原始状态之际长度颇长, 没办法放入到LLM的上下文窗口里去, 因而就有必要将其拆分成更为小巧的文本块.而且还存有众多内置的拆分工具.针对这个简易示例而言, 我们能够运用r, 把它设置成500, 把另一个设置成50, 如此一来便能够让文本块之间的文本维持连续性。from . r(500, 50) .()那么, 接下来要做的是, 针对文本块, 开展嵌入操作, 随后予以保存。要达成语义搜索能够跨越文本块来执行的目的, 那么, 就得为每一个文本块生成向量嵌入, 并且要将生成的向量嵌入, 同文本块本身一起保存起来。而要生成向量嵌入的话, 可以运用嵌入模型要是说到储存这方面, 能够使用向量数据库。借助调用. () 的方式, 能够自动地把文本块填充到向量数据库里。from . . . .( ())啥呀这是, 等于一个点, 然后括号里等于, 等于, 等于括号打开括号, 等于假值。步骤 1检索向量数据库填充完毕之后, 我们能够将它界定为一种具备检索功能的组件, 该组件可以凭借其自身通过用户查询以及嵌入块其间所存在的语义方面的恰似程度, 进而获取与之相关联的另外的上下文内容。 .()步骤 2增强from .print()随后 , 为了运用经由附加而得来的上下文予以增强 , 得去准备一个 模板。像下面所展现的这样 , 借助该 模板能够简便地进行定制。步骤 3生成最终, 我们能够针对这个RAG流程构架一条思维链, 把检索器、模板以及LLM衔接起来。在完成RAG链的定义之后, 就能够对其进行调用了。from . .. rom ..llm (gpt-3.5-turbo, 0)它等于, 由一个包含空值和空括号, 以及管道字符, 还有llm再加上空括号所组成的内容混合体。你的内容似乎存在一些不清晰和错误的表述, 不太能准确理解其确切含义, 所以难以按照要求进行改写。请你检查并修正一下内容, 以便能更准确地完成任务。不过大致试着改一下就是: 查询内容是, 说了关于什么, 这个查询。对于他的以及他的到什么的这个。这个也表明他把布朗法官当作什么对于某人的什么的。 这样改写后更乱了, 因为原内容实在较难理解。下图展示了这个具体示例的 RAG 流程总结首先, 它最初体现于2020年名为《 - for - NLP Tasks》的论文里。对于其背后涵盖动机与解决方案的理论内容, 进行了相关陈述之后, 又阐述了怎样借由 达成践行。接着, 呈现了怎样凭借LLM搭配 向量数据库以及 嵌入模型实现一种工作流程。这里面, 的功能在于进行编排。本文对RAG的概念予以介绍。展示了该工作流程。且说明其来自上述特定论文。还表明了这一系列构成部分来实现RAG工作流程这点。并解释了各内容之间的关联及作用。最终完成了整个阐述另起一句, 再强调一次, 这是关于RAG概念的介绍。这一介绍包含诸多相关内容。从初出现到背后理论。再到如何凭借相关事物进行实现。直至呈现具体工作流程以及各部分作用

相关新闻

如何去理解上面的软件需求定义呢?

如何去理解上面的软件需求定义呢?

团队成员的责任 一、需求分析概述 什么是需求?卖肉之人发问: 要啥。买肉之人回应: 要点肉。卖肉之人又问: 是啥肉? 是精肉还是五花肉。买肉之人回说: 是做饺子用的。卖肉之人说道: 那来点五花肉。问: 几斤?当打算去购买一辆汽车时, 需要具备这样一些条件, 即车子能…

2026/10/20 10:51:48 阅读更多 →
WPS会员升级决策指南:从普通到超级会员的成本效益分析

WPS会员升级决策指南:从普通到超级会员的成本效益分析

1. 项目概述:一次关于WPS会员升级的深度成本效益分析最近在办公软件的选择上,我身边不少朋友都开始重新审视WPS Office。原因很简单,在基础功能免费的前提下,它的会员体系提供了相当有吸引力的增值服务。大家讨论最多的一个话题就…

2026/10/20 10:48:25 阅读更多 →
KingbaseES V9R2C13数据库性能优化实战与调优技巧

KingbaseES V9R2C13数据库性能优化实战与调优技巧

1. KingbaseES V9R2C13性能优化实战背景 作为国产数据库领域的代表产品,KingbaseES V9R2C13在金融、政务等关键行业已有大规模应用实例。我们团队在最近承接的某省级医保平台迁移项目中,需要将原有Oracle数据库平滑迁移至KingbaseES环境,这就…

2026/10/20 11:39:32 阅读更多 →

最新新闻

多智能体协作框架选型指南:AgentScope标准化消息机制与工程实践

多智能体协作框架选型指南:AgentScope标准化消息机制与工程实践

最近半年我几乎把市面上能试的多智能体开发框架都试了一遍,要么太重,一上来就是企业级流程引擎、状态机、沙箱,光是理解抽象概念就得花一周;要么太薄,本质就是把大模型API包装成函数,智能体之间怎么通信、上…

2026/10/20 12:08:03 阅读更多 →
单相交流电子负载的核心:DQ锁相环与SOGI在STM32上的实现

单相交流电子负载的核心:DQ锁相环与SOGI在STM32上的实现

简介:面向2022年电赛A题“单相交流电子负载”的STM32F407VET6单相DQ锁相环工程,针对PWM整流与逆变器场景下的电网同步难题,提供从三相DQ锁相原理迁移到单相的完整实现思路,适用于电赛备赛学生与电力电子方向开发者参考。压缩包共1…

2026/10/20 12:08:03 阅读更多 →
国产算力地基开源:大模型推理从能跑到跑得好的底层优化实践

国产算力地基开源:大模型推理从能跑到跑得好的底层优化实践

1. 从"模型狂欢"到"地基焦虑":为什么这次开源值得单独聊过去两年,大家习惯了每隔几周就有一个新模型刷榜,参数从百亿卷到千亿,上下文从 32K 卷到 1M,评测分数一轮比一轮好看。但真正在一线做推理部…

2026/10/20 12:08:03 阅读更多 →
单相交流电子负载核心技术:PWM整流与DQ锁相环实现解析

单相交流电子负载核心技术:PWM整流与DQ锁相环实现解析

简介:面向2022年电赛A题参赛者,围绕单相交流电子负载与单相PWM整流器中的电网同步需求,给出基于STM32F407VET6的单相DQ锁相环工程实现。工程由STM32CubeMX生成初始化代码,核心算法参考三相DQ锁相原理改写,主要程序集中…

2026/10/20 12:08:03 阅读更多 →
STC15W4K软件库移植指南:寄存器、串口与ADC外设驱动实战

STC15W4K软件库移植指南:寄存器、串口与ADC外设驱动实战

简介:面向STC15W4K系列单片机的嵌入式开发,这套软件库将I/O端口操作、定时器配置、串口通信、中断处理、ADC转换等常用功能封装为可直接调用的函数,帮助开发者减少重复开发底层驱动的工作,专心实现业务逻辑。借助这些封装好的模块…

2026/10/20 12:08:03 阅读更多 →
IDEA中将JNI DLL打包进JAR的完整实践指南

IDEA中将JNI DLL打包进JAR的完整实践指南

1. 项目概述:为什么要把 JNI DLL 打进 JAR 包里?“idea jni dll打包进jar”——这短短九个字,背后藏着 Java 工程师在跨平台调用本地代码时最真实、最频繁的痛点。我第一次遇到这个问题,是在给某高校实验室开发一个图像预处理模块…

2026/10/20 12:07:02 阅读更多 →

日新闻

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
ESP32舵机控制指南:原理、多路驱动与避坑实战

ESP32舵机控制指南:原理、多路驱动与避坑实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
位移法实现一阶低通滤波:单片机ADC采样降噪实战

位移法实现一阶低通滤波:单片机ADC采样降噪实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/20 10:02:13 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/19 17:32:41 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/20 2:50:50 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 10:02:08 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:45 阅读更多 →