Kernel Memory 入门系列: RAG 简介

开一个新坑,Semantic Kernel系列会在 Release 1.0 之后陆续更新。

当我们有了一定的产品资料或者知识内容之后,自然想着提供一个更加方便的方式让用户能够快速地找到自己想要的信息,或者得到一个更加智能的答案。

以往的时候可能需要通过一些搜索引擎或者问答系统来实现,但是这些系统往往需要极高的维护成本,而且对于用户来说也不是很友好。很多时候仍然需要用户自己去思考问题的表达方式,然后再去搜索或者提问,可以说是费事费力。

如今有了大语言模型,我们就可以考虑通过它来实现一个更加智能的问答系统,为用户提供一个更加友好的交互方式。

从对话开始

当我们直接接入大语言的模型的时候,往往会遇到一个很常见的问题,就是它对于我们私有的数据,小众领域的信息或者较新的知识并不知道。

这源自于大语言模型的训练数据集的限制,它的数据往往来自于大众的语料库,所以对于公开的信息了解的就比较多,但是对于私有的数据,小众领域的信息都不在它的知识范围内,而且由于训练成本和时间的限制,它也不可能实时地去更新模型本身的知识。

这个时候得到“不知道”的答案反而是一个好事儿,起码看得出来这个模型是有一定的智能的,它知道自己不知道,而不是随便瞎猜。毕竟处理大模型的幻觉也是很大的一个问题。

补充上下文

那么这个时候如果想要让模型能够为我们所用的,就需要上一点技术手段了。

最简单的方法就是在与大模型沟通的时候,增加一些上下文的信息。

那这里的上下文就是我们所能够提供给模型的,用于回答用户问题的信息了。

那么接下来的问题就是,这个上下文信息是怎么来的?

RAG

我们需要从整个流程来回溯一下:

  1. 首先用户提出问题,这个问题从始至终不会发生变化
  2. 然后我们需要理解用户的问题,知道用户提问的意图和方向
  3. 接下来就是我们需要根据用户的问题,去检索我们的知识库,找到与用户问题相关的信息,查找出与之相关的的文档或者文本内容
  4. 最后我们需要将这些文档或者文本内容进行整合,组成一个完整的提示词,提供给大语言模型用于生成
  5. 最后通过大语言模型生成相对精确的答案,返回给用户

这个过程就被称为 RAG(Retrieval Augmented Generation),也就是检索增强生成。

参考资料

  1. 检索增强生成 (RAG)

Kernel Memory 入门系列: RAG 简介的更多相关文章

  1. saltstack之基础入门系列文章简介

    使用saltstack已有一段时间,最近由于各种原因,特来整理了saltstack基础入门系列文章,已备后续不断查阅(俗话说好记性不如烂笔头),也算是使用此工具的一个总结.saltstack的前六篇文 ...

  2. Semantic Kernel 入门系列:🥑Memory内存

    了解的运作原理之后,就可以开始使用Semantic Kernel来制作应用了. Semantic Kernel将embedding的功能封装到了Memory中,用来存储上下文信息,就好像电脑的内存一样 ...

  3. C#刷遍Leetcode面试题系列连载(1) - 入门与工具简介

    目录 为什么要刷LeetCode 刷LeetCode有哪些好处? LeetCode vs 传统的 OJ LeetCode刷题时的心态建设 C#如何刷遍LeetCode 选项1: VS本地Debug + ...

  4. Android视频录制从不入门到入门系列教程(一)————简介

    一.WHY Android SDK提供了MediaRecorder帮助开发者进行视频的录制,不过这个类很鸡肋,实际项目中应该很少用到它,最大的原因我觉得莫过于其输出的视频分辨率太有限了,满足不了项目的 ...

  5. 快速入门系列--WebAPI--03框架你值得拥有

    接下来进入的是俺在ASP.NET学习中最重要的WebAPI部分,在现在流行的互联网场景下,WebAPI可以和HTML5.单页应用程序SPA等技术和理念很好的结合在一起.所谓ASP.NET WebAPI ...

  6. linux入门系列12--磁盘管理之分区、格式化与挂载

    前面系列文章讲解了VI编辑器.常用命令.防火墙及网络服务管理,本篇将讲解磁盘管理相关知识. 本文将会介绍大量的Linux命令,其中有一部分在"linux入门系列5--新手必会的linux命令 ...

  7. 数据挖掘入门系列教程(三)之scikit-learn框架基本使用(以K近邻算法为例)

    数据挖掘入门系列教程(三)之scikit-learn框架基本使用(以K近邻算法为例) 简介 scikit-learn 估计器 加载数据集 进行fit训练 设置参数 预处理 流水线 结尾 数据挖掘入门系 ...

  8. 数据挖掘入门系列教程(十一)之keras入门使用以及构建DNN网络识别MNIST

    简介 在上一篇博客:数据挖掘入门系列教程(十点五)之DNN介绍及公式推导中,详细的介绍了DNN,并对其进行了公式推导.本来这篇博客是准备直接介绍CNN的,但是想了一下,觉得还是使用keras构建一个D ...

  9. Go语言入门系列(五)之指针和结构体的使用

    Go语言入门系列前面的文章: Go语言入门系列(二)之基础语法总结 Go语言入门系列(三)之数组和切片 Go语言入门系列(四)之map的使用 1. 指针 如果你使用过C或C++,那你肯定对指针这个概念 ...

  10. 机器学习系列入门系列[七]:基于英雄联盟数据集的LightGBM的分类预测

    1. 机器学习系列入门系列[七]:基于英雄联盟数据集的LightGBM的分类预测 1.1 LightGBM原理简介 LightGBM是2017年由微软推出的可扩展机器学习系统,是微软旗下DMKT的一个 ...

