RAG 学习笔记(一)

Retrieval-Augmented Generation 检索增强生成

用途

  • 解决模型幻觉问题
  • 避免频繁训练模型更新信息,直接通过外部方式引入参考
  • 使模型专注于文本生成流程,不用考量信息量

应用场景

代码知识库

  • 代码生成
  • 检索公开 git 仓库
  • 使用自己的仓库作为知识库

公司聊天机器人

  • 企业内部文档知识库:风格指南、产品准则、政策
  • 客服聊天机器人:了解产品信息、产品库存情况、故障排查
  • 公司政策分析:了解公司政策信息

专业领域

  • 医疗领域
  • 私有领域专业知识信息

AI 网络辅助搜索

  • 基于整个互联网的 RAG 数据库
  • 在搜索时提供信息摘要

个人知识库

  • 基于个人邮箱、联系人、信息、日历构建知识库
  • 提供自动化和检索功能

基础知识

LLM 也被称为 “自动化文本补全工具”
其工作原理就是预测下个词进行补全,这个词称为 token ,有的词占用一个 token(简单词,符号) ,有的词会被拆分成多个 token 表示(复合词,片段)

自回归

  • 新生成的 token 会基于旧上下文生成的 token 进行构建
  • 相同的提示词可能会有不同的补全结果,根据旧 token 生成形式补全

LLM 学习方式

  • 通过从互联网等地方获取大量参数数据
  • 获取数据输出结果,如果结果符合预期那么就会更新自身的参数,使下次输出更符合预期

幻觉产生

  • LLM 只根据训练数据得到数据模式进行回复,不是 LLM 自身的问题,而是训练数据

为什么不把所有东西放到模型里:通过 RAG 提取有用信息,避免算力和上下文开销

  • 算力成本:prompt 过长会消耗过多算力,模型会对所有 prompt 进行检索生成
  • 上下文窗口限制:对于小模型而言,会导致超过上下文 token 限制

检索器(retriver)

检索器困境

  • 如何返回相关文档
  • 返回所有文档:会产生大量无关噪音,浪费上下文空间
  • 只返回最相关的一个:信息不完整
  • 平衡取舍:检索器无法完美排序,没有绝对最优解

当前 RAG 检索器实现

  • 基于现代搜索引擎和数据早期的技术基建构建
  • 从传统数据库中提取有用信息或者基于 vector database 向量数据库提取数据

信息提取方案

元数据提取(Metadata Filtring)

传统检索中,会使用元数据来检索文档,例如作者、标题、创建日期、权限信息、标签
可以采用类似 SQL 的方式查询数据。
在 RAG 中,元数据用来缩小检索的文档范围(类似于 filter 功能),而不是用来提取数据,通常配合其他检索技术一起实现。

元数据单独使用缺陷

  • 无法对文档进行排序
  • 忽视文档内容,不是想要的结果

关键词搜索算法(BM 25算法)

TF-IDF 模型

信息检索和文本挖掘的加权技术,用于评估词语在文档中的重要性。

  • TF:词频,词语在文档中出现的次数
  • IDF:逆文档频率,"逆" 字可以理解为分母分子反过来
    TF(t, d) = \frac{f_{t, d}}{\sum_{t' \in d} f_{t', d}} $

( t - 词语,d - 文件,上面是 t 在 d 中出现的次数,下面是文件 d 中所有词语出现的次数总和)
IDF(t, D) = \log \frac{|D|}{|{d \in D : t \in d}|}

( | D | - 语料库文件总数,下面是 包含(t)的文件数目)

将两者相乘,得到 TF-IDF 的值:
TF-IDF(t, d, D) = TF(t, d) \times IDF(t, D)

  • 单个文档中关键词出现次数越多,关键词重要性越高
  • 但在语料库中存在关键词的文档的频率越高,关键词重要性越低
BM25 算法(Best Matching 25)

BM 25 中的 25指的是由第 25 个研发团队提出的评分函数变体

BM25 特性

  • 词频饱和:一个关键词出现频次过多时,会降低关键词本身的重要性
  • 文档长度归一化:适当降低长文档的权重(解决 TF-IDF 激进策略,对长文档权重降低过多的问题),采样递减权重机制,避免长文档检测权重变低(前提是关键词出现频率够高)

BM25 引入了 k1 和 b 参数

  • k1:控制词频饱和度,控制词频对评分的影响程度,取值通常在 1.2 - 2.0 之间,值越高,词频影响越大
  • b:长度归一化,控制文档归一化程度,取值 0(不归一化)- 1(完全归一化)之间,平衡短文档和长文档偏好

b= 0 ,k1 = 1 时 还原为 TF-IDF 的公式逻辑

IDF \times \frac{TF \times (k_1 + 1)}{TF + k_1 \times \left(1 - b + b \times \left(\frac{\text{document length}}{\text{average document length}}\right)\right)}

比较

  • TF-IDF:基于词汇重要性、词汇出现频率和文档长度
  • BM 25:基于词频饱和,对文档长度归一化进行优化

参考内容

Retrieval Augmented Generation (RAG) - DeepLearning.AI

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容