当前位置: 首页 > news >正文

虹科分享 | 谷歌Vertex AI平台使用Redis搭建大语言模型

文章来源:虹科云科技
点此阅读原文

基础模型和高性能数据层这两个基本组件始终是创建高效、可扩展语言模型应用的关键,利用Redis搭建大语言模型,能够实现高效可扩展的语义搜索、检索增强生成、LLM 缓存机制、LLM记忆和持久化。有Redis加持的大语言模型可应用于文档检索、虚拟购物助手、客户服务助理等,为企业带来益处。

一、语言模型构件

应用程序生成、理解和使用人类语言的能力正变得越来越重要,从客服机器人到虚拟助手,再到内容生成,人们对AI应用功能的需求横跨众多领域,而这一切的实现,都要归功于谷歌的 PaLM 2 等基础模型,这些模型经过精心调教,可以生成类似人类表达风格的内容。
在这一动态环境中,基础模型和高性能数据层这两个基本组件始终是创建高效、可扩展语言模型应用的关键。

1.基础模型
基础模型是生成式人工智能应用的基石,大型语言模型(Large Language Model,LLM)是其中的一个子集。LLM 通过大量的文本训练,使其能够为各种任务生成具有上下文相关性的类似人类表达风格的文本。改进这些模型,使其更加复杂,从而使应用可以更精炼、更有效地响应用户输入。所选择的语言模型会显著影响应用的性能、成本和服务质量。
然而,PaLM 2 等模型虽然功能强大,但也有其局限性,例如当缺乏特定领域的数据时,模型可能不够相关,而且可能无法及时呈现新信息或准确信息。LLM 在提示(prompts)中可以处理的上下文长度(即词组数量)有硬性限制,此外,LLM 的训练或微调需要大量的计算资源,这会使成本剧增。要在这些限制和优势之间取得平衡,需要进行谨慎的策略和强大基础设施的支持。

2. 高性能的数据层
高效的 LLM 应用程序由可扩展的高性能数据层支撑,该组件可确保高速交易和低延迟,这对于保持用户流畅交互至关重要。它在以下方面发挥关键作用:

  • 缓存预计算的请求响应或嵌入
  • 对过去的交互历史进行持久化
  • 进行语义搜索以检索相关的上下文或知识

向量数据库已成为一种流行的数据层解决方案。Redis 在向量搜索方面的投入远远早于当下的向量数据库热潮,这反映了我们具有丰富的经验,尤其是在性能方面。Redis对于向量搜索的经验在刚刚发布的 Redis 7.2 版本中得到了体现,该版本包括可扩展搜索功能预览,与前一版本相比,每秒查询次数提高了16倍。
基础模型和向量数据库在不同行业的 LLM 应用中发挥着至关重要的作用,因此引发了业界的极大兴趣和炒作。例如,一些较新的独立向量数据库解决方案(如 Pinecone)宣布获得巨额融资,并投入大量精力以赢得开发人员的关注。然而,由于每周都有新的工具出现,因此很难知道哪款工具真的能满足企业需求。
GCP (Google’s Google Cloud Platform)的与众不同之处在于其统一的产品,它将功能强大的基础模型、可扩展的基础设施,以及一套用于调整、部署和维护这些模型的工具结合在一起,从而能够确保最高级别的数据安全和隐私安全。
但是,要真正发挥这些进展的潜力,一个高性能且可扩展的数据层是不可或缺的,这就是Redis的作用所在。

3.可扩展语言模型应用的推理架构
在这里插入图片描述
GCP 和 Redis Enterprise 用于语言模型应用的推理架构

这里所呈现的推理架构适用于通用语言模型用例。它结合使用了 Vertex AI(PaLM 2 基础模型)、BigQuery 和 Redis Enterprise。

GCP 和 Redis Enterprise 用于语言模型应用的推理架构。

