文章目录

  • 一、关键字检索 和 向量检索
  • 1、关键字检索
  • 2、向量检索
  • 二、向量检索 分析
  • 1、向量 简介
  • 2、二维空间 向量计算 示例
  • 3、文本向量 ( 重点 ★★ )
  • 4、文本向量示例 ( 重点 ★ )




【AI 大模型】RAG 检索增强生成 ② ( 关键字检索 | 向量检索 | 向量简介 | 二维空间向量计算示例 | 文本向量 - 重点 ★★ | 文本向量示例 )_AI

在上一篇博客 【AI 大模型】RAG 检索增强生成 ① ( 大模型的相关问题描述 - 幻觉、时效性、数据安全 | RAG 检索增强生成 | RAG 关键组件 | LLM + RAG 的运行流程 ) 中 , 对 大模型的缺陷进行了分析 , 有 幻觉、时效性、数据安全 三大缺陷 ,大模型本身无法解决 , 需要引入 RAG 检索增强生成 解决上述问题 ;

本篇博客中 , 展示 如何 在 WIndows 系统中 实现 RAG ;






一、关键字检索 和 向量检索



" 关键字检索 " 和 " 向量检索 " 是 信息检索 和 数据检索 领域 中的 检索方法 ,

  • 关键字检索 : 适用于对 检索速度 和 精确匹配 要求较高的场景 , 但对语义理解能力有限 , 基本不能理解语义 ;
  • 向量检索 : 适用于需要 语义理解 和 高灵活性 的场景 , 但计算复杂度较高 , 响应较慢 ;


1、关键字检索



关键字检索 又称为 关键词检索 , 是 基于 关键字 的 检索方式 , 用户输入 " 查询词 " 与 文档 中的 关键字 进行匹配 , 可以找到相关文档 ;



关键字检索特点 :

  • 基于词典 : 关键字检索 系统使用 词典 ( 倒排索引技术 ) 来查找包含查询词的文档 ;
  • 精确匹配 : 只能根据 用户输入 的关键字进行检索 , 通常 对词汇的精确匹配有较高要求 , 如果 词典 中没有 关键字 , 则搜索不到 ;
  • 效率高 : 由于主要是 通过索引查找匹配的文档 , 因此 关键字检索 速度较快 ;
  • 不能理解语义 : 对 同义词、词形变化 以及 语义理解 有限 , 文档中必须有要检索的关键字 , 如果是 关键字 的 同义词 则无法进行检索 ;
  • 应用场景 : 百度搜索引擎 , 图书馆的文献检索系统 ;


2、向量检索



向量检索 基于 向量空间模型 进行检索 , 文档 和 查询词 都被表示为向量 , 检索系统通过 计算 向量之间 的 相似度 来找到相关文档 ;



向量检索特点 :

  • 向量空间模型 : 文档 和 查询词 被 映射 到 高维向量空间 中 , 通常使用 Word2Vec / GloVe 词嵌入模型 或 BERT 深度学习模型 表示 ;
  • Word2Vec 模型 : Google 开发 , 通过 " 连续词袋 " 或 " 跳字模型 " 来训练 词向量 ;
  • GloVe 模型 : 斯坦福 开发 , 通过 统计信息 生成 词向量 ;
  • BERT 模型 : 基于 Transformer 架构 的 深度学习模型 , 专门用于 NLP 自然语言处理 任务 , 具有 双向编码能力 , 即在处理词汇时 , 同时考虑了其 左侧 和 右侧 的上下文 , 从而捕捉了更丰富的语义信息 ;
  • 语义匹配 : 可以 捕捉到 词汇的 语义信息 , 即使词汇之间存在 词形变化 或 同义关系 , 仍然能够找到相关的文档 ;
  • 计算复杂 : 检索过程中 , 需要计算 向量之间的相似度
  • 灵活性高 : 对 不同的语言 和 上下文 有较好的适应性 , 可以处理 模糊查询 和 长尾查询 ;
  • 应用场景 : 新一代搜索引擎 、推荐系统 、聊天机器人 、语义搜索 ;





二、向量检索 分析




1、向量 简介



