当前位置: 首页 > news >正文

【第三十二周】RAG学习02

文章目录

  • 摘要
  • Abstract
  • 一、项目疑问解答
    • 1. 传统信息检索,检索增强生成和无向量RAG
      • 1.1 传统信息检索
      • 1.2 检索增强生成(RAG)
      • 1.3 无向量RAG
      • 1.4 补充
    • 2. 大模型工作的核心
      • 2.1 Prompt的转变过程
      • 2.2 转变后Token维度的决定因素
  • 二、调试过程遇到问题
    • 1. OpenAI 配额问题
  • 总结

摘要

本周主要复现PageIndex项目,根据具体出现的问题对项目进行调整修改。


Abstract

This week, I mainly focused on reproducing the PageIndex project, and made adjustments and modifications to the project according to the specific problems encountered during the process.


一、项目疑问解答

1. 传统信息检索,检索增强生成和无向量RAG

1.1 传统信息检索

传统信息检索:模型对 Prompt 中的内容进行 关键词相似度匹配,其中"相似度"是统计相关性,更类似于匹配关键词的频率,根据出现关键词的频率找到可能相关的文档

1.2 检索增强生成(RAG)

RAG:结合了检索和生成,实现推理型检索。基于自身的海量训练数据和上下文理解能力,将检索到的文档作为上下文输入到大模型中,并进行逻辑推理,最终筛选出相关节点。

RAG分为四种:
①基于向量检索的RAG(主流);

说明:基于向量的RAG将整个查询文本和知识库中的每个文本块分别转换为一个固定维度的向量,然后通过计算查询向量与所有文档向量的相似度,找到最相关的文本块作为上下文,最后用大模型生成答案。

②基于关键词检索的RAG(无向量RAG);
③混合检索RAG;
④其他检索方式的RAG

1.3 无向量RAG

无向量RAG:检索阶段使用传统检索方法来获取相关文档(即称为无向量的原因),然后用大模型生成答案,而不仅仅是返回一个文档列表。

无向量RAG主要实现方式:
①基于倒排索引的关键词检索;
②基于知识图谱的关系检索;
③基于规则的检索

1.4 补充

1,对于无向量RAG和传统信息检索的理解:

  • 传统检索就是类似于搜索引擎,输入问题会返回一个个相关网址,需要用户自己点击各个文章获取答案。
  • 无向量Rag就是相当于获取相关网站后大模型帮用户总结答案。所以无向量RAG为传统检索+大模型

2,对于不同阶段token与向量的映射

2. 大模型工作的核心

2.1 Prompt的转变过程

1. 文本标准化与清理

去除多余空格、统一编码、可能进行一些语言特定的规范化,确保输入文本的格式统一、干净。

2. 分词

模型使用一个预训练的分词器将文本字符串拆分成更小的单元——Token。

3. 转换为Token ID

分词器内部有一个 “词汇表” ,这是一个从Token到唯一整数ID的映射表。模型将上一步得到的Token序列,根据这个词汇表,转换成一个对应的整数ID序列。

4. 添加特殊Token

根据模型架构和任务,在Token序列的开头、结尾或中间插入具有特定功能的特殊Token。

5. 转换为嵌入向量

操作:模型内部有一个 “嵌入层”。它将每一个整数Token ID,映射为一个高维的、稠密的浮点数向量,称为 “词嵌入”。

关键:这个向量捕获了该Token的语义和语法信息。语义相近的Token,其向量在空间中的距离也更近。

输出:至此,文本Prompt变成了一个二维张量,形状为 [序列长度, 嵌入维度]。

6. 添加位置编码

Transformer模型本身不具备感知单词顺序的能力。因此,需要为序列中每个位置生成一个特定的“位置编码”向量,并将其加到对应的词嵌入向量上。

方式:可以是固定的(如原始Transformer的正余弦函数),也可以是模型通过学习得到的。

7. 进入Transformer核心

操作:经过上述处理的张量被送入由多层Transformer块堆叠而成的主体结构。

过程:在这里,经过自注意力机制和前馈神经网络的多层计算,每个位置的Token向量都会吸收整个序列中其他Token的上下文信息,其含义被极大地丰富和修正。此时的向量不再是单纯的“词义”,而是包含了完整上下文信息的“上下文表示”。

