【RAG】RAG综述|一文了解RAG|从零开始(下)

本篇是 【RAG】RAG综述|一文了解RAG|从零开始(下)的后续,重点讲解RAG的结构与重点技术。

5. RAG的架构

在这里插入图片描述

5.1 Naive RAG

这是最简单的RAG架构,其工作流程为:

  1. 用户查询
  2. 检索信息
  3. 利用prompt技术增强
  4. 将prompt输入到LLM生成结果

5.2 Advanced RAG

相比于朴素RAG,高级RAG主要优化了索引步骤和生成步骤。高级RAG技术提高了信息检索和后续内容生成的效率、准确性和相关性。

高级RAG涉及的主要技术:检索前处理和数据索引技术、知识分片技术、检索技术、后检索技术和生成技术。

5.2.1 检索前处理和数据索引技术

检索前处理侧重在数据进入向量库或知识图谱之前提高数据的质量。干净、格式良好的数据可以提高检索数据的质量,而嘈杂的数据会显著降低检索结果,从而更容易导致LLM幻觉的产生。

预处理数据的常见方法:

  • 增加信息密度:可以通过LLM对查询进行改写,总结、提取或清理后查询信息密度更高。
  • 删除数据中的重复信息:同样能用LLM对查询进行去重,输出LLM更容易理解、更简洁的查询语句。
  • 使用假设问题索引提高索引对称性
    • 使用语言模型为数据库中每个数据块生成一个或多个问题,并将它们与文档块一起存储。这些问题可用于索引。
    • 在检索的时候,用户查询在语义上与模型生成的所有问题匹配。然后索引与用户查询类似的问题,然后将与检索问题关联的文档块传递给LLM以生成响应。

5.2.2 知识分片技术

知识分片就是将大文档分解成较小的文本块,以便更高效的进行检索和生成。这些较小的文本块,称为chunk,它可以是段落,句子,子句或短语,具体取决于实际应用需求。

常见的分片技术有:

  1. 基于文本长度的切块:例如固定300个词或500个字符对文本进行切分。
  2. 滑动窗口技术:这种方法通过在连续的文本块之间使用重叠区域来进行切块,确保每个块都可以包含部分上下文信息。这在需要上下文连贯性的应用中非常有用,比如生成模型需要更大的上下文信息来生成准确的内容。
  3. 基于句子的切块:按句子对文本进行切分,适用于短且结构简单的文档。
  4. 基于语义的切块:可以根据章节、段落、主题或关键字进行切分。这种切分出来的块更具有语义一致性。
  5. 自然语言处理技术:通过分句、分词、主题建模等NLP技术对文本进行切分。好处就是能用NLP技术识别到文本中的语义边界,使得切出来的块更具语义。

关于chunk优化的代码实践:https://blog.youkuaiyun.com/2401_85325557/article/details/143359056

5.2.3 分层索引

使用分层索引来提高RAG应用程序的精度。在这种方法中,数据被组织成一个分层结构,信息根据相关性和关系进行分类和子分类。

检索过程从较宽的数据块或父节点开始,然后再链接到所选父节点的较小数据块或子节点中进行更集中的搜索。分层索引不仅可以提高检索效率,还可以最大限度减少最终输出中包含不相关的数据。

在这里插入图片描述
在这里插入图片描述

5.2.4 检索技术

5.2.4.1 优化用户查询

该技术将用户的查询重构为LLM更容易理解且检索器更容易使用的格式。技术实现上可通过微调的语言模型处理用户查询,以优化和构建它。此过程会删除任何不相关的上下文并添加必要的元数据,从而确保查询针对底层数据存储进行定制。

例子:
原始:who was the director of the Godfather?
LLM处理后:(Movice: “The Godfather” …)

5.2.4.2 通过假想文档嵌入修复查询和文档不对称

在这里插入图片描述

假想文档嵌入(HyDE)技术是一个新颖且强大的方法。它通过生成一个假想的文档来增强查询的检索效果,再通过嵌入向量查找与假想文档相似的实际文档,从而实现更高效的检索。

在传

欧姆龙FINS(工厂集成网络系统)协议是专为该公司自动化设备间数据交互而设计的网络通信标准。该协议构建于TCP/IP基础之上,允许用户借助常规网络接口执行远程监控、程序编写及信息传输任务。本文档所附的“欧ronFins.zip”压缩包提供了基于C与C++语言开发的FINS协议实现代码库,旨在协助开发人员便捷地建立与欧姆龙可编程逻辑控制器的通信连接。 FINS协议的消息框架由指令头部、地址字段、操作代码及数据区段构成。指令头部用于声明消息类别与长度信息;地址字段明确目标设备所处的网络位置与节点标识;操作代码定义了具体的通信行为,例如数据读取、写入或控制器指令执行;数据区段则承载实际交互的信息内容。 在采用C或C++语言实施FINS协议时,需重点关注以下技术环节: 1. **网络参数设置**:建立与欧姆龙可编程逻辑控制器的通信前,必须获取控制器的网络地址、子网划分参数及路由网关地址,这些配置信息通常记载于设备技术手册或系统设置界面。 2. **通信链路建立**:通过套接字编程技术创建TCP连接至控制器。该过程涉及初始化套接字实例、绑定本地通信端口,并向控制器网络地址发起连接请求。 3. **协议报文构建**:依据操作代码与目标功能构造符合规范的FINS协议数据单元。例如执行输入寄存器读取操作时,需准确配置对应的操作代码与存储器地址参数。 4. **数据格式转换**:协议通信过程中需进行二进制数据的编码与解码处理,包括将控制器的位状态信息或数值参数转换为字节序列进行传输,并在接收端执行逆向解析。 5. **异常状况处理**:完善应对通信过程中可能出现的各类异常情况,包括连接建立失败、响应超时及错误状态码返回等问题的处理机制。 6. **数据传输管理**:运用数据发送与接收函数完成信息交换。需注意FINS协议可能涉及数据包的分割传输与重组机制,因单个协议报文可能被拆分为多个TCP数据段进行传送。 7. **响应信息解析**:接收到控制器返回的数据后,需对FINS响应报文进行结构化解析,以确认操作执行状态并提取有效返回数据。 在代码资源包中,通常包含以下组成部分:展示连接建立与数据读写操作的示范程序;实现协议报文构建、传输接收及解析功能的源代码文件;说明库函数调用方式与接口规范的指导文档;用于验证功能完整性的测试案例。开发人员可通过研究这些材料掌握如何将FINS协议集成至实际项目中,从而实现与欧姆龙可编程逻辑控制器的高效可靠通信。在工程实践中,还需综合考虑网络环境稳定性、通信速率优化及故障恢复机制等要素,以确保整个控制系统的持续可靠运行。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WinddyAkoky

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值