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

最近,谷歌宣布旗下Vertex人工智能平台最新支持了生成式人工智能,是什么支持语言模型实现与人类的语言交互呢?语言模型的大量知识储备从何而来呢?

一、语言模型构件

应用程序生成、理解和使用人类语言的能力正变得越来越重要,从客服机器人到虚拟助手,再到内容生成,人们对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。

您可以按照开源 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)架构示例
检索增强生成(RAG)架构示例

3、利用Redis实现LLM 的缓存机制
缓存是增强 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 应用提供动力,无论是今天还是未来的数年。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/99693.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql数据库提示只读错误解决方案

问题来源:使用网站程序发现登录不了,也注册不了 重新安装程序时提示: The MySQL server is running with the –read-only option so it cannot execute this statement 这个错误信息意味着MySQL服务器正在读取模式(read-only …

npm/yarn查看当前网源与设置其它网源

npm 查看当前源 npm get registry npm 设置其他源 npm config set registry https://registry.npmjs.org yarn 查看当前源 yarn config get registry yarn 恢复(设置)默认源 yarn config set registry https://registry.yarnpkg.com 镜像源地址…

flask-sqlalchemy实现读写分离完整版

1. 依赖版本: alembic==1.6.5 click==8.0.1 colorama==0.4.4 Flask==1.1.2 Flask-Migrate==2.7.0 Flask-Script==2.0.6 Flask-SQLAlchemy==2.4.4 greenlet==1.1.0 itsdangerous==2.0.1 Jinja2==3.0.1 Mako==1.1.4 MarkupSafe==2.0.1 protobuf==3.17.3 PyMySQL==1.0.2 python-…

java日志框架详解-Log4j2

一、概述 Apache Log4j 2 (Log4j – Apache Log4j 2)是对Log4j的升级,它比其前身Log4j 1.x提供了重大改进,并参考了Logback中优秀的设计,同时修复了Logback架构中的一些问题。被誉为是目前最优秀的Java日志框架&#x…

Mac电脑版鼠标连点工具 RapidClick for Mac

RapidClick是一款简单实用的自动点击软件。它可以模拟鼠标点击操作,以便快速、连续地点击屏幕上的特定位置。该软件通常用于自动执行重复性的点击任务或加快某些操作的速度。 以下是RapidClick可能提供的一些主要功能和特点: 自动点击功能:R…

prototype-based learning algorithm(原型学习)

Prototype-based learning(原型学习)是一种机器学习方法,它的核心思想是通过存储一组代表性的样本(原型),然后使用这些原型来进行分类、回归或聚类等任务。这种方法模拟了人类学习的方式,人们往…

C++对string进行大小写转换的三种方法

C对string进行大小写转换的三种方法 方法一&#xff1a;下标 #include <iostream> #include <string> using namespace std;int main() {string s "ABCDEFG";for( int i 0; i < s.size(); i ){s[i] tolower(s[i]);}cout<<s<<endl;re…

LATR:3D Lane Detection from Monocular Images with Transformer

参考代码&#xff1a;LATR 动机与主要工作&#xff1a; 之前的3D车道线检测算法使用诸如IPM投影、3D anchor加NMS后处理等操作处理车道线检测&#xff0c;但这些操作或多或少会存在一些负面效应。IPM投影对深度估计和相机内外参数精度有要求&#xff0c;anchor的方式需要一些如…

SpringCloud学习笔记-Ribbon负载均衡

目录 1.负载均衡策略2.自定义负载均衡策略3.饥饿加载 SpringCloudRibbon的底层采用了一个拦截器&#xff0c;拦截了RestTemplate发出的请求&#xff0c;对地址做了修改。用一幅图来总结一下&#xff1a; 基本流程如下&#xff1a; 拦截我们的RestTemplate请求http://userserv…

jar -jar运行原理

jar -jar运行原理 1.前言 阅读这篇文章你将知道 jar包是如何被jvm加载&#xff0c;并运行起来的。 jvm的classload如何进行加载 springboot对象的生命周期啥时候开始的 2.提问 平时我对于java代码是如何运行起来的缺少认知&#xff0c;那么java代码是如何运行起来的呢&…

增强LLM:使用搜索引擎缓解大模型幻觉问题

论文题目&#xff1a;FRESHLLMS:REFRESHING LARGE LANGUAGE MODELS WITH SEARCH ENGINE AUGMENTATION 论文地址&#xff1a;https://arxiv.org/pdf/2310.03214.pdf 论文由Google、University of Massachusetts Amherst、OpenAI联合发布。 大部分大语言模型只会训练一次&#…

pyflink读取kafka数据写入mysql实例

依赖包下载 https://repo.maven.apache.org/maven2/org/apache/flink/flink-sql-connector-kafka/1.17.1/ 版本 flink&#xff1a;1.16.0 kafka&#xff1a;2.13-3.2.0 实例 import logging import sysfrom pyflink.common import Types from pyflink.datastream import …

毛玻璃 has 选择器卡片悬停效果

效果展示 页面结构 从上述的效果展示可以看到&#xff0c;页面是由多个卡片组成&#xff0c;并且鼠标悬停在卡片上时&#xff0c;会旋转用户图片并且韩式对应的用户信息框。 CSS3 知识点 :has 属性的运用 实现页面整体结构 <div class"container"><div…

Java with RocketMQ

Java with RocketMQ 概念开始开发广播延时发送批量消息过滤消息事务 如何保证消息不丢失如何存储和保证检索速度 概念 MQ指代Message Queue消息队列&#xff0c;通过在两个服务之间加入这种独立的消息队列应用&#xff0c;从而解耦不同服务之间的代码&#xff0c;使之可以通过…

linux | linux扩大磁盘空间 | centos7.9 | 虚拟机

注意&#xff1a;可以完全参考下面这边博客&#xff08;我只是搬运工&#xff09; centos扩大磁盘空间 简单讲讲&#xff0c;为什么有点失落落的&#xff1f; 明明就是一个 很程序化的东西 可是网上一大推 天花乱坠 而且很多人都是半吊子水&#xff0c;甚至半吊子都没有 通过关…

Ubuntu16.04apt更新失败

先设置网络设置 换成nat、桥接&#xff0c;如果发现都不行&#xff0c;那么就继续下面操作 1.如果出现一开始就e&#xff0c;检查源&#xff0c;先换源 2.换完源成功之后&#xff0c;ping网络&#xff0c;如果ping不通就是网络问题 如果ping baidu.com ping不通但是ping 112…

[网鼎杯 2018]Comment git泄露 / 恢复 二次注入 bash_history文件查看

首先我们看到账号密码有提示了 我们bp爆破一下 我首先对数字爆破 因为全字符的话太多了 爆出来了哦 所以账号密码也出来了 zhangwei zhangwei666 没有什么用啊 扫一下吧 有git git泄露 那泄露看看 真有 <?php include "mysql.php"; session_start(); if(…

leetCode 53.最大子数组和 动态规划 + 优化空间复杂度

关于此题我的往期文章&#xff1a; leetCode 53.最大子数和 图解 贪心算法/动态规划优化_呵呵哒(&#xffe3;▽&#xffe3;)"的博客-CSDN博客https://heheda.blog.csdn.net/article/details/13349726853. 最大子数组和 - 力扣&#xff08;LeetCode&#xff09; >&…

NSA 和 CISA 揭示十大网络安全错误配置

美国国家安全局 (NSA) 和网络安全与基础设施安全局 (CISA) 在5日公布了其红蓝团队在大型组织网络中发现的十大最常见的网络安全错误配置。 通报还详细介绍了威胁行为者使用哪些策略、技术和程序 (TTP) 来成功利用这些错误配置来实现各种目标&#xff0c;包括获取访问权限、横向…