2.2 转变后Token维度的决定因素

“Token的维度”指的是每个Token被表示成的那个向量的长度,也就是 “模型隐藏层的大小” 或 “嵌入维度”。

这个维度完全由模型本身的架构设计决定,在模型训练完成后就固定不变了。

疑问:隐藏层对token输入维度也有要求吗?不是只对输出维度有要求吗?
隐藏层对输入维度有严格要求,而且这个要求是统一的。

二、调试过程遇到问题

1. OpenAI 配额问题

解决方案1:【如何优雅处理OpenAI API配额耗尽错误(429错误)】

解决方案2:由于项目内部使用闭源云端模型,将项目代码修改为PageIndex 本地部署 和 开源模型 的搭配。
注:目前还没跑通(苦涩)


总结

项目中模型替换过程需要对每一处都进行替换,由于原模型在项目中出现位置较多,会遗漏一些地方,模型的修改需要细致。

http://www.jsqmd.com/news/299491/

相关文章:

  • Lab2-system calls MIT6.1810操作系统工程【持续更新】
  • 学霸同款2026 AI论文写作软件TOP9:研究生开题报告必备测评
  • 面向 OpenHarmony 的 Flutter 应用实战:TodoList 多条件过滤系统的状态管理与性能优化
  • 无状态 Widget 下的实时排序:Flutter for OpenHarmony 中 TodoList 的排序策略与数据流控制
  • 从数据模型到响应式渲染:Flutter for OpenHarmony 上 TodoList 优先级系统的端到端类型安全实践
  • 从系统亮度监听到 UI 重绘:Flutter for OpenHarmony TodoList 深色模式的端到端响应式实现
  • 在 OpenHarmony 上打造智能 TodoList:基于 Flutter 的标签分类与动态过滤实践
  • 数字化种植牙企业
  • 智能摄像头在智能车道路视频采集中的关键技术及应用解析
  • 基于Java的工程车辆成本核算智慧管理系统的设计与实现全方位解析:附毕设论文+源代码
  • 【毕业设计】基于springboot的生日商城的设计与实现(源码+文档+远程调试,全bao定制等)
  • 基于Java的工程材料运费智慧管理系统的设计与实现全方位解析:附毕设论文+源代码
  • 基于Java的工程机械设备智慧管理系统的设计与实现全方位解析:附毕设论文+源代码
  • 基于Java的工程材料销售智慧管理系统的设计与实现全方位解析:附毕设论文+源代码
  • 基于Java的工程竣工资料智慧管理系统的设计与实现全方位解析:附毕设论文+源代码
  • 基于Java的工程规范智慧管理系统的设计与实现全方位解析:附毕设论文+源代码
  • 基于Java的工程机械智慧管理系统的设计与实现全方位解析:附毕设论文+源代码
  • 【品牌速成】想做 Private Label 没图怎么办?解析 AI 图像技术如何实现产品图片的“虚拟贴牌”
  • 多Agent全链路实战:从零开始构建企业级AI营销系统,程序员必学指南
  • 【高阶运营】主图点击率全靠猜?揭秘大卖如何用 AI 批量制作“AB测试”素材,用数据跑出爆款!
  • C++ 指针与数组:从一维遍历到二维数组的指针操作详解
  • 二维数组指针操作
  • Python函数
  • Spring事务的传播机制
  • 【柔性作业车间调度FJSP】基于蛇鹫优化算法(SBOA)求解柔性作业车间调度问题(FJSP)研究附Matlab代码
  • 【柔性作业车间调度问题】基于四种多目标优化算法(NSPSO、NSOOA、NSDBO、NSCOA)求解柔性作业车间调度问题(FJSP)对比研究附Matlab代码
  • 【柔性作业车间调度问题FJSP】基于部落竞争与成员合作算法CTCM求解柔性作业车间调度问题(FJSP)研究附Matlab代码
  • ppo导航依赖第一步,那是rnn好还是transformer
  • 【柔性作业车间调度FJSP】基于河马优化算法HO求解柔性作业车间调度问题(FJSP)研究附Matlab代码
  • Java毕设项目:基于springboot的生日商城的设计与实现(源码+文档,讲解、调试运行,定制等)