随机推荐

  1. C#中的ConcurrentExclusiveSchedulerPair类

    为什么使用ConcurrentExclusiveSchedulerPair? 现实生活中的例子是一个停车场的入口和出口,多辆车可以同时进入和离开停车场,但是只有一个车辆可以进入或离开一次. 这时候就需 ...

  2. 白盒AES和SM4实现的差分故障分析

    DFA攻击背景介绍 传统的密码安全性分析环境被称为黑盒攻击环境,攻击者只能访问密码系统的输入与输出,但随着密码系统部署环境的多样化,该分析模型已经不能够反映实际应用中攻击者的能力.2002年,Chow ...

  3. No manual entry for ls终极解决办法

    No manual entry for ls解决办法,最后一种方法一定能解决你的问题 步骤一:确认man是否已经安装 #which man /usr/bin/man---返回此行,证明已经安装 步骤二 ...

  4. MPI转以太网模块连接300PLC与DCS modbus通信

    MPI转以太网模块连接300PLC与DCS modbus通信 由300PLC通过MPI转以太网Plus模块作为modbus从站与DCS主站通信实现MPI转RTU与DCS通信 打开兴达易控提供的MPI转 ...

  5. 删除软件 geek

    下载链接 Geek Uninstaller_v1.5.1.162 -技术松鼠 (jishusongshu.com)

  6. 要知其然还要知其所以然printChar

    虽然过渡与的追求细节不是好事, 但是现实社会逼迫我们不得不兼顾周全. 所以什么都是最好不仅要知其然还要知其所以然! public class printChar { public static voi ...

  7. Windows11如何设置经典的右键菜单

    使用Windows11几个月了,解决了我的电脑经常性彻底死机.蓝屏的问题,系统也流畅.易用了好多.唯一不能忍受的是右键菜单,经常需要再点一次才能找到自己想要的选项,今天网搜了下解决办法,特记录于此. ...

  8. Java虚拟机(JVM):第六幕:自动内存管理 - 选择合适的垃圾收集器

    前言:在虚拟机的世界里面,内置了很多的垃圾收集器,但并不是说最先进的就是最好的.有一句话说的好"因地制宜": 一.Epsilon收集器 是一个无操作的收集器,但是贴切的来说是&qu ...

  9. Linux 在多个文件中搜索关键字

    摘要:使用grep或者rg在当前目录下所有文件中查找关键字.   在Linux操作系统下,搜索文件中的关键字可帮助用户快速找到所需的信息,满足快速排查问题的需求.在大型系统中,文件可能被保存在多个目录 ...

  10. CF276C

    题目简化和分析: 属于一种贪心思维,我们想如果要使得和最大,那么就必须保证最大的数乘的次数越多越好,并且排序没有限制,快速累加每个位置出现的次数,所以应该使用线段树差分. 然后排序最大乘最大累加. S ...