Redis for AI

Redis存储和索引语义上表示非结构化数据(包括文本通道、图像、视频或音频)的向量嵌入。将向量和关联的元数据存储在哈希或JSON文档中,用于索引和查询。

Redis包括一个高性能向量数据库,允许您对向量嵌入执行语义搜索。可以通过过滤文本、数字、地理空间和标记元数据来增强这些搜索。

  • 创建向量索引:Redis使用定义的模式(包括向量字段和元数据)维护数据的二级索引。Redis支持FLAT和HNSW向量索引类型。
  • 存储和更新向量:Redis将向量和元数据存储在哈希或JSON对象中。
  • 使用向量搜索:Redis支持几种具有向量字段的高级查询策略,包括k-最近邻(KNN)、向量范围查询和元数据过滤器。
  • 在运行时配置向量查询。
  • 向量搜索示例:探索几个涵盖不同用例和技术的向量搜索示例。

一、创建向量索引

 定义索引的模式时,可以包括一个或多个向量字段,如下所示:

Syntax

FT.CREATE <index_name>ON <storage_type>PREFIX 1 <key_prefix>SCHEMA ... <field_name> VECTOR <algorithm> <index_attribute_count> <index_attribute_name> <index_attribute_value>[<index_attribute_name> <index_attribute_value> ...]

Parameters

ParameterDescription
index_nameName of the index.
storage_typeStorage option (HASH or JSON).
prefix (optional)Key prefix used to select which keys should be indexed. Defaults to all keys if omitted.
field_nameName of the vector field.
algorithmVector index algorithm (FLAT or HNSW).
index_attribute_countNumber of vector field attributes.
index_attribute_nameVector field attribute name.
index_attribute_valueVector field attribute value.

 二、FLAT index

当数据集较小(<1M向量)或完美的搜索精度比搜索延迟更重要时,请选择FLAT索引。

1、必需的属性

AttributeDescription
TYPEVector type (BFLOAT16FLOAT16FLOAT32FLOAT64). BFLOAT16 and FLOAT16 require v2.10 or later.
DIM存储在此字段中的向量嵌入的宽度或维数。换句话说,组成向量的浮点元素的数量。DIM必须是正整数。用于查询该字段的向量必须具有与字段本身相同的维度。
DISTANCE_METRICDistance metric (L2IPCOSINE).
FT.CREATE documentsON HASHPREFIX 1 docs:SCHEMA doc_embedding VECTOR FLAT 6TYPE FLOAT32DIM 1536DISTANCE_METRIC COSINE

 在上面的示例中,通过哈希创建名为documents的索引,关键字前缀为docs:,名为doc_embedding的FLAT向量字段具有三个索引属性:TYPE、DIM和DISTANCE_METRIC。

三、HNSW index

HNSW或分层可导航小世界(hierarchical navigable small world)是一种近似最近邻算法,它使用多层图使向量搜索更具可扩展性。

  • 最底层包含所有数据点,每个更高层包含一个子集,形成层次结构。
  • 在运行时,搜索从上到下遍历每个层上的图,在放到下一层之前找到局部极小值。

 当您有更大的数据集(>1M个文档)时,或者当搜索性能和可扩展性比完美的搜索准确性更重要时,请选择HNSW索引类型。

1、必需的属性

AttributeDescription
TYPEVector type (BFLOAT16FLOAT16FLOAT32FLOAT64). BFLOAT16 and FLOAT16 require v2.10 or later.
DIM存储在此字段中的向量嵌入的宽度或维数。换句话说,组成向量的浮点元素的数量。DIM必须是正整数。用于查询该字段的向量必须具有与字段本身相同的维度。
DISTANCE_METRICDistance metric (L2IPCOSINE).

2、可选属性 

​​​​​​​HNSW支持许多额外的参数来调整查询的准确性,同时权衡性能。

AttributeDescription
M图形层中每个节点的最大传出边(连接)数。在层零上,最大连接数将为2*M。更高的值会增加准确性,但也会增加内存使用量和索引构建时间。默认值为16。
EF_CONSTRUCTION在图构建期间要考虑的最大连接邻居数。较高的值会增加准确性,但也会增加索引构建时间。默认值为200。
EF_RUNTIMEKNN搜索期间的最大热门候选。较高的值可以提高准确性,但也会增加搜索延迟。默认值为10。
EPSILON设置范围查询可以在其中搜索候选对象的边界的相对因子。也就是说,与查询向量的距离为radius*(1+EPSILON)的向量候选可能会被扫描,从而允许更广泛的搜索和更准确的结果,但代价是运行时。默认值为0.01。
FT.CREATE documentsON HASHPREFIX 1 docs:SCHEMA doc_embedding VECTOR HNSW 10TYPE FLOAT64DIM 1536DISTANCE_METRIC COSINEM 40EF_CONSTRUCTION 250

 在上面的示例中,通过哈希创建名为documents的索引,关键字前缀为docs:,名为doc_embedding的HNSW向量字段具有五个索引属性:TYPE、DIM、DISTANCE_METRIC、M和EF_CONSTRUCTION。

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

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