向量 是一个 数学 和 计算机科学 中的基本概念 , 用于 表示具有大小和方向的量 ;



为了方便理解 , 先理解 二维空间向量 和 三维空间向量 , 再 拓展到 n 维空间向量 ;



在 二维空间 中 , 向量通常表示为一个 有序的数对 【AI 大模型】RAG 检索增强生成 ② ( 关键字检索 | 向量检索 | 向量简介 | 二维空间向量计算示例 | 文本向量 - 重点 ★★ | 文本向量示例 )_AI_02其中 【AI 大模型】RAG 检索增强生成 ② ( 关键字检索 | 向量检索 | 向量简介 | 二维空间向量计算示例 | 文本向量 - 重点 ★★ | 文本向量示例 )_大语言模型_03【AI 大模型】RAG 检索增强生成 ② ( 关键字检索 | 向量检索 | 向量简介 | 二维空间向量计算示例 | 文本向量 - 重点 ★★ | 文本向量示例 )_大语言模型_04 , 该向量可以理解为 从 原点 (0, 0) 到 (【AI 大模型】RAG 检索增强生成 ② ( 关键字检索 | 向量检索 | 向量简介 | 二维空间向量计算示例 | 文本向量 - 重点 ★★ | 文本向量示例 )_文本向量_05) 点的线段 ;

在 三维空间 中 , 向量通常表示为一个 有序的数对 【AI 大模型】RAG 检索增强生成 ② ( 关键字检索 | 向量检索 | 向量简介 | 二维空间向量计算示例 | 文本向量 - 重点 ★★ | 文本向量示例 )_AI_06其中 【AI 大模型】RAG 检索增强生成 ② ( 关键字检索 | 向量检索 | 向量简介 | 二维空间向量计算示例 | 文本向量 - 重点 ★★ | 文本向量示例 )_大语言模型_03 , 【AI 大模型】RAG 检索增强生成 ② ( 关键字检索 | 向量检索 | 向量简介 | 二维空间向量计算示例 | 文本向量 - 重点 ★★ | 文本向量示例 )_大语言模型_04【AI 大模型】RAG 检索增强生成 ② ( 关键字检索 | 向量检索 | 向量简介 | 二维空间向量计算示例 | 文本向量 - 重点 ★★ | 文本向量示例 )_文本向量_09, 该向量可以理解为 从 原点 (0, 0, 0) 到 (【AI 大模型】RAG 检索增强生成 ② ( 关键字检索 | 向量检索 | 向量简介 | 二维空间向量计算示例 | 文本向量 - 重点 ★★ | 文本向量示例 )_人工智能_10) 点的线段 ;



三维以上的空间画不出来 , 但是仍然存在 , 比如 四维空间 , 五维空间 , 一千维空间 ;



在 n 维空间中 , 向量通常表示为一个有序的数对 【AI 大模型】RAG 检索增强生成 ② ( 关键字检索 | 向量检索 | 向量简介 | 二维空间向量计算示例 | 文本向量 - 重点 ★★ | 文本向量示例 )_向量_11 , 其中 【AI 大模型】RAG 检索增强生成 ② ( 关键字检索 | 向量检索 | 向量简介 | 二维空间向量计算示例 | 文本向量 - 重点 ★★ | 文本向量示例 )_大语言模型_03 , 【AI 大模型】RAG 检索增强生成 ② ( 关键字检索 | 向量检索 | 向量简介 | 二维空间向量计算示例 | 文本向量 - 重点 ★★ | 文本向量示例 )_大语言模型_04【AI 大模型】RAG 检索增强生成 ② ( 关键字检索 | 向量检索 | 向量简介 | 二维空间向量计算示例 | 文本向量 - 重点 ★★ | 文本向量示例 )_AI_14 分别是 n 个轴 的分量 , 该向量可以理解为 原点 到 (【AI 大模型】RAG 检索增强生成 ② ( 关键字检索 | 向量检索 | 向量简介 | 二维空间向量计算示例 | 文本向量 - 重点 ★★ | 文本向量示例 )_向量_15) 点的 线段 ;



向量 的 本质 就是 一组数字 ;



