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

相关文章

Redis Cluster模式配置

《RedisCluster模式配置》:本文主要介绍RedisCluster模式配置,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录分片 一、分片的本质与核心价值二、分片实现方案对比 ‌三、分片算法详解1. ‌范围分片(顺序分片)‌2. ‌哈希分片3. ‌虚

Springboot整合Redis主从实践

《Springboot整合Redis主从实践》:本文主要介绍Springboot整合Redis主从的实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言原配置现配置测试LettuceConnectionFactory.setShareNativeConnect

Redis过期删除机制与内存淘汰策略的解析指南

《Redis过期删除机制与内存淘汰策略的解析指南》在使用Redis构建缓存系统时,很多开发者只设置了EXPIRE但却忽略了背后Redis的过期删除机制与内存淘汰策略,下面小编就来和大家详细介绍一下... 目录1、简述2、Redis http://www.chinasem.cn的过期删除策略(Key Expir

Go语言中泄漏缓冲区的问题解决

《Go语言中泄漏缓冲区的问题解决》缓冲区是一种常见的数据结构,常被用于在不同的并发单元之间传递数据,然而,若缓冲区使用不当,就可能引发泄漏缓冲区问题,本文就来介绍一下问题的解决,感兴趣的可以了解一下... 目录引言泄漏缓冲区的基本概念代码示例:泄漏缓冲区的产生项目场景:Web 服务器中的请求缓冲场景描述代码

Go语言如何判断两张图片的相似度

《Go语言如何判断两张图片的相似度》这篇文章主要为大家详细介绍了Go语言如何中实现判断两张图片的相似度的两种方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 在介绍技术细节前,我们先来看看图片对比在哪些场景下可以用得到:图片去重:自动删除重复图片,为存储空间"瘦身"。想象你是一个

Go语言中Recover机制的使用

《Go语言中Recover机制的使用》Go语言的recover机制通过defer函数捕获panic,实现异常恢复与程序稳定性,具有一定的参考价值,感兴趣的可以了解一下... 目录引言Recover 的基本概念基本代码示例简单的 Recover 示例嵌套函数中的 Recover项目场景中的应用Web 服务器中

详解如何使用Python从零开始构建文本统计模型

《详解如何使用Python从零开始构建文本统计模型》在自然语言处理领域,词汇表构建是文本预处理的关键环节,本文通过Python代码实践,演示如何从原始文本中提取多尺度特征,并通过动态调整机制构建更精确... 目录一、项目背景与核心思想二、核心代码解析1. 数据加载与预处理2. 多尺度字符统计3. 统计结果可

Redis指南及6.2.x版本安装过程

《Redis指南及6.2.x版本安装过程》Redis是完全开源免费的,遵守BSD协议,是一个高性能(NOSQL)的key-value数据库,Redis是一个开源的使用ANSIC语言编写、支持网络、... 目录概述Redis特点Redis应用场景缓存缓存分布式会话分布式锁社交网络最新列表Redis各版本介绍旧

Java如何从Redis中批量读取数据

《Java如何从Redis中批量读取数据》:本文主要介绍Java如何从Redis中批量读取数据的情况,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一.背景概述二.分析与实现三.发现问题与屡次改进3.1.QPS过高而且波动很大3.2.程序中断,抛异常3.3.内存消

Redis中的Lettuce使用详解

《Redis中的Lettuce使用详解》Lettuce是一个高级的、线程安全的Redis客户端,用于与Redis数据库交互,Lettuce是一个功能强大、使用方便的Redis客户端,适用于各种规模的J... 目录简介特点连接池连接池特点连接池管理连接池优势连接池配置参数监控常用监控工具通过JMX监控通过Pr