您可以按照开源 GitHub 仓库中的 Colab 笔记本逐步设置此 LLM 架构。

  1. 安装库和工具:安装所需的 Python 库,使用 Vertex AI 进行身份验证,并创建一个 Redis 数据库。
  2. 创建 BigQuery 表格:将数据集加载到您的 GCP 项目中的 BigQuery 表格中。
  3. 生成文本嵌入:循环遍历数据集中的记录,使用 PaLM 2 嵌入 API 创建文本嵌入。
  4. 加载嵌入:将文本嵌入和一些元数据加载到运行中的 Redis 服务器。
  5. 创建向量索引:运行 Redis 命令来创建一个模式和一个新的索引结构,以实现实时搜索。

完成必要的设置步骤后,这个架构就可以支持多种 LLM 应用,如聊天机器人和虚拟购物助手。

二.在语言模型(LLM)应用Redis

即使是经验丰富的软件开发人员和应用架构师也可能对这个新的知识领域不了解,这个简短的总结应该能帮助你迅速掌握要点。
1.利用Redis实现高效可扩展的语义搜索
语义搜索从庞大的知识语料库中提取语义相似的内容。在这个过程中,知识被转化为可以进行比较的数值嵌入向量,以找到与用户查询最相关的上下文信息。
Redis 作为高性能向量数据库,擅长索引非结构化数据,从而实现高效可扩展的语义搜索。Redis 可以增强应用程序迅速理解和响应用户查询的能力,其强大的搜索索引能力有助于实现响应迅速和准确的用户交互。
2.利用Redis实现检索增强生成
检索增强生成(Retrieval-Augmented Generation,RAG)方法利用语义搜索等方法,在将提示发送到 LLM 之前动态地注入事实知识。这种技术最大程度上减少了在专有或频繁变动的数据上对 LLM 进行微调的需求。RAG 允许对 LLM 进行上下文增强,使其能够更好地处理当前的任务,例如回答具体问题、总结检索内容或生成新内容。
作为向量数据库和全文搜索引擎,Redis 有助于 RAG 工作流的顺畅运行。由于其低延迟的数据检索能力,Redis 常常是执行此任务的首选工具。它确保语言模型迅速而准确地获得所需的上下文,促进了人工智能应用高效的执行任务。
在这里插入图片描述
检索增强生成(RAG)架构示例

3.利用Redis实现LLM 的缓存机制
缓存是增强 LLM 响应能力和计算效率的强大技术手段。
标准缓存提供了一种机制,用于存储并快速检索预生成的常见查询响应,从而降低计算负载和响应时间。然而,在动态对话背景中使用人类语言时,完全匹配的查询很少,这就是语义缓存发挥作用的地方。
语义缓存可以理解并利用查询的潜在语义。语义缓存识别并检索与输入查询在语义上足够相似的缓存响应。这种能力极大地增加了缓存命中率,进一步改善了响应时间和资源利用率。
例如,在客户服务场景中,多个用户可能会使用不同的措辞询问类似的常见问题。语义缓存使得 LLM 能够在不进行冗余计算的情况下迅速而准确地回应这些问题。在这里插入图片描述
LLM缓存机制

Redis 非常适用于在 LLM 中实现缓存,其强大的功能集包括支持生存时间(TTL)和逐出策略,用于管理临时数据。结合其向量数据库的语义搜索能力,Redis 能够高效快速地检索缓存响应,从而显著提升 LLM 的响应速度和系统整体性能,即使在负载较重的情况下也能如此。

4.利用Redis实现内存和持久化
保留过去的互动和会话元数据对于确保上下文连贯和个性化对话至关重要,然而LLM 并没有自适应记忆,因此依赖一个可靠的系统进行快速的对话数据存储变得至关重要。

Redis 提供了一个强大的解决方案,用于管理 LLM 的记忆。它可以在大量需求下高效地访问聊天历史和会话元数据。Redis使用其数据结构存储来处理传统的内存管理,同时其向量数据库功能有助于提取语义相关的互动内容。

三、LLM 的应用场景

