专栏名称: 阿里云云原生
发布云原生技术最新资讯、汇集云原生技术最全内容,定期举办云原生活动、直播,阿里产品及用户最佳实践发布。与你并肩探索云原生技术点滴,分享你需要的云原生内容。
目录
相关文章推荐
孥孥的大树  ·  大跌,牛市没了? ·  昨天  
孥孥的大树  ·  大跌,牛市没了? ·  昨天  
香港商报  ·  升市背后藏隐忧,港股“T+1”势在必行? ·  昨天  
香港商报  ·  升市背后藏隐忧,港股“T+1”势在必行? ·  昨天  
投资眼老A  ·  tmd...出事了! ·  昨天  
51好读  ›  专栏  ›  阿里云云原生

使用 Spring Cloud Alibaba AI 构建 RAG 应用

阿里云云原生  · 公众号  ·  · 2024-05-24 18:27

正文

背景介绍




Cloud Native


RAG(Retrieval Augmented Generation)
检索增强生成(RAG)是一种用于将数据与人工智能模型集成的技术。在 RAG 工作流程中,第一步将文档数据加载到矢量数据库(例如 Redis)中。当收到用户查询时,矢量数据库会检索一组与该查询相似的文档。然后,这些文档数据充当用户问题的上下文,并与用户的查询结合使用生成响应(通常通过 LLM 模型)。
在此示例中,我们将使用包含啤酒信息的数据集,包括名称、酒精体积(ABV)、国际苦度单位(IBU)等属性以及每种啤酒的描述。该数据集将加载到 Redis 中,之后通过 Spring Cloud Alibaba AI Starter 构建 Spring 项目,以演示 RAG 应用的工作流程。

Redis 矢量数据库
矢量数据库经常充当人工智能应用程序的内存。对于那些由大型语言模型(LLM)支持的人来说尤其如此。矢量数据库允许语义搜索,这为 LLM 提供了相关上下文。Spring AI 项目旨在简化人工智能驱动的应用程序的开发,包括矢量数据库的应用。

代码和依赖关系




Cloud Native

您可以在 SCA 的官方博客中找到此示例源码链接: sca.aliyun.com

此示例 example 使用 Spring Cloud Alibaba AI 和 Spring AI Redis,用 Sping Web 构建 Web 应用程序。


数据加载
RAG 应用使用的数据由 JSON 文档组成,文档内容如下:
{  "id": "00gkb9",  "name": "Smoked Porter Ale",  "description": "The Porter Pounder Smoked Porter is a dark rich flavored ale that is made with 5 malts that include smoked and chocolate roasted malts. It has coffee and mocha notes that create a long finish that ends clean with the use of just a bit of dry hopping",  "abv": 8,  "ibu": 36}
在此示例中,我们通过 RagDataLoader 类将数据插入到 Redis 中。

RAG 应用




Cloud Native

RAGService 类在收到用户提示时,将会调用检索方法,执行以下步骤:

  1. 计算用户提示的向量
  2. 查询 Redis 数据库以检索最相关的文档
  3. 使用检索到的文档和用户提示构建提示
  4. 调用 ChatClient 并提示生成响应

调用示例




Cloud Native







请到「今天看啥」查看全文