RAG:检索增强生成技术概览

Why

将大模型应用于实际业务场景时会发现,通用的基础大模型基本无法满足我们的实际业务需求,主要有以下几方面原因:

  • 知识的局限性:大模型对于一些实时性的、非公开的或离线的数据是无法获取到的。
  • 幻觉问题:所有的AI模型的底层原理都是基于数学概率,其模型输出实质上是一系列数值运算,大模型也不例外,所以它有时候会一本正经地胡说八道,尤其是在大模型自身不具备某一方面的知识或不擅长的场景。而这种幻觉问题的区分是比较困难的,因为它要求使用者自身具备相应领域的知识。
  • 数据安全性:对于企业来说,数据安全至关重要,没有企业愿意承担数据泄露的风险,将自身的私域数据上传第三方平台进行训练。

RAG vs Fine-tuning

Fine-tuning(微调)是用一定量的数据集对LLM进行局部参数的调整,以期望LLM更加理解我们的业务逻辑,有更好的zero-shot能力。

RAG(检索增强生成)是把内部的文档数据先进行embedding,借助检索先获得大致的知识范围答案,再结合prompt给到LLM,让LLM生成最终的答案。

What:

RAG = LLM + 外部知识

RAG(Retrieval-Augmented Generation)检索增强生成就是通过检索获取相关的知识并将其融入Prompt,让大模型能够参考相应的知识从而给出合理回答。

image.png

Retrieval - 检索模型

旨在从一组给定的文档或知识库中检索相关信息。具体来说,将用户的查询 embedding,以便与向量数据库中的其他上下文信息进行比对。通过这种相似性搜索,可以找到向量数据库中最匹配的前 k 个数据。

检索的核心分为如下两部分:

  • 索引:嵌入(Embeddings),将知识库转换为可搜索/查询的内容。
  • 查询:从搜索内容中提取最相关的、最佳知识片段。

Augmented - 增强

将用户的查询和检索到的额外信息一起嵌入到一个预设的提示模板中。

Generate - 生成模型

最终,检索增强 prompt 被输入到 LLM 中。

Piepline

1. 提取数据阶段

image.png Ingestion stage of a RAG pipeline

1.1 数据清洗

在进行以下任何步骤之前,确保数据符合以下标准:

  • clean:应用一些常见的自然语言处理基础数据清理技术,例如确保所有特殊字符都被正确编码。
  • correct:确保信息一致且事实准确,以避免相互矛盾的信息混淆 LLM。

1.3 Chunking

一个需要考虑的因素是分块技术的选择。例如,在[LangChain]中,不同的文本拆分器会根据不同的逻辑来拆分文档,例如按字符、标记等。这取决于您所拥有的数据类型。例如,如果你的输入数据是代码,与Markdown文件相比,你需要使用不同的分块技术。

理想的分块长度(chunk_size)取决于你的用例:如果你的用例是问答,可能需要较短的具体分块,但如果用例是摘要,可能需要较长的分块。此外,如果分块太短,可能不会包含足够的上下文。另一方面,如果分块太长,可能会包含过多无关的信息。

此外,还需要考虑在分块之间引入一些额外上下文的 “滚动窗口”(overlap)

1.4 Embedding models - LLM

  1. 通常,生成 embedding 的维度越高,embedding 的精度就越高。

    [MTEB Leaderboard - a Hugging Face Space by mteb]中文文本嵌入模型比较

  2. LlamaIndex 的实验显示,微调 embedding models [5–10%]

1.5 Metadata

给向量嵌入添加 metadata 标注 可以在后续的搜索结果处理中发挥重要作用,如进行元数据筛选。比如,可以加入诸如日期、章节或小节的引用等额外信息。

1.6 Multi-indexing

在 metadata ****无法充分区分不同上下文类型的情况下,可以考虑尝试多重索引技术。比如,针对不同文档类型采用不同的索引策略。注意,这样做需要在数据检索时加入索引路由机制。