1.文档检索
一些企业需要处理大量的文档,而 LLM 应用可以成为文档发现和检索的强大工具,语义搜索有助于从广泛的知识语料库中精确定位相关信息。
2.虚拟购物助手
LLM 可以支持复杂的电子商务虚拟购物助手,通过上下文理解和语义搜索,它可以理解客户的问题,提供个性化的产品推荐,甚至实时模拟对话互动。
3.客户服务助理
将 LLM 部署为客户服务代理可以彻底改变客户互动方式,除了回答常见问题外,系统还可以进行复杂的对话,为客户提供定制化的帮助,并从过去的客户互动中进行学习。

四.Redis 和 Google Cloud:强强联合

1.基于知识
GCP 和 Redis 让 LLM 应用不仅仅是先进的文本生成器,通过在运行时迅速注入来自您自己领域的特定知识,它们确保您的应用可以提供基于知识、准确和有价值的交互,特别适应于您的组织知识库。
2.简化架构
Redis 不仅仅是一个键值数据库,它是实时数据的多功能工具,通过消除为不同用例管理多个服务的需求,它极大地简化了您的体系架构。作为许多组织已经信任的缓存和其他需求的工具,Redis 在 LLM 应用中的集成起到了无缝扩展的效果。
3.优化性能
Redis 是低延迟和高吞吐量数据结构的代名词。当与具有超强计算能力的GCP结合时 ,您将拥有一个不仅智能而且响应迅速的 LLM 应用,即使在负载较重的情况下也能如此。
4.企业级能力
Redis是经过时间验证的开源数据库核心,可为全球财富100强公司提供可靠服务。在Redis Enterprise提供的五个九(99.999%)可用性的支持下,并由 GCP 强大的基础架构提供支持,您可以完全信任其可以完全满足企业需求。
5.加速上市进程
利用Redis Enterprise,您可以更专注于创建 LLM 应用,而不必费心进行数据库设置。这种集成的便利性加速了上市进程,为您的组织提供了竞争优势。
尽管新的向量数据库和生成式 AI 产品可能在市场上引起了很大的关注,但是 GCP 和 Redis 的可靠组合更加值得信任。这些经过时间验证的解决方案不会很快消失,它们已经准备好为您的 LLM 应用提供动力,无论是今天还是未来的数年。

虹科是Redis原厂的中国区战略合作伙伴。我们持续关注各行业当下急切需求,专注于为企业解答疑问,制定专属服务,提供一站式数据库和商业智能解决方案。了解更多【企业级数据库解决方案】及【企业缓存指南】,欢迎前往虹科云科技官网!

相关文章:

虹科分享 | 谷歌Vertex AI平台使用Redis搭建大语言模型

文章来源:虹科云科技 点此阅读原文 基础模型和高性能数据层这两个基本组件始终是创建高效、可扩展语言模型应用的关键,利用Redis搭建大语言模型,能够实现高效可扩展的语义搜索、检索增强生成、LLM 缓存机制、LLM记忆和持久化。有Redis加持的大…...

VS Code 代码跳转到定义(.js 和 .vue文件跳转)

vscode 代码跳转到定义(.js 和 .vue文件跳转) 在日常的开发工作中,我们经常需要跳转到方法或变量的定义处,以便更好地理解和修改代码。VS Code 是目前比较流行的开发工具,然而它默认情况下并不支持这个功能&#xff0c…...

华为云云耀云服务器L实例评测 | Docker 部署 Reids容器

文章目录 一、使用Docker部署的好处二、Docker 与 Kubernetes 对比三、云耀云服务器L实例 Docker 部署 Redis四、可视化工具连接Redis⛵小结 一、使用Docker部署的好处 Docker的好处在于:在不同实例上运行相同的容器 Docker的五大优点: 持续部署与测试…...

聚观早报 | 杭州亚运开幕科技感拉满;腾讯官宣启动「青云计划」

【聚观365】9月25日消息 杭州亚运开幕科技感拉满 腾讯官宣启动「青云计划」 FF任命新全球CEO 比亚迪夺得多国销冠 iPhone 15/15 Pro销售低于预期 杭州亚运开幕科技感拉满 杭州第19届亚洲运动会开幕式23日晚在杭州奥体中心主体育馆举行,这届开幕式可谓科技感拉…...

Linux Gnome桌面无法打开终端Terminal

