【虹科干货】来抄作业!用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

相关文章

shell脚本批量导出redis key-value方式

《shell脚本批量导出rediskey-value方式》为避免keys全量扫描导致Redis卡顿,可先通过dump.rdb备份文件在本地恢复,再使用scan命令渐进导出key-value,通过CN... 目录1 背景2 详细步骤2.1 本地docker启动Redis2.2 shell批量导出脚本3 附录总

批量导入txt数据到的redis过程

《批量导入txt数据到的redis过程》用户通过将Redis命令逐行写入txt文件,利用管道模式运行客户端,成功执行批量删除以Product*匹配的Key操作,提高了数据清理效率... 目录批量导入txt数据到Redisjs把redis命令按一条 一行写到txt中管道命令运行redis客户端成功了批量删除k

C语言中%zu的用法解读

《C语言中%zu的用法解读》size_t是无符号整数类型,用于表示对象大小或内存操作结果,%zu是C99标准中专为size_t设计的printf占位符,避免因类型不匹配导致错误,使用%u或%d可能引发... 目录size_t 类型与 %zu 占位符%zu 的用途替代占位符的风险兼容性说明其他相关占位符验证示

Redis客户端连接机制的实现方案

《Redis客户端连接机制的实现方案》本文主要介绍了Redis客户端连接机制的实现方案,包括事件驱动模型、非阻塞I/O处理、连接池应用及配置优化,具有一定的参考价值,感兴趣的可以了解一下... 目录1. Redis连接模型概述2. 连接建立过程详解2.1 连php接初始化流程2.2 关键配置参数3. 最大连

Redis MCP 安装与配置指南

《RedisMCP安装与配置指南》本文将详细介绍如何安装和配置RedisMCP,包括快速启动、源码安装、Docker安装、以及相关的配置参数和环境变量设置,感兴趣的朋友一起看看吧... 目录一、Redis MCP 简介二、安www.chinasem.cn装 Redis MCP 服务2.1 快速启动(推荐)2.

C语言进阶(预处理命令详解)

《C语言进阶(预处理命令详解)》文章讲解了宏定义规范、头文件包含方式及条件编译应用,强调带参宏需加括号避免计算错误,头文件应声明函数原型以便主函数调用,条件编译通过宏定义控制代码编译,适用于测试与模块... 目录1.宏定义1.1不带参宏1.2带参宏2.头文件的包含2.1头文件中的内容2.2工程结构3.条件编

Go语言并发之通知退出机制的实现

《Go语言并发之通知退出机制的实现》本文主要介绍了Go语言并发之通知退出机制的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录1、通知退出机制1.1 进程/main函数退出1.2 通过channel退出1.3 通过cont

Go语言编译环境设置教程

《Go语言编译环境设置教程》Go语言支持高并发(goroutine)、自动垃圾回收,编译为跨平台二进制文件,云原生兼容且社区活跃,开发便捷,内置测试与vet工具辅助检测错误,依赖模块化管理,提升开发效... 目录Go语言优势下载 Go  配置编译环境配置 GOPROXYIDE 设置(VS Code)一些基本

Redis中Stream详解及应用小结

《Redis中Stream详解及应用小结》RedisStreams是Redis5.0引入的新功能,提供了一种类似于传统消息队列的机制,但具有更高的灵活性和可扩展性,本文给大家介绍Redis中Strea... 目录1. Redis Stream 概述2. Redis Stream 的基本操作2.1. XADD

深入理解Go语言中二维切片的使用

《深入理解Go语言中二维切片的使用》本文深入讲解了Go语言中二维切片的概念与应用,用于表示矩阵、表格等二维数据结构,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧... 目录引言二维切片的基本概念定义创建二维切片二维切片的操作访问元素修改元素遍历二维切片二维切片的动态调整追加行动态