news 2026/3/26 18:58:36

【第三十二周】RAG学习02

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【第三十二周】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 本地部署 和 开源模型 的搭配。
注:目前还没跑通(苦涩)


总结

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/19 20:19:34

传统ChatBot四大瓶颈与AgenticRAG完整认知闭环:工业级开发实践

传统ChatBot因架构认知局限难以实现生产级可靠性。AgenticRAG通过理解推理验证实现完整认知闭环,Agent作为AI应用层操作系统决定应用可靠性与复杂度上限。深蓝学院开设工业级RAG系统与Agent应用开发实战课程,由商汤科技专家授课,帮助学员从Pr…

作者头像 李华
网站建设 2026/3/20 0:51:40

【柔性作业车间调度问题FJSP】基于部落竞争与成员合作算法CTCM求解柔性作业车间调度问题(FJSP)研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室🍊个人信条:格物致知,完整Matlab代码及仿真咨询…

作者头像 李华
网站建设 2026/3/16 6:24:27

SpringBoot - yml配置文件

SpringBoot使用一个全局配置文件,配置文件名固定: application.propertiesapplication.yml application.properties端口设置8081,application.yml端口设置8082,运行启动类,优先走8081。 两个配置文件互补,a…

作者头像 李华
网站建设 2026/3/18 16:17:19

【课程设计/毕业设计】 基于Spring Boot的智能养老服务平台基于springboot的社会养老平台的设计与实现【附源码、数据库、万字文档】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华