一图窥探RAG技术发展现状

2023年除了大语言模型,听到最多的当属RAG(检索增强生成技术了),在实际业务场景落地过程中,由于大模型目前的一定局限和能力现状以及Token限制、训练成本等多种因素的影响下,RAG不得不成为大家选择快速试错、落地的一种选择和方案。

RAG技术通过查询处理、数据检索、文档优化、增强生成、语义理解、文档结构化和自我增强等多步骤,实现了对用户问题的深度理解和高效回答。🔍📈 从自然语言到数据库查询,再到精准答案,RAG技术让AI的每一步都更加智能和人性化,让我们从这一张图来了解RAG技术体系的全貌。#RAG #人工智能 #自然语言处理 #技术前沿"

一、在RAG技术体系中将用户的问题路由到最合适的数据源或处理路径

一般有语义路由和逻辑路由两种方式。语义路由和逻辑路由可能结合使用,以实现更高效和准确的信息检索。语义路由帮助系统理解查询的深层含义,而逻辑路由确保查询按照正确的逻辑被处理。这种结合可以提高系统对复杂查询的处理能力,尤其是在需要理解用户意图和执行复杂逻辑操作的场景中。

  1. 语义路由(Semantic Routing)

    • 语义路由侧重于理解查询的语义内容,即查询的实际含义和意图。
    • 在RAG系统中,语义路由可能涉及到自然语言处理(NLP)技术,如语义分析、实体识别和意图识别,以确保系统能够准确理解用户的问题。
    • 语义路由的目标是将用户的查询映射到最相关的数据源或处理路径,即使这些路径可能不是直观的或直接的。
    • 例如,如果用户询问“最近的天气如何?”,语义路由会识别出这是一个关于天气查询的问题,并将其路由到提供天气信息的服务或数据库。
  2. 逻辑路由(Logical Routing)

    • 逻辑路由则更侧重于查询的结构和形式,它根据查询的逻辑结构来确定处理路径。
    • 在RAG系统中,逻辑路由可能涉及到对查询语句的解析,识别出查询中的逻辑关系,如AND、OR、NOT等操作。
    • 逻辑路由的目标是确保查询按照既定的规则和顺序被正确处理,以便系统能够生成准确的回答。
    • 例如,如果用户提出一个复杂的SQL查询,逻辑路由会确保查询中的各个部分按照正确的逻辑顺序被执行。

二、RAG技术涉及的以下几个关键过程

  1. 查询处理

    • 用户提出问题后,系统首先需要构建一个有效的查询(Query Construction)。
    • 系统将自然语言查询转换为数据库查询语言,如SQL或Cypher(Text-to-SQL, Text-to-Cypher)。
  2. 数据检索与排名

    • 系统从多种数据源(如关系型数据库、图数据库、向量数据库)检索相关文档(Retrieval)。
    • 对检索到的文档进行排名(Ranking),以确定哪些文档最相关。
  3. 文档处理与优化

    • 对文档进行精炼(Refinement),可能包括重新排名、过滤或压缩,以提高相关性。
    • 自动生成元数据(Auto-generate metadata)以辅助检索。
    • 对文档进行分块优化(Chunk Optimization),以便于处理和生成回答。
  4. 检索增强与生成

    • 使用RAG-Fusion等技术将检索到的信息与生成的回答结合起来。
    • 主动检索(Active Retrieval)确保在初始检索不相关时能够重新检索或从新数据源获取信息。
  5. 语义理解和微调

    • 使用语义分割器(Semantic Splitter)来处理文档,提高理解的准确性。
    • 对模型进行微调(Fine-tuning),如使用ColBERT等先进的嵌入模型,以提高检索和生成的质量。
  6. 文档摘要与结构化

    • 构建文档摘要的树状结构(Tree of document summarization),以便于在不同抽象层次上理解和回答。
    • 优化文档转换为紧凑形式的工具(如RAPTOR),提高检索效率。
  7. 自我增强与迭代

    • 自我增强的RAG(Self-RAG)和重复回答检索(RRR)允许系统自我改进其检索和生成过程。

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

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

相关文章

学习前端的开始

什么是前端 Web前端,用来直接给用户呈现一个一个的网页一个软件通常情况下是由后端前端完成。 后端通常情况下通过Java,C这样一个编程语言来完成一个相关的逻辑处理,将数据返回给前端。 前端的工作把后端返回给自己的数据进行一系列拼装/组装之后&#…

6、5 门关于 AI 和 ChatGPT 的免费课程,带您从 0-100

5 门关于 AI 和 ChatGPT 的免费课程,带您从 0-100 想在 2024 年免费了解有关 AI 和 ChatGPT 的更多信息吗? 图片由 DALLE 3 提供 活着是多么美好的时光啊。还有什么比现在更适合了解生成式人工智能(尤其是 ChatGPT)等人工智能元素的呢!许多人对这个行业感兴趣,但有些…

RK3588平台开发系列讲解(AI 篇)什么是NPU

文章目录 一、什么是NPU二、什么是RKNPU沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇章主要讲解什么是NPU。 一、什么是NPU 📢什么是 NPU 呢? 在谈这个问题之前,可以先来看看什么是 CPU 和 GPU,CPU 就是中央处理器,中央处理器就好像是人类的大脑,主要负…

MySQL进阶45讲【15】“order by“是怎么工作的?

1 前言 在开发应用的时候,一定会经常碰到需要根据指定的字段排序来显示结果的需求。还是以我们前面举例用过的市民表为例,假设要查询城市是“杭州”的所有人名字,并且按照姓名排序返回前1000个人的姓名、年龄。 假设这个表的部分定义是这样…

政安晨:快速学会~机器学习的Pandas数据技能(三)(重命名与合并)

