升级RAG应用程序与Redis向量库
Redis Vector Library (RedisVL) 简化AI应用开发
几个月前,Redis推出了Redis向量库(RedisVL),以简化人工智能(AI)应用的开发。自那时起,我们引入了强大的新功能,支持大规模的语言模型(LLMs)。RedisVL是专为使用Redis进行AI操作而设计的Python客户端库。从redisvl版本0.3.0开始,它提供了:- 优化工具用于构建生成式AI应用,基于我们领先的向量数据库。- 存储和检索聊天历史记录的大型语言模型内存(LLM memory)。- 语义缓存,以节省LLM成本并加速响应。- 语义路由,将用户请求发送到最佳工具、模型或知识库。对于构建生成式AI应用的开发者来说,RedisVL旨在抽象并简化许多构建现代AI应用所需的组件。Redis以其速度和简易性著称,我们在GenAI时代继续发扬这一优势。我们的向量数据库是我们测试过的最快之一,但我们同样致力于使其易于构建。我们知道,开发者必须处理许多AI工具,并编写自定义代码以使这些工具协同工作。借助RedisVL,我们提供了一套有倾向性的命令集,使您能够专注于您的应用,从而更快地构建。### 使用LLM内存记住聊天上下文#### 问题LLMs本质上是无状态的,它们不会记住之前的互动。这意味着即使是最新的提示也会被立即遗忘。大多数在线聊天机器人可以回答后续问题,例如“告诉我更多关于那个”,或者“你能详细说明吗?”这是因为解决方案是在每次后续查询时提供完整的聊天历史记录。这确保了LLM有足够的上下文来回应。当您自己构建LLM应用时,这种会话管理成为您需要处理的责任。#### 解决方案解决方案是使用带有语义相关的聊天历史记录的部分内容。通过利用语义相似性,我们可以确定对话中哪些部分最相关于当前的查询。这种方法减少了令牌数量,节省了成本和时间,并可能因为只包含相关上下文而得到更好的答案。我们可以通过利用文本嵌入模型将文本编码成向量,然后使用Redis向量相似性搜索来找到与最新提示最相似的向量,从而量化用户查询和对话历史记录部分之间的语义相似性。在代码示例中,SemanticSessionManager类允许设置距离阈值,添加消息以及获取与新提示语义相关的上下文。当调用get_relevant方法时,它返回与提示语义相关的消息列表。pythonfrom redisvl.extensions.session_manager import StandardSessionManagerchat_session = SemanticSessionManager(name='student tutor')chat_session.set_distance_threshold(0.35)# 添加系统角色信息和一系列对话消息chat_session.add_message({"role": "system", "content": "你是一位地理导师,简短回答有关欧洲国家的问题。"})chat_session.add_messages([ {"role": "user", "content": "法国的首都是什么?"}, {"role": "llm", "content": "首都是巴黎。"}, # 更多对话...])prompt = "我学到了英格兰的大小是什么?"context = chat_session.get_relevant(prompt)for message in context: print(message)### 使用语义缓存减少LLM成本和延迟#### 问题许多应用程序用户可能会反复问同样的问题。在这种情况下,如果LLM每次都计算相同的响应,显然是浪费资源。#### 解决方案为了提高LLM系统的性能,我们可以应用缓存技术。对于重复的问题,直接返回缓存的响应而不是每次都调用昂贵的模型来提供相同的答案是有意义的。然而,并非所有提示都是完全相同的,我们需要一种方法来比较那些以略微不同方式提问但含义相同的问题。这就是语义缓存的作用。语义缓存利用文本嵌入模型将每个查询转换成高维向量,这个向量是查询的数值表示,可以用来比较句子的语义含义。使用Redis的向量数据库,我们将用户查询和LLM响应对存储起来,并在每次新查询时执行向量相似性搜索,以找到我们已经有答案的语义相似问题。对于像“谁是英国的国王?”和“谁是联合王国的君主?”这样的语义相同的问题,可以直接返回缓存的响应。下面是一个简单的聊天循环例子,展示了如何在LLM工作流中加入Redis语义缓存。在实际应用中,首次接收到新响应后,不要忘记将其添加到缓存中以便下次使用。pythonfrom openai import AzureOpenAIfrom redisvl.extensions.llmcache import SemanticCacheclient = AzureOpenAI()cache = SemanticCache()while True: prompt = input("请输入您的问题:") if cache_hit := cache.check(prompt): print(cache_hit[0]["response"]) continue response = client.chat.completions.create( model='gpt-35-turbo', messages=[{"role": "user", "content": prompt}], ).choices[0].message.content cache.store(prompt=prompt, response=response) print(response)超快的内存数据库可以在几分之一的时间内提供响应,相比LLM所需的时间大幅减少。它们还可以显著降低托管和调用LLM的财务成本。语义缓存的好处是巨大的。每次缓存命中都意味着少了一次对LLM的调用,这不仅节省了成本,也节省了时间,因为LLM响应时间通常以秒计,而缓存查找可以在毫秒内完成。研究已经表明,超过30%的用户问题是语义上相似的,可以由缓存提供服务。
相关文章:
升级RAG应用程序与Redis向量库
Redis Vector Library (RedisVL) 简化AI应用开发 几个月前,Redis推出了Redis向量库(RedisVL),以简化人工智能(AI)应用的开发。自那时起,我们引入了强大的新功能,支持大规模的语言模…...
【starrocks学习】之将starrocks表同步到hive
目录 方法 1:通过HDFS导出数据 1. 将StarRocks表数据导出到HDFS 2. 在Hive中创建外部表 3. 验证数据 方法 2:使用Apache Spark同步 1. 添加StarRocks和Hive的依赖 2. 使用Spark读取StarRocks数据并写入Hive 3. 验证数据 方法 3:通过…...
HTML应用指南:利用GET请求获取全国盒马门店位置信息
随着新零售业态的发展,门店位置信息的获取变得至关重要。作为新零售领域的先锋,盒马鲜生不仅在商业模式创新上持续领先,还积极构建广泛的门店网络,以支持其不断增长的用户群体。本篇文章,我们将继续探究GET请求的实际应用,我们使用Python的requests库通过GET请求,从盒马…...
openEuler部署 sysstat工具
查看环境 [rootlocalhost lxm]# cat /etc/os-release NAME"openEuler" VERSION"23.09" ID"openEuler" VERSION_ID"23.09" PRETTY_NAME"openEuler 23.09" ANSI_COLOR"0;31"查看 yum 源 [rootlocalhost lxm]# he…...
使用 Three.js 实现炫酷的除夕烟花特效
1,前言 在除夕夜,璀璨的烟花点亮夜空,为节日增添了浓厚的喜庆氛围。在 Web 端,我们可以使用 Three.js 来模拟这种美轮美奂的烟花特效,让网页也能展现绚丽的节日气息。本文将介绍如何利用 Three.js 及其着色器技术&…...
LMM-3DP:集成 LMM 规划器和 3D 技能策略实现可泛化操作
25年1月来自UCSD的论文“Integrating LMM Planners and 3D Skill Policies for Generalizable Manipulation”。 大型多模态模型 (LMM) 的视觉推理能力和 3D 特征场语义丰富性的最新进展,拓展了机器人能力的范围。这些发展对于弥合 LMM 高级推理与利用 3D 特征场低…...
Linux——基础命令3
1、关机重启命令 reboot指令 作用:重启计算机 语法:reboot shutdown指令 作用:关机 语法:shutdown -h 时间 时间常见的值: now (立即关机) m(m表示minutes数字)eg&…...
ChatGPT提问技巧:行业热门应用提示词案例-文案写作
ChatGPT 作为强大的 AI 语言模型,已经成为文案写作的得力助手。但要让它写出真正符合你需求的文案,关键在于如何与它“沟通”,也就是如何设计提示词(Prompt)。以下是一些实用的提示词案例,帮助你解锁 ChatG…...
python - 封装moondream(备份)
目录 一、 moondream封装成类 二、moondream封装成http api 一、 moondream封装成类 # moondream_model.py #https://github.com/vikhyat/moondream?tab=readme-ov-fileimport moondream as md from PIL import Imageclass MoondreamModel:def __init__(self, model_path):…...
响应式编程库(三) -r2dbc
r2dbc整合 什么是r2dbc版本选择简单试用整合springbootDatabaseClient 进行查询使用Repository接口(对应mapper)实体类复杂查询(一对一)实体类转换器测试代码一对多关系 什么是r2dbc 反应式关系数据库连接(R2DBC)项目为关系数据库…...
嵌入式AI革命:DeepSeek开源如何终结GPU霸权,开启单片机智能新时代?
2025年,全球AI领域最震撼的突破并非来自算力堆叠的超级模型,而是中国团队DeepSeek通过开源策略,推动大模型向微型化、低功耗场景的跨越。相对于当人们还在讨论千亿参数模型的训练成本被压缩到600万美金而言,被称作“核弹级别”的操…...
基于遗传算法的64QAM星座图的最优概率整形matlab仿真,对比优化前后整形星座图和误码率
目录 1.算法仿真效果 2.算法涉及理论知识概要 3.MATLAB核心程序 4.完整算法代码文件获得 1.算法仿真效果 matlab2022a仿真结果如下(完整代码运行后无水印): GA优化过程: 优化前后星座图对比: (优化后…...
从零开始玩转Docker:轻松开启容器化之旅
一、什么是 Docker Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。简单来说,Docker 就像是一个超级 “快递箱”,…...
kafka生产端之架构及工作原理
文章目录 整体架构元数据更新 整体架构 消息在真正发往Kafka之前,有可能需要经历拦截器(Interceptor)、序列化器(Serializer)和分区器(Partitioner)等一系列的作用,那么在此之后又会…...
38、【OS】【Nuttx】OSTest分析(3):参数传递
背景 接之前 blog 36、【OS】【Nuttx】OSTest分析(2):环境变量测试 37、【OS】【Nuttx】OSTest分析(2):任务创建 分析完环境变量测试,和任务创建的一些关键要素,OSTest 进入下一阶段…...
存储异常导致的Oracle重大生产故障
📢📢📢📣📣📣 作者:IT邦德 中国DBA联盟(ACDU)成员,10余年DBA工作经验 Oracle、PostgreSQL ACE CSDN博客专家及B站知名UP主,全网粉丝10万 擅长主流Oracle、MySQL、PG、高斯…...
C语言时间相关宏定义
在C语言中,预处理器提供了一些与时间相关的宏定义,用于在编译时获取日期、时间等信息。除了 __TIMESTAMP__ 和 __DATE__,还有以下相关的宏定义: __DATE__ 当前编译日期的字符串,格式为 "Mmm dd yyyy"&#x…...
Android Studio:Application 和 Activity的区别
Application 和 Activity 是 Android 中非常重要的两个组件,它们分别负责不同的生命周期管理和应用的不同层次的操作。 Application 是应用级别的生命周期管理,它在整个应用运行时只有一个实例,负责应用的全局初始化和资源管理。Activity 是…...
如何优化爬虫以提高搜索效率
在数据采集和网络爬虫领域,优化爬虫性能是提升数据采集效率的关键。随着网页结构的日益复杂和数据量的不断增长,高效的爬虫能够显著降低运行时间和资源成本。本文将详细介绍如何优化爬虫以提高搜索效率,包括选择合适的工具、优化代码逻辑、使…...
git撤销上一次的提交
1、撤销提交 如果需要撤销上一次的提交,只是提交到了本地,可以通过命令: // 撤销最近的提交(保留修改) git reset --soft HEAD~1 这个操作可以保留之前的提交和当前的修改。最近一次的提交到本地的修改的提交会回到…...
服务器卡死别慌!手把手教你读懂NMI watchdog的soft lockup报错信息(附CentOS 7排查流程)
服务器卡死应急指南:NMI watchdog与soft lockup实战排查手册 凌晨三点,机房告警铃声大作,监控大屏上某台核心服务器的CPU使用率突然飙升至100%并持续不降。登录系统后,dmesg中赫然出现NMI watchdog: BUG: soft lockup - CPU#2 stu…...
Python 爬虫数据处理:特殊格式文档爬虫解析处理
前言 在 Python 爬虫规模化采集业务中,除常规 HTML 网页与 JSON 接口数据外,经常会遇到各类非网页型特殊格式文档资源,常见包含 PDF、Word、Excel、CSV、TXT、压缩包内嵌文档、Base64 加密文档、富文本混合格式文档等。这类文档无法通过常规…...
SITS 2026图计算方案深度解析,独家披露金融风控与生物医药两大场景的GNN工程化适配矩阵(含12个可复用配置模板)
更多请点击: https://intelliparadigm.com 第一章:AI原生图计算应用:SITS 2026图神经网络工程化方案 SITS 2026 是面向大规模动态图场景的AI原生图计算框架,深度融合GNN训练、图拓扑实时更新与边缘-云协同推理能力。其核心设计摒…...
如何选择AI写论文工具?
本科生、研究生写论文常陷文献难找、逻辑混乱、查重超标、AI幻觉等困境,盲目用AI工具还易触碰学术诚信红线。本文结合学术规范、查重要求、功能适配与数据安全,实测AI论文工具,帮你精准选对合规高效的写作助手。一、先守学术合规底线…...
从癌症研究到企业风控:用Python实战Cox比例风险模型(附完整代码与数据)
从医学到商业:Python实战Cox风险模型的企业级应用 在医疗领域,我们关心患者存活时间;在商业世界,我们关注客户生命周期。看似迥异的场景背后,都隐藏着同一个数学工具的身影——Cox比例风险模型。这个诞生于1972年的生存…...
电源设计和效率优化案例C01
本文重点讲清楚三个非常重要的问题: 手把手教会计算电源的效率计算,包括线性电源和开关电源等 1-电源的上下管的 Qg和Rdson为什么是一对矛盾量? 2-单相30A的电流输出电源要求,对上下管子应该如何取舍这两个参数,为什么? 电源设计是硬件设计的核心组成部分,尤其事目前…...
家庭影院系统构建指南:从流媒体技术到硬件选型
1. 疫情下的娱乐变局:从影院到客厅的深度迁移作为一名长期关注消费电子与家庭娱乐领域的从业者,我亲历了过去几年行业最剧烈的震荡。疫情像一只无形的手,强行按下了社会运行的暂停键,却又为另一个赛道按下了加速键。当电影院的大门…...
手把手教你用云GPU(极链AI云)零成本复现SlowFast视频动作识别,附完整配置文件与避坑指南
零成本云端复现SlowFast视频动作识别全攻略:极链AI云实战与参数精解 在计算机视觉领域,视频理解一直是个充满挑战的方向。不同于静态图像,视频数据包含丰富的时序信息,这对模型架构设计提出了更高要求。SlowFast作为Facebook AI R…...
模拟真人手写软件,支持随机调节
软件介绍 前阵子公司要求我们签一份保密承诺书,还特别强调必须手写。这下可把不少同事难住了,平时都用电脑打字,手写都快生疏了。于是有同事让我帮忙找找能把手写字做出来的软件。我一开始找了几款手写字体,但写出来的效果太规整…...
PCIe均衡参数测量实战:从8GT/s到32GT/s,示波器上的电压怎么量?
PCIe均衡参数测量实战:从8GT/s到32GT/s的示波器操作指南 在高速串行通信领域,PCIe接口的均衡参数测量是确保信号完整性的关键环节。随着数据传输速率从8GT/s跃升至32GT/s,工程师面临的测量挑战也呈指数级增长。本文将深入探讨如何利用示波器准…...