对于表:可以提取每个表,生成适合检索的表摘要,但将原始表返回到LLM进行答案合成。

image.png

1.7 Indexing algorithms

向量数据库和索引库通常采用近似最近邻 (ANN) 搜索方法,而不是传统的 k-最近邻 (kNN) 搜索。ANN 算法通过近似计算来定位最近邻,因此可能在精确度上稍逊于 kNN 算法。

2. 推理阶段 (Retrieval & Generation)

image.png Inference stage of a RAG pipeline

2.1 Retrieval

2.1.1 Query transformations - LLM

[query transformation techniques]

  • Rephrasing: 使用 LLM 重新措辞 query 并再次尝试。query 的措辞会直接影响搜索结果。

  • 假设性文档嵌入 (HyDE) :使用 LLM 生成假设性响应(答案)。该答案用于搜索查询。

  • 子查询:将复杂查询分解为子问题。

  • 假设性问题:为每个分块生成一个问题,对问题向量执行查询搜索,然后在检索后路由到原始文本分块。

  • Step-back prompting | multi-query: 利用大模型生成多个query 来检索,然后筛选。

[Query Transform Cookbook - LlamaIndex]

2.1.2 Retrieval parameters | Hybrid search

[Hybrid search]

The first consideration is whether semantic search will be sufficient for your use case or if you want to experiment with hybrid search.

在选择混合搜索时,需要研究如何在稀疏和密集检索方法之间进行有效的权重分配 [1, 4, 9]。这就涉及到调整 alpha 参数,该参数负责平衡基于语义的搜索(alpha = 1)和基于关键词的搜索(稀疏)(alpha = 0)的重要性。

image.png [Improving Retrieval Performance in RAG Pipelines with Hybrid Search]

如何通过混合搜索在 RAG 流程中提升检索性能

混合搜索也可以是将检索实体关系的知识图技术与 vector search 相结合。

不同的搜索系统各自擅长揭示文本(段落、句子、单词)中的各种微妙联系,包括精确关系、语义关系、主题关系、结构关系、实体关系、时间关系和事件关系。可以说,没有一种单一的搜索模式适用于所有情况。混合搜索通过整合多个搜索系统,在各种搜索技术之间实现了互补。

2.1.3 Advanced retrieval strategies

基本思想是,用于检索的块不一定是用于生成的相同块。理想情况下,应该嵌入更小的数据块来进行检索,但同时检索更广泛的上下文。The concept here is to retrieve smaller chunks for better search quality, but add up surrounding context for LLM to reason upon.

  • Sentence-window retrieval: 在检索时,不只是找到相关的单个句子,而是要获取该句子前后的相关句子。

  • Auto-merging retrieval(aka Parent Document Retriever): 文档按树状结构组织。在查询时,可以把若干个小的、相关的数据块合并成一个更大的上下文。

    文档被分割成层次化的块结构,最小的叶子块被送至索引。在检索时,我们会找出 k 个叶子块,如果存在 n 个块都指向同一父块,我们就用这个父块替换它们,并把它送给 LLM 用于生成答案。

2.1.4 查询构建

自然语言的 query 需要转换为检索的查询语法。

image.png

文本到 Metadata Filter

配备 Metadata Filter 的向量存储使结构化查询能够过滤嵌入式非结构化文档。self-query retriever可以使用向量存储中元数据字段的规范,使用元数据过滤器将自然语言转换为这些结构化查询。

文本到 SQL

相当多的工作集中在将自然语言翻译成SQL请求上。通过向LLM提供自然语言问题以及相关表格信息,可以轻松完成从文本到SQL的转换。开源LLM可以轻松完成此类任务。

文本到 Cypher

  • 向量存储很容易处理非结构化数据,但它们不理解向量之间的关系。
  • SQL数据库可以对关系进行建模,但模式更改可能具有破坏性且成本高昂。

