Unity UGUI的Outline(描边ABP框架提供的增删改查的基类)组件的介绍及使用

什么是向量?

向量是数学、物理学和工程科学等多个自然科学中的基本概念,它是一个具有方向和长度的量,用于描述问题,如空间几何、力学、信号处理等。在计算机科学中,向量被用于表示数据,如文本、图像或音频。此外,向量还代表AI模型对文本、图像、音频、视频等非结构化数据的印象。

向量相似度搜索的基本原理

向量相似度搜索的基本原理是通过将数据集中的每个元素映射为向量,并使用特定相似度计算算法,如基于余弦相似度的、基于欧氏相似度或基于Jaccard相似度等算法,找到与查询向量最相似的向量。

Redis实现向量相似度搜索

了解原理后,我们开始来实现如何使用Redis实现向量相似度搜索。Redis允许我们在FT.SEARCH命令中使用向量相似度查询。使我们可以加载、索引和查询作为Redis哈希或JSON文档中字段存储的向量。

//相关文档地址

Vector similarity | Redis

1、Redis Search安装

关于Redis Search的安装和使用,此处不再赘述,如果您对此不熟悉,可以参考上一篇文章:

C#+Redis Search:如何用Redis实现高性能全文搜索

2、创建向量索引库

这里我们使用NRedisStack和StackExchange.Redis两个库来与Redis进行交互操作。

复制代码

//创建一个Redis连接
static ConnectionMultiplexer mux = ConnectionMultiplexer.Connect("localhost");
//获取一个Redis数据库
static IDatabase db = mux.GetDatabase();
//创建一个RediSearch客户端
static SearchCommands ft = new SearchCommands(db, null);

复制代码

在进行向量搜索之前,首先需要定义并创建索引,并指定相似性算法。

复制代码

public static async Task CreateIndexAsync()
{
    await ft.CreateAsync(indexName,
        new FTCreateParams()
                    .On(IndexDataType.HASH)
                    .Prefix(prefix),
        new Schema()
                    .AddTagField("tag")
                    .AddTextField("content")
                    .AddVectorField("vector",
                        VectorField.VectorAlgo.HNSW,
                        new Dictionary<string, object>()
                        {
                            ["TYPE"] = "FLOAT32",
                            ["DIM"] = 2,
                            ["DISTANCE_METRIC"] = "COSINE"
                        }));
}

复制代码

这段代码的意思是:

  • 使用了一个异步方法 ft.CreateAsync 来创建索引。它接受三个参数:索引名称 indexName,一个 FTCreateParams 对象和一个 Schema 对象;
  • FTCreateParams 类提供了一些参数选项,用于指定索引的参数。这里使用 .On(IndexDat
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值