因为摸鱼太久导致被美团二面暴打,我痛定思痛决定好好学一下。

现在准备秋招了,上个星期面了字节和奇绩创坛,前两天面了美团,很快,上午投的,晚上就面了,

然后面完发现确实玩了太久了,这博客也好久没更新了,赶紧加班加点学一下噻。

那么不说废话了。

先讲讲RAG是什么?

这个RAG我讲过很多次了,(现在看到这里基本上是3.0版本了,现在的东西就不算速成的内容了,我说过我要写教程,写大众通识的内容,所以要深入浅出完整的讲。)

 

这个东西本质上算外置大脑,在模型进行给出内容之前先检索再生成。

 那么RAG 解决了什么问题或者有什么用?

幻觉

知识过时(现在一般通过联网解决问题)

无法访问私有/特定领域数据

那么RAG的核心工作流程是什么?

第一阶段:检索

在你知识库准备好之后,我们需要对数据集进行分块处理,

太大不行(大了加了还不如不加),太小也不行(太少容易丢东西)。

然后进行向量化:

使用嵌入模型(Embedding Model) 将每个文本块转换为一个高维向量(即一组数字),这个向量可以表征文本的语义。

讲一下嵌入层和嵌入模型的区别:

这里就用人家的了,至于神经网络有什么东西请移步机器学习的部分。

总结一:关系与区别

特性

Embedding层

嵌入模型 (Embedding Model)

本质

神经网络中的一个组件/层

一个完整的、独立的模型

输入

单个单词/物品的索引(ID)

一段文本(句子、段落等)

输出

一个静态的、与上下文无关的向量

一个动态的、包含上下文信息的语义向量

核心机制

查表(Look-up Table)

Transformer编码器 + 自注意力机制 + 汇聚

类比

字典:给你一个词,返回它的定义。

语言专家:给你一句话,他理解后告诉你这句话的核心意思

那么高维向量是矩阵集合吗?

不是,这个就是向量,带方向的数字罢了,不过一堆batch组成的算矩阵集合。

 存储:将这些向量及其对应的原始文本存储到向量数据库

在线检索(用户提问):

当用户问题时,将问题也转换为一个向量。

将这个“问题向量”送入向量数据库,进行相似性搜索,快速找出与问题向量最相似的几个文本块。

 

那么怎么筛选最相似的文本块?

然后我就要给你讲搜广推的东西了:

1:给他设置一个分数,如果低于90分的就不要。

2:重排序模型:

先粗排-过滤-精排,

分别有top-k(第一次排序的数量,先筛多点,k一般是50到200)需要高召回率;

然后是top-n(再筛选完送回LLM的文本数量,n一般是1到5)

然后拿到top-n上传LLM。

3:元数据模型:

就是给出标注让他自己搜。

 

第二阶段:增强生成

构建增强提示(Prompt):

这里大伙就熟悉了,就是提示词问什么,

这个提示通常类似于:

 “请严格根据以下提供的信息来回答问题。如果信息中不包含答案,请直接说'根据已知信息无法回答'。

 【信息开始】

{这里插入从向量数据库检索到的相关文本}

【信息结束】

 问题:{用户的问题}”

 模型生成答案:

 大语言模型(LLM)的上下文窗口现在不仅包含了用户的问题,更重要的是包含了解决问题所需的确切知识。

 或者是这样:

你是一个法律专家,你需要按照。。。。。。

你会用百度,基本上用ai基本没问题。

RAG怎么优化?

那么根据上面怎么来的,就怎么优化,

1:数据优化:

这个数据要出重,降噪,还有文本分割。

1.1:这个文本分割怎么做?

常规都是按照章节,段落句子去分,然后设置一点固定tokens,

同时有一级标题和二级标题,或者子类。

这会就加上关键字(元数据)作者,时间之类的。

 

2:检索优化:

2.1:选择对应的模型和数据同时进行嵌入增强(就是扩展/压缩语义让他听得懂)

2.2:加上上下文召回之类的,还有上述的粗排+精排。

2.3:换向量数据库和修改索引对应参数。

 

3:其他的方面优化:

3.1给他整个缓存记录回答,

3.2更新迭代

3.3加个监控核心指标之类的。

#聊聊我眼中的AI##面试问题记录##创作激励计划##牛客创作赏金赛#
全部评论

相关推荐

评论
7
7
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务