知识图谱可以通过对数据之间的关系进行建模和扩展关系类型来应对这些挑战。对于具有难以以表格形式表示的多对多关系或层次结构的数据,它们也是比较适合的。

Re-ranking models - LLM

image.png

使用重排序模型时,可能需要重新调整搜索结果的数量(re-rank 输入),以及想要输入到大语言模型的经过重排序的结果数量(re-rank 输出)。

嵌入模型 一样,可能需要尝试针对特定应用场景对重排序模型进行微调

re-rank 是增强现有搜索系统的辅助工具。它最大的优势在于不仅提供了一种简单和低复杂度的方法来改善搜索结果,而且还允许用户将语义相关性集成到现有的搜索系统中,而无需进行重大基础设施修改。

Query Routing - LLM

是指在接收到用户的查询后,由大语言模型决定接下来的操作步骤。常见的做法包括概述查询内容、对特定数据索引进行搜索,或尝试多个不同的处理方法,并将这些方法的结果合成一个答案。

选择特定路由的过程是通过大语言模型来实现的,其结果按照预定义的格式返回,以指导查询到达指定的索引。如果是涉及到关联操作,这些查询还可能被发送到子链或其他智能体。

2.2 Generation

2.2.1 LLMs - LLM

与嵌入模型或重新排序模型一样,你可能希望尝试根据你的特定用例对 LLM 进行微调,以合并特定的措辞或语气。

2.2.2 Prompt engineering

Please base your answer only on the search results and nothing else!
Very important! Your answer MUST be grounded in the search results provided. 
Please explain why your answer is grounded in the search results!

此外,在提示中使用少样本示例可以提高完成任务的质量。

输入到提示中的上下文数量是一个需要你进行实验的参数。

Chat Engine

It is solved by query compression technique, taking chat context into account along with the user query.

  • ContextChatEngine: 检索与用户查询相关的上下文,然后将其与内存缓冲区中的聊天历史一起发送到LLM。 (query → context) + history → answer
  • CondensePlusContextMode: <(query + history) → new query> + context → answer

image.png

Response synthesiser

基于初始查询和检索到的所有上下文生成response。

  1. 将所有获取到的 contexts(超过某个相关性阈值)与查询一起连接并一次性输入到LLM中。
  2. 通过逐步将检索到的 contexts 分块发送到LLM,迭代地完善答案。
  3. 将检索到的内容总结成符合 prompt 的形式。
  4. 基于不同的 contexts 生成多个答案,然后将它们连接或总结。

在这里插入图片描述

大模型&AI产品经理如何学习

求大家的点赞和收藏,我花2万买的大模型学习资料免费共享给你们,来看看有哪些东西。

1.学习路线图

在这里插入图片描述

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

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

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

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

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

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

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

2.视频教程

网上虽然也有很多的学习资源,但基本上都残缺不全的,这是我自己整理的大模型视频教程,上面路线图的每一个知识点,我都有配套的视频讲解。

在这里插入图片描述

在这里插入图片描述

(都打包成一块的了,不能一一展开,总共300多集)

因篇幅有限,仅展示部分资料,需要点击下方图片前往获取

3.技术文档和电子书

这里主要整理了大模型相关PDF书籍、行业报告、文档,有几百本,都是目前行业最新的。
在这里插入图片描述

4.LLM面试题和面经合集

这里主要整理了行业目前最新的大模型面试题和各种大厂offer面经合集。
在这里插入图片描述

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

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

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

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

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

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

在这里插入图片描述

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

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

相关文章

828华为云征文 | 利用FIO工具测试Flexus云服务器X实例存储性能

目录 一、Flexus云服务器X实例概要 1.1 Flexus云服务器X实例摘要 1.2 产品特点 1.3 存储方面性能 1.4 测评服务器规格 二、FIO工具 2.1 安装部署FIO 2.2 主要性能指标概要 三、进行压测 3.1 测试全盘随机读IO延迟 3.2 测试全盘随机写IO延迟 3.3 测试随机读IOPS 3.4…

