一篇文章看懂RAG + 实战,看不懂来揍我

本文较长,建议点赞收藏。更多AI大模型应用开发学习视频及资料,在智泊AI

一、为什么需要RAG

可以将大语言模型看作是一个过于热情的新员工,他拒绝随时了解时事,但总是会绝对自信地回答每一个问题。不幸的是,这种态度会对用户的信任产生负面影响,这是不希望聊天机器人效仿的!

我们将大模型用于实际的业务时候,会发现通用的基础大模型基本无法满足我们实际的业务需求,经过实践主要有以下几个方面:

  1. 知识的局限性:大模型对于一些具有实时性、非公开或者离线的数据是无法获取的
  2. 幻觉问题:当大模型不具备某一领域的知识或者有不擅长的场景时,就会出现幻觉问题,简言之就是开始一本正经的胡说八道。
  3. 数据安全性:数据是一个企业至关重要的东西,没有企业愿意承担数据泄露的风险

RAG 是解决其中一些挑战的一种方法。它会重定向 LLM,从权威的、预先确定的知识来源中检索相关信息。组织可以更好地控制生成的文本输出,并且用户可以深入了解 LLM 如何生成响应。

二、什么是RAG

2.1 RAG的概念

比较官方的概念就是:Retrieval-Augmented Generation(检索增强生成)是一种结合了检索模型和生成模型的AI技术,它能让大型语言模型(LLM)在回答问题或生成文本时,先从外部的知识库(如公司内部文档或数据库)检索相关信息,再将这些信息整合到生成过程中,从而生成更准确、更相关、更新鲜的答案,而无需重新训练或微调整个模型。

下面我们来拆解一下RAG的概念:

  1. Retrieval - 检索模型:将用户的Prompt首先Embedding,然后和向量数据库中的上下文进行对比,相似性搜索,找到向量数据库中最匹配的前k个数据。核心就是两部分。
  2. 建立索引:将知识库转换为可搜索/查询的内容,建立相关索引。
  3. 执行查询:从搜索内容中提取最相关的,最佳知识片段。
  4. Augmented - 增强:将用户的Prompt和检索到的相关信息,一起嵌入到一个预设的提示词模板中。
  5. Generate - 生成模型:最终将增强后的Prompt输入给LLM。

2.2 RAG的特点

RAG通过以下几个特点来弥补单纯的语言模型:

  1. 信息检索: RAG使用检索系统(比如Elasticsearch)来从大规模数据集中检索相关文档或数据。
  2. 上下文融合: 将检索到的信息和原始的问题或输入融合,构造一个扩展的上下文。
  3. 知识增强:通过上下文融合,模型可以利用外部检索到的知识来指导生成过程,这可以显著减少"幻觉"。
  4. 快速更新:实施RAG需要矢量数据库等技术,这些技术可以快速编码新数据,并搜索该数据以输入给LLM模型。
  5. 灵活性: RAG模型可以与不同的检索库和不同的语言模型结合使用。
  6. 不需要训练:RAG可以通过查询最新的外部数据源来处理频繁变化的数据,不需要训练,模型大小不会产生变化。

2.3 RAG 主要组成

RAG的主要组成,分别是:数据提取 - embedding(向量化) - 创建索引 - 检索 - 自动排序 - Rerank - LLM归纳生成。

RAG就是让大模型进行开卷考试,如果大家准备的资料都差不多,那么我们怎么在有限的时间内,能够取得优异的成绩呢?

  1. 准备的资料准确:如果答案都是错误的,写上去也是错误的
  2. 准备的资料充分:考的全是资料上面的,自然正确率是非常高的

上面的要求也是我们在建立RAG知识库时候需要注意的地方。

三、RAG 和 Fine-tuning 的区别

Fine-tuning(微调):是指用一定的数据集对LLM进行局部参数调整,需要进行训练,以期望LLM理解我们的业务逻辑,有更好的 zero-shot (零样本)能力。简而言之:让大模型通过学习,内化知识。

RAG(检索增强生成):是指把文档先进行embedding(向量化),借助检索先得到大致的知识范围答案,将用户输入的Prompt和检索得到的答案一起给到LLM,让LLM生成最终答案。简而言之:让大模型可以开卷考试。

添加图片注释,不超过 140 字(可选)

四、RAG 未来的趋势

