AI 大模型的检索增强生成 - Spring AI 实现

Retrieval Augmented Generation,简称 RAG 技术,在构建知识库类型的应用中有着广泛的使用。RAG 技术可以弥补基座大模型,数据缺失和过时的问题,不需要进行模型微调,适用的范围广,在实现上的成本更低。

RAG 技术弥补了大模型信息不完整和过时的问题。大模型训练完成之后,其中所包含的信息不再变化。如果大模型训练时的材料中不包含某些方面的信息,在生成相关的内容时,就会输出一些混乱的内容,很容易答非所问。对于企业内部应用来说,这个问题几乎必然存在,因为基座大模型在训练时,获取不到企业内部的私有数据。同样的,在模型训练之后产生的数据,模型也是用不了的。

对于这个问题,一种解决办法是在基座大模型的基础上进行微调,把内部的数据整合进去。但是微调模型并不是一件简单的事情,需要专业的知识,大量的资源和时间。微调模型也解决不了无法使用新数据的问题。有些应用的数据更新很频繁,总不能每次有新数据产生或修改,就去微调大模型。

第二种解决办法是方法调用,把自定义的方法提供给大模型,把大模型和外部系统的 API 连接起来。

最后一种解决办法,使用检索增强生成技术。这个技术背后的原理其实很简单。既然大模型缺失了一些信息,那么就把这些信息作为输入的一部分,提供给大模型,自然就可以解决问题。受限于大模型的上下文窗口大小,所提供的上下文信息也不能过长。这就要求找到与输入最相关的内容作为上下文,才能得到更准确的结果。

c33605669e5e444221a984ab91009309.png

在具体的 RAG 实现中,会有一个向量数据库来保存全部的参考文档。对于一个输入,首先从向量数据库中查询到与输入文本,在语义上相似的文档,把文档拼接起来,作为提示的一部分,与原始的输入文本组装在一起,输入给大模型。由于提示中已经包含了足够的上下文信息,大模型可以根据这些信息来给出合理的输出。

为了查找到内容相似的文档,需要用到文本嵌入技术。文本嵌入技术把一段文本转换为一个向量。这也是使用向量数据库的原因。全部参考文档,在经过嵌入处理之后,所得到的向量,保存在向量数据库中。输入的查询文本,经过同样的嵌入处理,得到一个向量。查询文本和参考文档的相似性,被转换为所对应向量之间的相似性。通过计算向量之间的距离就可以判断出相似性。距离越短的两个向量,所对应的两个文档越相似。具体的距离计算细节,在应用实现时不需要关注,直接使用向量数据库提供的接口就可以了。

上述的 RAG 过程中,并没有包括文档的导入。在实际的应用中,经常会需要把业务系统中的数据,导入到向量数据库中。如果业务系统的数据发生了变化,相关的改动也需要同步到向量数据库中。

以上就是 RAG 技术的基本介绍。


提到 AI 大模型开发,最流行的开发语言是 Python。Python 在这一领域占据主导地位。其次比较流行的语言是 JavaScript / TypeScript。比如,流行的 LangChain 库就有 Python 和 JavaScript / TypeScript 两个版本。对广大的 Java 开发人员来说,想进行大模型相关的开发,虽然可以转而学习 Python 或 JavaScript,但毕竟是全新的语言,全新的生态系统,需要一定的时间去适应。实际上,随着 AI 大模型的流行,相关的 Java 库也在快速地丰富中。其中有代表性的包括 Spring AI 和 LangChain4J。这些库的出现,使得 Java 开发人员,可以使用自己最熟悉的语言来开发AI应用。当然了,需要承认的是,Java 的库在成熟度上,与 Python 库仍然存在一些差距。不过这些 Java 库也在不断更新中。

使用 Java 开发大模型应用时,目前最流行的是两个库,一个是 Spring AI,另外一个是 LangChain4j。LangChain4J 相对比较成熟,功能比较完善,很多概念与 LangChain 是相似的。Spring AI 是 Spring 的一个子项目,在设计上与其他的 Spring 项目类似,在扩展性上做得很好,也可以很方便地集成到已有的 Spring 项目中。Spring AI 的优势在于,依托于 Spring 框架这个基础,不管是已有 Spring 应用,还是新创建的 Spring 应用,都能很好地集成,有利于现有应用扩展 AI 相关的功能。除此之外,Spring AI 在稳定性和更新速度上,也更有保障。Spring AI 的发展,类似于现在的 Spring Cloud,会出现越来越多的集成,包括聊天大模型、文本嵌入实现、向量数据库等。使用 Spring AI 开发,从长远上来说,更加有利。

目前来说,Spring AI 是使用 Java 开发 AI 应用的最佳选择

《AI 大模型的检索增强生成 - Spring AI 实现》这门课程,以一个具体应用的开发来作为主线,完整地介绍如何使用 RAG 技术,来实现一个知识库类的应用。该应用是一个 AI 面试助手,可以辅助 Java 程序员进行技术面试。

3d41ecd5a3424c1baaedce1802c9c9a5.png

在具体的技术栈方面,示例应用使用的是 Java 21、Spring Boot 3.2.3、Spring AI 0.8.1,知识库的数据保存在 PostgreSQL 中,向量数据库使用的是 Redis Stack,在大模型方面,本地开发使用 Ollama,集成测试和线上环境使用,阿里云的通义千问 qwen-max 模型。

该课程包括如下内容:

  • 开发环境的搭建

  • AI 相关的概念

  • 检索增强生成的介绍

  • 如何建立知识库

  • 从 JSON、Markdown 和 PDF 导入文档到知识库

  • 切分文档并保存到向量数据库

  • 集成大模型的聊天消息生成功能

  • 使用检索增强生成技术来选取面试问题并评判

  • 集成阿里云模型服务灵积。

该课程已经在B站和抖音上线,点击 查看原文 获取购买信息。

  • 22
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值