使用机器学习处理数据的第一步就得先理解它,咱们现在就帮助它们一起理解起来。 (本篇文章这次换一套数据集,数据文件可以在文章头部下载,并保存至您的虚拟环境的目录中) 不知道如何搭建环境的小伙伴请看我机器学习笔…

文件上传总结:用原生解决前端文件上传操作(单个,多个,大文件切片)

目录 第一章 前言 第二章 理解文件上传的对象 2.1 如何利用原生实现 2.2 认识理解文件上传的四个对象 2.2.1 file对象 2.2.2 blob对象 2.2.3 formData对象 2.2.4 fileReader对象 2.2.4.1 了解fileReader对象基本属性 2.2.4.2 了解 fileReader对象基本方法 2.2.4.3…

【高阶数据结构】位图布隆过滤器

文章目录 1. 位图1.1什么是位图1.2为什么会有位图1.3 实现位图1.4 位图的应用 2. 布隆过滤器2.1 什么是布隆过滤器2.2 为什么会有布隆过滤器2.3 布隆过滤器的插入2.4 布隆过滤器的查找2.5 布隆过滤器的模拟实现2.6 布隆过滤器的优点2.7 布隆过滤器缺陷 3. 海量数据面试题3.1 哈…

mysql 对于null字段排序处理

最近遇到一个需求 ,需要对一个报表的多个字段进行多字段复杂条件排序 排序字段为NULL时 Mysql对于排序字段为NULL时,有自身默认的排序规则,默认是认为null 值 是无穷小 ELECT id,script_id,last_modified,live_count,next_show FROM virtua…

Kubernetes 简介

📎k8s 入门到微服务项目实战.xmindhttps://www.yuque.com/attachments/yuque/0/2024/xmind/35457682/1707117691869-1ea2805d-7218-4223-a0a9-877147ca84b2.xmind 目录 1、概念介绍 应用部署的演变 Kubernetes 架构图 分层架构 2、Kubernetes 组件 控制面板组…

@PostMapping/ @GetMapping等请求格式

目录 1.只传一个参数的 第一种 第二种 第三种:表单 2.传整个对象的 2.1修改实体类就是传整个对象过来 2.2新增实体类就是传整个对象过来新增 1.只传一个参数的 第一种 PostMapping("/add/{newsId}")public Result addOne(PathVariable Integer newsId) {}pos…

【GAMES101】Lecture 19 透镜

目录 理想的薄透镜 模糊 利用透镜模型做光线追踪 景深(Depth of Field) 理想的薄透镜 在实际的相机中都是用的一组透镜来作为这个镜头 这个因为真实的棱镜无法将光线真正聚焦到一个点上,它只能聚在一堆上 所以方便研究提出了一种理想化的…

vue3 解决ionic安卓版顶部状态栏空白问题

问题展示: 解决:引入capacitor/status-bar npm install capacitor/status-bar npx cap sync在需要设置状态栏的组件上设置背景跟颜色即可

spring boot整合 cache 以redis服务 处理数据缓存 便捷开发

我们常规开发中 就是程序去数据库取数据 然后返回给客户端 但是 如果有些业务业务量非常庞大 不断访问数据库 性能就会非常糟糕 从而造成不好的用户体验 那么 我们自然就可以将数据查到缓存中 然后 用户访问 从缓存中取 这样就会大大提高用户的访问效率 之前 我的文章 java …

vue3集成bpmn

文章目录 前言一、依赖二、汉化配置1.引入文件2.样式文件 总结 前言 vue3 集成bpmn 配置工作流 一、依赖 "bpmn-js": "^7.3.1", "bpmn-js-properties-panel": "^0.37.2", "bpmn-moddle": "^6.0.0", "camu…

C#,聚会数(相遇数,Rencontres Number)的算法与源代码

1 相遇数 相遇数(Rencontres Number,partial derangement numbers)是指部分扰动的数量,或与独立对象的r相遇的置换数(即具有固定点的独立对象的置换数)。 看不通。懂的朋友给解释一下哈。 2 源程序 using…

DC-8靶机渗透详细流程

信息收集: 1.存活扫描: arp-scan -I eth0 -l └─# arp-scan -I eth0 -l Interface: eth0, type: EN10MB, MAC: 00:0c:29:dd:ee:6a, IPv4: 192.168.10.129 Starting arp-scan 1.10.0 with 256 hosts (https://github.com/royhills/arp-scan) 192.168.10…

版本控制工具——Git

版本控制工具——Git 前言一、版本库二、git的工作区域和文件状态三、添加和提交文件四、回退版本:git reset --模式 版本号五、查看差异:git diff六、从版本库中删除文件七、.gitignore:git中的特殊文件八、Git、GitHub跟Sourcetree的关系九…

python多线程连接MySQL查数案例

该博文展示地是基本示例,实际使用时可能需要进行调整。例如,你可能需要添加错误处理来确保数据库连接问题不会导致脚本崩溃,或者你可能需要调整查询以匹配你的数据。 此外,你需要确保你的系统有足够的内存和处理能力来支持并行处理…

【JS逆向一】逆向某站的 加密参数算法--仅供学习参考

逆向日期:2024.02.06 使用工具:Node.js 文章全程已做去敏处理!!! 【需要做的可联系我】 可使用AES进行解密处理(直接解密即可):在线AES加解密工具 1、打开某某网站(请使用文章开头的…

有道ai写作,突破免费限制,无限制使用

预览效果 文末提供源码包及apk下载地址有道ai写作python版 import hashlib import time import json import ssl import base64 import uuidfrom urllib.parse import quote import requests from requests_toolbelt.multipart.encoder import MultipartEncoder from Crypto.C…