R包:ggheatmap热图

加载R包 # devtools::install_github("XiaoLuo-boy/ggheatmap")library(ggheatmap) library(tidyr)数据 set.seed(123) df <- matrix(runif(225,0,10),ncol 15) colnames(df) <- paste("sample",1:15,sep "") rownames(df) <- sapp…

云中红队系列 | 使用 Azure FrontDoor 混淆 C2 基础设施

重定向器是充当 C2 服务器和目标网络之间中间人的服务器。其主要功能是重定向 C2 和受感染目标之间的所有通信。重定向器通常用于隐藏 C2 服务器流量的来源&#xff0c;使防御者更难以检测和阻止 C2 基础设施。 基于云的重定向器提供了一个很好的机会&#xff0c;通过内容分发…

安卓使用memtester进行内存压力测试

memteser简介 memtester 是一个用于测试内存可靠性的工具。 它可以对计算机的内存进行压力测试&#xff0c;以检测内存中的错误&#xff0c;例如位翻转、随机存取错误等。memtester 可以在不同的操作系统上运行&#xff0c;并且可以针对不同大小的内存进行测试。 下载源码 m…

[单master节点k8s部署]29.Istio流量管理(五)

测试istio熔断管理。 采用httpbin镜像和fortio镜像&#xff0c;其中httpbin作为服务端&#xff0c;fortio是请求端。这两个的配置yaml文件都在istio的samples/httpbin目录下&#xff0c;fortio的配置文件在samples-client目录下。 [rootmaster httpbin]# ls gateway-api ht…

国外电商系统开发-运维系统执行设备属性

为了方便使用&#xff0c;开发了双击网络设备图标&#xff0c;就进入交互式命令终端&#xff0c;在这里您可以执行如cd&#xff0c;top&#xff0c;ping这样的交互命令&#xff0c;但仍然不支持部分交互命令&#xff0c;比如vim等。 您可以双击设备图标&#xff0c;或者是右键&…

如何从计算机的硬盘中恢复照片 - 成功

如何从计算机硬盘恢复图片&#xff1f; 与所有电子和机械设备一样&#xff0c;硬盘驱动器也可能由于任何原因而死机。如果您的系统硬盘驱动器已停止工作或在启动系统时听到振动声&#xff0c;则它有可能已死机。如果是这样的话&#xff0c;上面的数据呢&#xff1f; 不要惊慌…

Python使用matplotlib绘制图形大全(曲线图、条形图、饼图等)

matplotlib 的主要组成部分是 pyplot&#xff0c;它是一个类似于 MATLAB 的绘图框架。pyplot 提供了一个 MATLAB 式的接口&#xff0c;可以隐式地创建图形和轴&#xff0c;使得绘图变得简单。 以下是一个简单的 matplotlib 使用示例&#xff0c;用于绘制一条简单的折线图&…

高考选择在何方?揭秘空军、海军、民航三大招飞神秘机遇

空军招飞、海军招飞和民航招飞在全国普通高校招生体系中举足轻重&#xff0c;为国家培育众多优秀飞行人才。 空军招飞在国家多部门领导下&#xff0c;由空军与相关省&#xff08;区&#xff09;教育、公安部门组织实施&#xff0c;设有七个招飞中心。自 1987 年空军自主招飞以来…

28 基于51单片机的两路电压检测(ADC0808)

目录 一、主要功能 二、硬件资源 三、程序编程 四、实现现象 一、主要功能 基于51单片机&#xff0c;通过ADC0808获取两路电压&#xff0c;通过LCD1602显示 二、硬件资源 基于KEIL5编写C代码&#xff0c;PROTEUS8.15进行仿真&#xff0c;全部资源在页尾&#xff0c;提供…

springboot中配置优先级

先来看在idea当中运行程序时&#xff0c;如何来指定Java系统属性和命令行参数。 系统属性 1、右键启动类&#xff0c;点击Edit Configuration 点击Modify options 选择Add VM options&#xff0c;就是系统属性 选择Program arguements&#xff0c;就是命令行参数 总结&#…