2、二维空间 向量计算 示例



为了更好的理解 " 向量 " 这个概念 , 这里举一个 二维空间 的向量计算示例 ;

A 点的坐标 【AI 大模型】RAG 检索增强生成 ② ( 关键字检索 | 向量检索 | 向量简介 | 二维空间向量计算示例 | 文本向量 - 重点 ★★ | 文本向量示例 )_向量_16 , B 点的坐标 【AI 大模型】RAG 检索增强生成 ② ( 关键字检索 | 向量检索 | 向量简介 | 二维空间向量计算示例 | 文本向量 - 重点 ★★ | 文本向量示例 )_大语言模型_17



从 A 点 到 B 点 的向量 :

【AI 大模型】RAG 检索增强生成 ② ( 关键字检索 | 向量检索 | 向量简介 | 二维空间向量计算示例 | 文本向量 - 重点 ★★ | 文本向量示例 )_文本向量_18

  • x 轴方向的分量是 【AI 大模型】RAG 检索增强生成 ② ( 关键字检索 | 向量检索 | 向量简介 | 二维空间向量计算示例 | 文本向量 - 重点 ★★ | 文本向量示例 )_向量_19
  • y 轴方向的分量是 【AI 大模型】RAG 检索增强生成 ② ( 关键字检索 | 向量检索 | 向量简介 | 二维空间向量计算示例 | 文本向量 - 重点 ★★ | 文本向量示例 )_大语言模型_20


从 B 点 到 A 点 的向量 :

【AI 大模型】RAG 检索增强生成 ② ( 关键字检索 | 向量检索 | 向量简介 | 二维空间向量计算示例 | 文本向量 - 重点 ★★ | 文本向量示例 )_AI_21

  • 【AI 大模型】RAG 检索增强生成 ② ( 关键字检索 | 向量检索 | 向量简介 | 二维空间向量计算示例 | 文本向量 - 重点 ★★ | 文本向量示例 )_AI_22
  • y 轴方向的分量是 【AI 大模型】RAG 检索增强生成 ② ( 关键字检索 | 向量检索 | 向量简介 | 二维空间向量计算示例 | 文本向量 - 重点 ★★ | 文本向量示例 )_文本向量_23


3、文本向量 ( 重点 ★★ )



文本向量 一般是 通过 Word2Vec / GloVe 词嵌入模型 表示 , 嵌入 英文为 Embedding , 因此 文本向量 又称为 " Embeddings " ;

文本向量 是 将 每个汉子 或 单词 映射到一个低维的连续向量空间中 , 捕捉词之间的语义关系 , 每个 汉子 或 单词 转为一组浮点数 , 每个浮点数都有一个下标 i , 有多少个维度 , 就有多少个浮点数 ;

在 n 维向量空间中 , 每个 文本向量 之间 , 都可以计算出一个距离 , 这个距离的远近就是 语义的相似度 ;



文本向量 常见方法 :

  • Word2Vec : 通过 " 连续词袋 " 或 " 跳字模型 " 训练 词向量 ;
  • GloVe : 通过 词汇共现矩阵 生成词向量 ;
  • FastText : 考虑词的子词信息 , 改进了词向量的表现 ;


文本向量表示方式 : 每个 汉字 或 单词 都有一个 固定维度 的向量 ,

  • 如 : " 猫 " 可能表示为 [0.25, -0.58, 0.37, ...] , 有多少维度 , 就有几个数字 ;


4、文本向量示例 ( 重点 ★ )



下图中 , 展示了将 一段文字 映射到 n 维 的向量空间中 ,

通过计算 在 n 维向量空间 中 每段文字的距离 , 可以计算出 下面 五句话 在 语义上的相似度 ;

下面的 五句话中 , 前三句 在 n 维向量空间 中的距离比较近 , 其语义相似 , 后两句 的距离比较近 , 前后二者间的距离较远 ;

【AI 大模型】RAG 检索增强生成 ② ( 关键字检索 | 向量检索 | 向量简介 | 二维空间向量计算示例 | 文本向量 - 重点 ★★ | 文本向量示例 )_人工智能_24