使用 Spring Cloud Alibaba AI 构建 RAG 应用
作者:姬世文
背景介绍
RAG(Retrieval Augmented Generation)
检索增强生成(RAG)是一种用于将数据与人工智能模型集成的技术。在 RAG 工作流程中,第一步将文档数据加载到矢量数据库(例如 Redis)中。当收到用户查询时,矢量数据库会检索一组与该查询相似的文档。然后,这些文档数据充当用户问题的上下文,并与用户的查询结合使用生成响应(通常通过 LLM 模型)。
在此示例中,我们将使用包含啤酒信息的数据集,包括名称、酒精体积(ABV)、国际苦度单位(IBU)等属性以及每种啤酒的描述。该数据集将加载到 Redis 中,之后通过 Spring Cloud Alibaba AI Starter 构建 Spring 项目,以演示 RAG 应用的工作流程。
Redis 矢量数据库
矢量数据库经常充当人工智能应用程序的内存。对于那些由大型语言模型(LLM)支持的人来说尤其如此。矢量数据库允许语义搜索,这为 LLM 提供了相关上下文。Spring AI 项目旨在简化人工智能驱动的应用程序的开发,包括矢量数据库的应用。
代码和依赖关系
您可以在 SCA 的官方博客中找到此示例源码链接:sca.aliyun.com
此示例 example 使用 Spring Cloud Alibaba AI 和 Spring AI Redis,用 Sping Web 构建 Web 应用程序。
数据加载
RAG 应用使用的数据由 JSON 文档组成,文档内容如下:
在此示例中,我们通过 RagDataLoader 类将数据插入到 Redis 中。
RAG 应用
RAGService 类在收到用户提示时,将会调用检索方法,执行以下步骤:
计算用户提示的向量
查询 Redis 数据库以检索最相关的文档
使用检索到的文档和用户提示构建提示
调用 ChatClient 并提示生成响应
调用示例
我们可以通过浏览器或者 curl 命令的方式调用 web api 接口,来获得 RAG 应用的输出。默认的 prompt 参数:What ber pairs well with smoked meats?
如果您使用浏览器调用,将看到以下内容:
![](https://static001.geekbang.org/infoq/62/620f6a828d64e5c6701b99abd3a19d33.webp?x-oss-process=image%2Fresize%2Cp_80%2Fformat%2Cpng)
在此示例中,将 Spring Cloud Alibaba AI 与 Redis 向量存储,仅通过几个类实现了 RAG 应用。欢迎您试用 Spring Cloud Alibaba AI Starter,如果有任何问题,您可以通过 Issue 的方式与我们联系。
也欢迎通过钉钉搜索群号加入社区钉群。(群号:64485010179)
版权声明: 本文为 InfoQ 作者【阿里巴巴云原生】的原创文章。
原文链接:【http://xie.infoq.cn/article/3af3eba47d8c10e375416ec7f】。文章转载请联系作者。
评论