【虹科干货】来抄作业!用Redis VSS,让大语言模型更懂你

2023-10-13 02:52

本文主要是介绍【虹科干货】来抄作业!用Redis VSS,让大语言模型更懂你,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

好沮丧,大语言模型不懂我怎么办, 怎么也搜不到想要的答案(ㄒoㄒ)

当当当当,Redis VSS闪亮登场,不必微调模型, 也能轻松驾驭大语言,快速解答你的疑虑,满足你 的求知欲,你的AI好伙伴!

在这个简短的教程中,我们将使用 Relevance AI、Redis VSS、OpenAI GPT 和 Cohere Wikipedia 嵌入创建一条LLM链,这使得我们能够使用Redis向量搜索向百科提问,根据我们的问题搜索最相似的文章。对于嵌入向量,它们是表示各种类型数据的数字列表,在这里,我们使用Cohere多语言模型生成的嵌入向量。

为了按照本教程进行操作,您需要一个支持JSON文档数据结构,且内置实时搜索和查询功能的Redis数据库。您可以选择在Redis Enterprise Cloud上创建,或者在Docker中使用Redis Stack创建。

一、设置Redis作为向量数据库

运行Redis之后,我们从HuggingFace上导入Cohere的多语言维基百科嵌入数据集,这只需要几个简单的步骤,您可以在这个jupyter笔记本中查看完整的代码。