OpenAI 开发者大会!实时语音功能有API了,GPT-4o支持多模态微调,上下文cache功能上线

家人们&#xff01;十一假期第1天&#xff0c; OpenAI一年一度的开发者大会又来了惹&#xff01;今年的开发者大会分成三部分分别在美国、英国、新加坡三个地点举办&#xff0c;刚刚结束的是第一场。 去年的OpenAI开发者大会公布了GPT-4 Turbo和GPTs&#xff0c;今年没有大更新…

win10不想被强制更新win11怎么办?

还有一种办法是可以去联想官网下载一个工具&#xff0c;确实可行但是不能访问联想商店了&#xff0c;不过会限制一些微软游戏&#xff0c;比如我喜欢的腐烂国度2&#xff0c;所以我选择了这一种方式&#xff0c;亲测可行

外贸网站怎么搭建对谷歌seo比较好?

外贸网站怎么搭建对谷歌seo比较好&#xff1f;搭建一个网站自然不复杂&#xff0c;但要想搭建一个符合谷歌seo规范的网站&#xff0c;那就要多注意了&#xff0c;你的网站做的再酷炫&#xff0c;再花里胡哨&#xff0c;但如果页面都是js代码&#xff0c;或者页面没有源代码内容…

认识动态规划算法和实践(java)

前言 动态规划算法里面最有意思的一个东西之一。动态规划初学肯定会有一定晦涩难懂。如果我们去网上搜索&#xff0c;动态规划的资料&#xff0c;它一开始都是将很多的理论&#xff0c;导致会认为很难&#xff0c;但是这个东西实际上是有套路的。 动态规划的英语是Dynamic Pr…

Centos Stream 9备份与恢复、实体小主机安装PVE系统、PVE安装Centos Stream 9

最近折腾小主机&#xff0c;搭建项目环境&#xff0c;记录相关步骤 数据无价&#xff0c;丢失难复 1. Centos Stream 9备份与恢复 1.1 系统备份 root权限用户执行进入根目录&#xff1a; cd /第一种方式备份命令&#xff1a; tar cvpzf backup.tgz / --exclude/proc --exclu…

sentinel原理源码分析系列(一)-总述

背景 微服务是目前java主流开发架构&#xff0c;微服务架构技术栈有&#xff0c;服务注册中心&#xff0c;网关&#xff0c;熔断限流&#xff0c;服务同学&#xff0c;配置中心等组件&#xff0c;其中&#xff0c;熔断限流主要3个功能特性&#xff0c;限流&#xff0c;熔断&…

【Kubernetes】常见面试题汇总(五十二)

目录 116. K8S 集群服务暴露失败&#xff1f; 117.外网无法访问 K8S 集群提供的服务&#xff1f; 特别说明&#xff1a; 题目 1-68 属于【Kubernetes】的常规概念题&#xff0c;即 “ 汇总&#xff08;一&#xff09;~&#xff08;二十二&#xff09;” 。 题目 69-…

社群团购中的用户黏性价值:以开源小程序多商户AI智能名片商城源码为例

摘要&#xff1a;本文探讨社群团购中的用户黏性价值&#xff0c;分析其与传统团购网站的区别&#xff0c;并阐述开源小程序多商户AI智能名片商城源码在增强社群团购用户黏性方面可能发挥的作用。 一、引言 在当今的商业环境中&#xff0c;社群团购逐渐成为一种重要的营销模式。…

如何设计能吸引下载的截图以及注意事项

应用商店优化包括两个方面&#xff1a;关键字优化&#xff08;吸引人们查看您的应用页面&#xff09;和屏幕截图优化&#xff08;将浏览量转化为下载量&#xff09;。两者相互依存&#xff0c;两者相辅相成&#xff0c;让您的应用获得应有的下载量。但是&#xff0c;如果浏览量…