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

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 documents
  ON HASH
  PREFIX 1 docs:
  SCHEMA doc_embedding VECTOR FLAT 6
    TYPE FLOAT32
    DIM 1536
    DISTANCE_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 documents
  ON HASH
  PREFIX 1 docs:
  SCHEMA doc_embedding VECTOR HNSW 10
    TYPE FLOAT64
    DIM 1536
    DISTANCE_METRIC COSINE
    M 40
    EF_CONSTRUCTION 250

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


http://www.kler.cn/a/515277.html

相关文章:

  • ROS2测试仿真
  • 新年好(Dijkstra+dfs/全排列)
  • leetcode——轮转数组(java)
  • 大数据与AI驱动的商业查询平台:企业市场拓展的变革引擎​
  • 【C++】在线五子棋对战项目网页版
  • Qt中的connect函数
  • RV1126+FFMPEG推流项目(11)编码音视频数据 + FFMPEG时间戳处理
  • springboot网上书城
  • android studio本地打包后,无法热更,无法执行换包操作,plus.runtime.install没有弹窗
  • 提升 Go 开发效率的利器:calc_util 工具库
  • 数学规划问题2 .有代码(非线性规划模型,最大最小化模型,多目标规划模型)
  • 项目-03-封装echarts组件并使用component动态加载组件
  • 基于AutoDL云计算平台+LLaMA-Factory训练平台微调本地大模型
  • 网络安全 | 入侵检测系统(IDS)与入侵防御系统(IPS):如何识别并阻止威胁
  • Prolog语言的数据可视化
  • Jpom 安装教程
  • 自动化实现的思路变化
  • 深入解析人工智能中的协同过滤算法及其在推荐系统中的应用与优化
  • [Spring] OpenFeign的使用
  • wx035基于springboot+vue+uniapp的校园二手交易小程序
  • 缓存商品、购物车(day07)
  • JavaScript系列(39)-- Web Workers技术详解
  • 三天急速通关JAVA基础知识:Day3 基础加强
  • Python FastAPI 实战应用指南
  • WordPress Hunk Companion插件节点逻辑缺陷导致Rce漏洞复现(CVE-2024-9707)(附脚本)
  • Nginx:通过upstream进行代理转发