文章目录 前言排障解决方式一解决方式二 前言 由于不知名的原因,导致gonme桌面里打开terminal一直转圈,无法打开。 这里我的故障是已知的,我是因为要把英文改为中文。但是界面依旧是英文,同时导致终端无法打开。 此方式centos d…...

MySQL学习笔记15

1、内连接查询(重点): 基本语法: select 数据表1.字段列表,数据表2.字段列表 from 数据表1 inner join 数据表2 on 连接条件; 案例:获取产品表中每个产品的分类信息: mysql> select * from tb_goods …...

6、SpringBoot_项目的打包与运行

七、SpringBoot项目的打包与运行 1.目前项目怎么运行的 通过浏览器访问idea 将jar部署到服务器 2.maven 打包项目 命令 mvn package使用命令后会得到如下的jar 3.程序运行 命令 java -jar 项目.jar启动如下 4.springboot打包需要插件 插件 <plugin><group…...

图像语义分割概述

图像语义分割概述 一、图像语义分割概念 图像语义分割&#xff08;Image Semantic Segmentation&#xff09;是一项计算机视觉任务&#xff0c;其目标是将输入的图像分割成多个区域&#xff0c;并为每个像素分配一个语义类别标签&#xff0c;以表示该像素属于图像中的哪个物体…...

ViT细节与代码解读

最近看到两篇解读ViT很好的文章&#xff0c;备忘记录一下&#xff1a; 先理解细节 1&#xff1a;再读VIT&#xff0c;还有多少细节是你不知道的 再理解代码 1&#xff1a;ViT源码阅读-PyTorch - 知乎...

Linux中软链接与硬链接的作用、区别、创建、删除

1、软链接与硬链接的作用 (1)软链接 软链接是Linux中常用的命令,它的功能是某一文件在另外一个位置建立一个同步的链接,相当于C语言中的指针,建立的链接直接指向源文件所在的地址,软链接不会另外占用资源,当同一文件需要在多个位置被用到的时候,就会使用到软连接。 …...

第一章:最新版零基础学习 PYTHON 教程(第十四节 - Python 条件和循环语句–Python 中的 with 语句)

在Python中,with语句用于异常处理,使代码更简洁、更具可读性。它简化了文件流等公共资源的管理。观察以下代码示例,了解使用 with 语句如何使代码更简洁。 Python3 # 文件处理# 1) 不使用with语句 file = open(文件路径, w) # 打开文件以进行写操作 file.write(你好,世界…...

安科瑞AMC16-DETT铁塔jizhan直流电能计量模块,直流计量用

安科瑞虞佳豪壹捌柒陆壹伍玖玖零玖叁 9月20日&#xff0c;在杭州亚运会火炬传递的现场&#xff0c;不少人通过网络与亲友连线&#xff0c;共同见证火炬传递的历史时刻。上午6时&#xff0c;杭州铁塔的一线通信保障人员共27人就已经在本次火炬传递收官点位奥体中心西广场附近&a…...

WebGL笔记:WebGL中JS与GLSL ES 语言通信,着色器间的数据传输示例:js控制绘制点位

js改变点位&#xff0c;动态传值 <canvas id"canvas"></canvas><!-- 顶点着色器 --><script id"vertexShader" type"x-shader/x-vertex">attribute vec4 a_Position;void main() {// 点位gl_Position a_Position;// 尺…...

一文读懂 Redis 缓存系统

【摘要】本文介绍了Redis缓存原理、详细解析了缓存模型、缓存一致性和缓存异常场景。 【作者】李杰&#xff0c;专注于Java虚拟机技术、云原生技术领域的探索与研究。 尽管&#xff08;关系型&#xff09;数据库系统 (SQL) 带来了许多出色的属性&#xff0c;例如 ACID&#x…...

初识Java 10-1 集合

目录 泛型和类型安全的集合 基本概念 添加一组元素 打印集合 List Iterator&#xff08;迭代器&#xff09; 本笔记参考自&#xff1a; 《On Java 中文版》 在进行程序设计时我们会发现&#xff0c;程序总是会根据某些在运行时才能知道的条件来创建新的对象。这意味着&am…...