相关文章

[Unity 热更方案] 使用Addressable进行打包管理, 使用AssetBundle进行包的加载管理.70%跟练

在正常的开发过程中我们经常遇到一些关于热更的方案,有一些已有的方案供我们选择,但是实机情况往往不尽如人意,各有优缺点. 现在我们同样有一个热更的需求,但是要求打包简单,加载过程可查,防止出现一些资源和流程的问题. 下面介绍我在项目中使用的方案. 打包方面使用Addressabl…

免费GPU算力,不花钱部署DeepSeek-R1

在人工智能和大模型技术飞速发展的今天,越来越多的开发者和研究者希望能够亲自体验和微调大模型,以便更好地理解和应用这些先进的技术。然而,高昂的GPU算力成本往往成为了阻碍大家探索的瓶颈。幸运的是,腾讯云Cloud Studio提供了免费的GPU算力资源,结合深度求索(DeepSeek…

寒假1.23

题解 web&#xff1a;[极客大挑战 2019]Secret File&#xff08;文件包含漏洞&#xff09; 打开链接是一个普通的文字界面 查看一下源代码 发现一个链接&#xff0c;点进去看看 再点一次看看&#xff0c;没什么用 仔细看&#xff0c;有一个问题&#xff0c;当点击./action.ph…

Agent群舞,在亚马逊云科技搭建数字营销多代理(Multi-Agent)(下篇)

在本系列的上篇中&#xff0c;小李哥为大家介绍了如何在亚马逊云科技上给社交数字营销场景创建AI代理的方案&#xff0c;用于社交动态的生成和对文章进行推广曝光。在本篇中小李哥将继续本系列的介绍&#xff0c;为大家介绍如何创建主代理&#xff0c;将多个子代理挂载到主代理…

【游戏设计原理】81 - 功能可见性暗示

一、什么是功能可见性&#xff1f; 功能可见性&#xff08;Affordance&#xff09;是一个设计心理学的概念&#xff0c;指的是物体或界面元素通过其外观或形态向用户传递的功能暗示。换句话说&#xff0c;功能可见性是指一个物体本身所具备的特性&#xff0c;使人能直接感知到…

6. 马科维茨资产组合模型+政策意图AI金融智能体(DeepSeek-V3)增强方案(理论+Python实战)

目录 0. 承前1. 幻方量化 & DeepSeek1.1 What is 幻方量化1.2 What is DeepSeek 2. 重写AI金融智能体函数3. 汇总代码4. 反思4.1 不足之处4.2 提升思路 5. 启后 0. 承前 本篇博文是对上一篇文章&#xff0c;链接: 5. 马科维茨资产组合模型政策意图AI金融智能体(Qwen-Max)增…

Latex常用语法介绍

LaTeX 是一种基于 TeX 的排版系统&#xff0c;专注于高质量文档的排版&#xff0c;尤其适合学术论文、技术报告、书籍等复杂格式的文档。以下是 LaTeX 的核心语法和功能的详细介绍&#xff1a; 一、LaTeX 文档结构 1. 基本框架 每个 LaTeX 文档由 导言区 和 正文区 组成&…

闲鱼自动抓取/筛选/发送系统

可监控闲鱼最新发布商品&#xff0c;发送钉钉 1&#xff0c;精准关键词匹配&#xff1a;输入核心关键词&#xff0c;精准定位与之高度契合的信息&#xff0c;确保搜索结果直击要点&#xff0c;满足您对特定内容的急切需求。 2&#xff0c;标题关键词智能筛选&#xff1a;不仅着…

深入理解MySQL事务(万字详)

文章目录 什么是事务为什么会出现事务事务的版本支持事务的提交方式事务常见操作方式正常演示 - 证明事务的开始与回滚非正常演示1 - 证明未commit&#xff0c;客户端崩溃&#xff0c;MySQL自动会回滚&#xff08;隔离级别设置为读未提交&#xff09;非正常演示2 - 证明commit了…

[Spring] Gateway详解

&#x1f338;个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 &#x1f3f5;️热门专栏: &#x1f9ca; Java基本语法(97平均质量分)https://blog.csdn.net/2301_80050796/category_12615970.html?spm1001.2014.3001.5482 &#x1f355; Collection与…

Arduino Uno 和 1.44 英寸 TFT 屏幕(SPI 接口)初体验

在嵌入式项目中&#xff0c;1.44 英寸 TFT 屏幕&#xff08;SPI 接口&#xff09;是一种非常实用的显示设备&#xff0c;适合用于显示文本、图形和简单动画。本文将详细介绍如何使用 Arduino Uno 和 1.44 英寸 TFT 屏幕进行基本的显示操作&#xff0c;包括显示文本、绘制图形和…

Linux应用编程(五)USB应用开发-libusb库

一、基础知识 1. USB接口是什么&#xff1f; USB接口&#xff08;Universal Serial Bus&#xff09;是一种通用串行总线&#xff0c;广泛使用的接口标准&#xff0c;主要用于连接计算机与外围设备&#xff08;如键盘、鼠标、打印机、存储设备等&#xff09;之间的数据传输和电…

Git处理冲突详解

文章目录 Git处理冲突详解一、引言二、冲突产生的原因三、解决冲突的步骤1. 手动解决冲突1.1 查看冲突文件1.2 编辑冲突文件1.3 提交解决冲突 2. 使用合并工具解决冲突 四、使用示例五、总结 Git处理冲突详解 一、引言 在团队协作开发中&#xff0c;Git冲突是不可避免的。当多…

Linux 下注册分析(4)

系列文章目录 Linux 设备树 Linux 下注册分析&#xff08;1&#xff09; Linux 下注册分析&#xff08;2&#xff09; Linux 下注册分析&#xff08;3&#xff09; Linux 下注册分析&#xff08;4&#xff09; 文章目录 系列文章目录1、device_create简介device_createdevice_c…

环境安装与配置:全面了解 Go 语言的安装与设置

在学习 Go 语言之前&#xff0c;首先需要确保开发环境已正确安装和配置。本部分将详细介绍如何在不同平台&#xff08;Windows、macOS 和 Linux&#xff09;上安装 Go 语言&#xff0c;以及如何进行环境变量配置和工作空间的设置。 一、安装 Go 语言 1. Windows 安装方法 下载…

快速排序:一种高效的排序算法

前言 排序是最基本和最常用的操作之一。无论是数据处理、搜索优化,还是各种应用程序的内部逻辑,排序算法的选择都直接影响到程序的性能。快速排序(Quick Sort)作为一种典型的分治算法,以其平均时间复杂度 O(n log n) 和优越的实际表现,成为了现代编程中最常用的排序算法…

第十五届蓝桥杯大赛软件赛省赛Java 大学 B 组(1、2题)

1.报数游戏 问题描述 小蓝和朋友们在玩一个报数游戏。由于今年是 2024 年&#xff0c;他们决定要从小到大轮流报出是 20或 24 倍数的正整数。前 10 个被报出的数是&#xff1a;20,24,40,48,60,72,80,96,100,120。请问第 202420242024个被报出的数是多少? 答案提交 这是一道结果…

批量修改图片资源的属性。

Unity版本2022.3 如图&#xff0c;比如我们想要修改图片的属性的时候&#xff0c;大部分都是 TextureImporter importer (TextureImporter)AssetImporter.GetAtPath("Assets/1.png"); // 获取文件 importer.xxxxxxx xxxxxxx; // 修改属性到这里没什么问题&#xf…

WebSocket异步导出

WebSocket异步导出 1、安装sockjs-client和stompjs2、连接后台3、vite.config.ts 配置反向代理4、导出并实时通信5、 封装WebSocket 文件注册登录(城通网盘) 1、安装sockjs-client和stompjs import SockJS from sockjs-client/dist/sockjs.min.js import Stomp from stompjs2、…

基于神经网络的视频编码NNVC(1):帧内预测

在H.266/VVC发布后&#xff0c;基于传统编码框架提升压缩率越来越难&#xff0c;随着深度学习的发展&#xff0c;研究人员开始尝试将神经网络引入编码器。为此&#xff0c;JVET工作组在2020年成立AHG11小组来专门进行基于神经网络的视频编码的研究。 为了方便研究&#xff0c;工…