检索增强生成的未来趋势集中在使 RAG 技术更高效、更适应各种应用。 以下是一些值得关注的趋势:

  1. 个性化:RAG 模型将继续纳入用户特定的知识。 这将使他们能够提供更加个性化的响应,特别是在内容推荐和虚拟助理等应用程序中。
  2. 可定制的行为:除了个性化之外,用户本身还可以更好地控制 RAG 模型的行为和响应方式,以帮助他们获得所需的结果。
  3. 可扩展性:RAG 模型将能够处理比目前更大量的数据和用户交互。
  4. 混合模型:RAG 与其他人工智能技术(例如强化学习)的集成将允许更通用和上下文感知的系统,可以同时处理各种数据类型和任务。
  5. 实时、低延迟部署:随着 RAG 模型检索速度和响应时间的提高,它们将更多地用于需要快速响应的应用程序(例如聊天机器人和虚拟助手)。

五、OceanBase 实战

5.1 OceanBase 介绍

该项目是基于 langchain、langchain-oceanbase 和 streamlit 构建,处理流程是先将 OceanBase 数据库的文档,通过 Embedding 模型转化为向量数据,并存储在 OceanBase 数据库中。当用户提问时,系统会用相同的模型将问题转化为向量,然后通过向量检索找到相关的文档内容,再将这些文档作为上下文提交给大语言模型,从而生成更精准的回答。

Github地址:github.com/oceanbase/o...

参考线上地址:www.oceanbase.com/obi

5.2 OceanBase 特性

  1. 向量检索:支持向量索引和高效查询,可用于 AI 应用、推荐系统和语义搜索,提供高吞吐、低延迟的向量搜索能力;
  2. 水平扩展:单机群支持超过1500节点、PB级数据量和单表超万亿行数据;
  3. 极致性能:TPC-C 7.07亿tmpC和TPC-H 1526 万 QphH @30000GB;
  4. 低成本:存储成本节省70%-90%;
  5. 实时分析:不需要额外开销,支持HTAP;
  6. 高可用:RPO = 0(0数据丢失),RTO < 8秒(恢复时间);
  7. MySQL 兼容:很容易的从MySQL迁移过来。

5.3 部署开始

使用 Linux系统 部署

bash 复制代码
# 下载并安装 all-in-one (需要联网)
bash -c "$(curl -s https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/download-center/opensource/oceanbase-all-in-one/installer.sh)"
source ~/.oceanbase-all-in-one/bin/env.sh

# 快速部署 OceanBase database
obd demo

使用 docker 部署

  1. 启动 OceanBase 数据库实例
ini 复制代码
# 部署一个mini模式实例
docker run -p 2881:2881 --name oceanbase-ce -e MODE=mini -d oceanbase/oceanbase-ce

# 使用 quay.io 仓库的镜像部署 OceanBase.
# docker run -p 2881:2881 --name oceanbase-ce -e MODE=mini -d quay.io/oceanbase/oceanbase-ce

# 使用 ghcr.io 仓库的镜像部署 OceanBase.
# docker run -p 2881:2881 --name oceanbase-ce -e MODE=mini -d ghcr.io/oceanbase/oceanbase-ce
  1. 连接 OceanBase
bash 复制代码
docker exec -it oceanbase-ce obclient -h127.0.0.1 -P2881 -uroot # 连接root用户sys租户

下面是部署成功后的UI界面:

六、最后总结

优化RAG的关键是什么?我得到的答案是数据 + 检索。

数据质量决定了基础,高质量数据从海量数据提纯而来,检索则是确保内容能够被快速且准确提取的关键。

学习资源推荐

如果你想更深入地学习大模型,以下是一些非常有价值的学习资源,这些资源将帮助你从不同角度学习大模型,提升你的实践能力。

本文较长,建议点赞收藏。更多AI大模型应用开发学习视频及资料,在智泊AI

相关推荐
不要秃头啊1 小时前
别再谈提效了:AI 时代的开发范式本质变了
前端·后端·程序员
jonjia2 小时前
引入新维度化解权衡难题
程序员
jonjia2 小时前
优秀的工程师如何打破规则
程序员
jonjia2 小时前
在大厂交付大型项目的策略
程序员
jonjia2 小时前
RFC 与设计文档
程序员
jonjia2 小时前
为什么你(或任何人)应该成为一名研发经理?
程序员
jonjia2 小时前
管理技术质量 (Manage Technical Quality)
程序员
jonjia2 小时前
大厂软件工程师职业发展路径
程序员
jonjia2 小时前
关于工程师与影响力
程序员
jonjia2 小时前
多层上下文 (Layers of Context)
程序员