步骤 1. 安装redis和datasets的Python库。
pip install redis datasets
步骤 2. 创建一个客户端连接。
import redis
redis_client = redis.from_url(‘redis://connection-string’)
步骤 3. 下载样本数据集。
from datasets
import load_dataset

docs = load_dataset(
“Cohere/wikipedia-22-12-simple-embeddings”, split=“train”
)
步骤 4. 使用JSON将每个文档导入Redis。
pipe = redis_client.pipeline()

index = 0
for doc in docs:
pipe.json().set(f"wiki:{doc[‘id’]}", ‘$’, doc)
if index % 500 == 0:
pipe.execute()
index += 1

pipe.execute()
步骤 5. 创建一个向量搜索索引
redis_client.execute_command(“FT.create wikipedia ON JSON PREFIX 1 wiki: SCHEMA $.id AS id NUMERIC $.title AS title TEXT $.text AS text TEXT $.wiki_id as wiki_id NUMERIC $.views as views NUMERIC $.emb as emb VECTOR HNSW 6 DIM 768 DISTANCE_METRIC L2 TYPE FLOAT32”)

此命令指定索引Wikipedia,该索引在JSON中存储数据,其中所有键都使用前缀wiki:进行索引。在模式中,我们使用$.field_name引用JSON中的每个字段,并用名称及其数据类型为其添加一个友好的标签。向量字段“emb”是向量类型,并使用HNSW作为索引类型,L2作为距离度量方式。

命令运行后,您就拥有了支持向量相似性搜索的Redis索引。

二、建立LLM链

接下来,就可以进入Relevance AI笔记本开始构建我们的LLM链了。

步骤 1. 如有必要,请注册Relevance AI的免费帐户。登录后,选择“构建AI链”并点击“创建新链”,您将进入到一个笔记本界面。

   Relevance AI链笔记本

步骤 2. 在执行LLM链之前,您需要配置您的OpenAI API密钥和Redis链接字符串。请从侧边栏选择“API keys”,然后提供您的Redis链接字符串和OpenAI API密钥。
步骤 3. 选择“从Prompt开始”,为“向量搜索(Redis)”添加新的转换。使用以下详细信息填写表格:

  • 索引名称:您在Redis中创建的索引,即wikipedia。
  • 向量字段:存储嵌入的字段,对于维基百科数据集,这里填emb。
  • 模型Model: cohere-multilingual-22-12,生成搜索查询的向量嵌入。
  • 搜索查询: 我们快速为LLM链定义一个输入。按{}并输入{{params.question}}将其更改为变量模式。

 Redis 向量搜索步骤及其输入的示例
Redis 向量搜索步骤及其输入的示例
步骤4. 配置LLM Prompt以使用向量搜索向Prompt中注入上下文并提问。您可以根据自己的需要自定义Prompt。
LLM 步骤的示例,该步骤从 Redis 搜索和查询中获取上下文并提出问题
LLM 步骤的示例,该步骤从 Redis 搜索和查询中获取上下文并提出问题

这是为了帮助人们查询大量的信息。比如,你最喜欢周杰伦的《夜曲》,你想知道:“这首歌的吉他前奏是谁弹奏的?”有了LLM链,你就可以把这个问题扔给结合了AI的维基百科进行搜索,它会迅速给出答案。

这不仅仅是实践新技术,更是快速地加深你的理解并满足你的好奇心。我们的LLM链就像位知识渊博的朋友,热情地与你清茶淡话,它随时准备同你对话,这为知识搜索增添了一丝人情味。

三、部署链

Relevance AI提供了两种部署链的方法:作为可嵌入的应用程序或作为API端点。应用程序也可以通过链接直接与用户共享,用户可以看到表格,填写并运行LLM链,这些现在已经可以用于生产中了。
带有可用于生产的 API 端点或可共享 URL 表单的LLM链的部署页面
带有可用于生产的 API 端点或可共享 URL 表单的LLM链的部署页面

这篇关于【虹科干货】来抄作业!用Redis VSS,让大语言模型更懂你的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/200285

相关文章

从基础到高级详解Go语言中错误处理的实践指南

《从基础到高级详解Go语言中错误处理的实践指南》Go语言采用了一种独特而明确的错误处理哲学,与其他主流编程语言形成鲜明对比,本文将为大家详细介绍Go语言中错误处理详细方法,希望对大家有所帮助... 目录1 Go 错误处理哲学与核心机制1.1 错误接口设计1.2 错误与异常的区别2 错误创建与检查2.1 基础

Redis 基本数据类型和使用详解

《Redis基本数据类型和使用详解》String是Redis最基本的数据类型,一个键对应一个值,它的功能十分强大,可以存储字符串、整数、浮点数等多种数据格式,本文给大家介绍Redis基本数据类型和... 目录一、Redis 入门介绍二、Redis 的五大基本数据类型2.1 String 类型2.2 Hash

Redis中Hash从使用过程到原理说明

《Redis中Hash从使用过程到原理说明》RedisHash结构用于存储字段-值对,适合对象数据,支持HSET、HGET等命令,采用ziplist或hashtable编码,通过渐进式rehash优化... 目录一、开篇:Hash就像超市的货架二、Hash的基本使用1. 常用命令示例2. Java操作示例三

Redis中Set结构使用过程与原理说明

《Redis中Set结构使用过程与原理说明》本文解析了RedisSet数据结构,涵盖其基本操作(如添加、查找)、集合运算(交并差)、底层实现(intset与hashtable自动切换机制)、典型应用场... 目录开篇:从购物车到Redis Set一、Redis Set的基本操作1.1 编程常用命令1.2 集

Redis中的有序集合zset从使用到原理分析

《Redis中的有序集合zset从使用到原理分析》Redis有序集合(zset)是字符串与分值的有序映射,通过跳跃表和哈希表结合实现高效有序性管理,适用于排行榜、延迟队列等场景,其时间复杂度低,内存占... 目录开篇:排行榜背后的秘密一、zset的基本使用1.1 常用命令1.2 Java客户端示例二、zse

Redis中的AOF原理及分析

《Redis中的AOF原理及分析》Redis的AOF通过记录所有写操作命令实现持久化,支持always/everysec/no三种同步策略,重写机制优化文件体积,与RDB结合可平衡数据安全与恢复效率... 目录开篇:从日记本到AOF一、AOF的基本执行流程1. 命令执行与记录2. AOF重写机制二、AOF的

Go语言中json操作的实现

《Go语言中json操作的实现》本文主要介绍了Go语言中的json操作的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录 一、jsOChina编程N 与 Go 类型对应关系️ 二、基本操作:编码与解码 三、结构体标签(Struc

Linux五种IO模型的使用解读

《Linux五种IO模型的使用解读》文章系统解析了Linux的五种IO模型(阻塞、非阻塞、IO复用、信号驱动、异步),重点区分同步与异步IO的本质差异,强调同步由用户发起,异步由内核触发,通过对比各模... 目录1.IO模型简介2.五种IO模型2.1 IO模型分析方法2.2 阻塞IO2.3 非阻塞IO2.4

python语言中的常用容器(集合)示例详解

《python语言中的常用容器(集合)示例详解》Python集合是一种无序且不重复的数据容器,它可以存储任意类型的对象,包括数字、字符串、元组等,下面:本文主要介绍python语言中常用容器(集合... 目录1.核心内置容器1. 列表2. 元组3. 集合4. 冻结集合5. 字典2.collections模块

Redis高性能Key-Value存储与缓存利器常见解决方案

《Redis高性能Key-Value存储与缓存利器常见解决方案》Redis是高性能内存Key-Value存储系统,支持丰富数据类型与持久化方案(RDB/AOF),本文给大家介绍Redis高性能Key-... 目录Redis:高性能Key-Value存储与缓存利器什么是Redis?为什么选择Redis?Red