Linux- pipe()系统调用

管道 管道&#xff08;Pipe&#xff09;是一种用于进程间通信&#xff08;IPC&#xff09;的简单而有效的方式。在UNIX和类UNIX操作系统&#xff08;如Linux&#xff09;中&#xff0c;管道提供了一种让一个进程将其输出发送给另一个进程的输入的机制。管道通常用于数据流的单…...

数据库常用指令

检查Linux系统是否已经安装了MySQL&#xff1a; sudo service mysql start...

[Studio]Manifest merger failed with multiple errors, see logs 解决方法

记录一个引入库时经常会出错的问题 最近使用一个图片上传库后项目代码报了一个错&#xff1a; Execution failed for task :app:processDebugManifest. > Manifest merger failed with multiple errors, see logs* Try: Run with --info or --debug option to get more lo…...

【数据结构与算法】不就是数据结构

前言 嗨喽小伙伴们你们好呀&#xff0c;好久不见了,我已经好久没更新博文了&#xff01;之前因为实习没有时间去写博文&#xff0c;现在已经回归校园了。我看了本学期的课程中有数据结构这门课程&#xff08;这么课程特别重要&#xff09;&#xff0c;因为之前学过一点&#xf…...

封装一个高级查询组件

封装一个高级查询组件 背景一&#xff0c;前端相关代码二&#xff0c;后端相关代码三&#xff0c;呈现效果总结 背景 业务有个按照自定义选择组合查询条件&#xff0c;保存下来每次查询的时候使用的需求。查了一下项目里的代码没有现成的组件可以用&#xff0c;于是封装了一个 …...

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...

Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持续更新中&#xff01;&#xff08;长期更新&#xff09; 目前2025年06月05日更新到&#xff1a; AI炼丹日志-28 - Aud…...

Mac软件卸载指南,简单易懂!

刚和Adobe分手&#xff0c;它却总在Library里给你写"回忆录"&#xff1f;卸载的Final Cut Pro像电子幽灵般阴魂不散&#xff1f;总是会有残留文件&#xff0c;别慌&#xff01;这份Mac软件卸载指南&#xff0c;将用最硬核的方式教你"数字分手术"&#xff0…...

高危文件识别的常用算法:原理、应用与企业场景

高危文件识别的常用算法&#xff1a;原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件&#xff0c;如包含恶意代码、敏感数据或欺诈内容的文档&#xff0c;在企业协同办公环境中&#xff08;如Teams、Google Workspace&#xff09;尤为重要。结合大模型技术&…...

sqlserver 根据指定字符 解析拼接字符串

DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...

【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习

禁止商业或二改转载&#xff0c;仅供自学使用&#xff0c;侵权必究&#xff0c;如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...

A2A JS SDK 完整教程:快速入门指南

目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库&#xff…...

Web中间件--tomcat学习

Web中间件–tomcat Java虚拟机详解 什么是JAVA虚拟机 Java虚拟机是一个抽象的计算机&#xff0c;它可以执行Java字节码。Java虚拟机是Java平台的一部分&#xff0c;Java平台由Java语言、Java API和Java虚拟机组成。Java虚拟机的主要作用是将Java字节码转换为机器代码&#x…...

MinIO Docker 部署:仅开放一个端口

MinIO Docker 部署:仅开放一个端口 在实际的服务器部署中,出于安全和管理的考虑,我们可能只能开放一个端口。MinIO 是一个高性能的对象存储服务,支持 Docker 部署,但默认情况下它需要两个端口:一个是 API 端口(用于存储和访问数据),另一个是控制台端口(用于管理界面…...

MySQL 索引底层结构揭秘:B-Tree 与 B+Tree 的区别与应用

文章目录 一、背景知识&#xff1a;什么是 B-Tree 和 BTree&#xff1f; B-Tree&#xff08;平衡多路查找树&#xff09; BTree&#xff08;B-Tree 的变种&#xff09; 二、结构对比&#xff1a;一张图看懂 三、为什么 MySQL InnoDB 选择 BTree&#xff1f; 1. 范围查询更快 2…...