dot 快速未来的到来就在您所在的城市。

加入我们参加 Redis 发布会

在 LLM 链中使用 Redis VSS 作为检索步骤

在本简短教程中,我们将创建一个包含 Relevance AI、Redis VSS、OpenAI GPT 和 Cohere 维基百科嵌入的链。

使用大型语言模型 (LLM) 通常需要检索正确的数据以注入提示作为上下文。这样做是为了让 LLM 了解您自己的自定义数据,而无需微调模型。一种流行的检索数据策略是使用向量搜索,因为它在匹配相似数据方面非常出色,即使没有完全匹配也是如此。Redis 原生支持 向量相似性搜索,并且专为速度而设计。

在本示例中,我们将展示如何构建和部署一个链或 Relevance AI 中的一系列操作,它允许我们使用 Redis 向量搜索向维基百科提问,并根据我们的问题提取最佳文章。对于嵌入(可以表示多种类型数据的数字列表),我们使用 Cohere 的多语言模型。

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

将 Redis 设置为向量数据库

Redis 运行后,我们将从 Cohere 的多语言 HuggingFace 上的维基百科嵌入数据集 导入数据。这需要几个简单的步骤。您可以在此 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: 索引。在架构中,我们将 JSON 中的每个字段引用为 $.field_name,并使用 as name 和其数据类型为其提供一个友好的标签。向量字段 emb 的类型为 vector,并使用 HNSW 作为索引类型,使用 L2 作为距离度量。

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

有关 如何在 Redis 中设置索引 的更多详细信息,请参阅文档。

构建 LLM 链

现在是时候进入 Relevance AI 笔记本来开始构建我们的链了。

步骤 1. 如果需要,请注册 Relevance AI 的免费帐户。登录后,选择“构建 AI 链”,然后单击“创建新链”。这将带您到一个笔记本。

The Relevance AI chain notebook
Relevance AI 链笔记本。

步骤 2. 在我们可以执行链之前,您需要配置 OpenAI API 密钥和 Redis 连接字符串。为此,从侧边栏中选择“API 密钥”,然后提供您的 Redis 连接字符串和 OpenAI API 密钥。

步骤 3. 选择“从提示开始”。为“向量搜索 (Redis)”添加一个新的转换。填写以下详细信息

  • 索引名称:您在 Redis 中创建的索引,即 wikipedia
  • 向量字段:存储嵌入的字段;对于维基百科数据集,它是 emb。
  • 模型:cohere-multilingual-22-12 用于生成搜索查询的向量嵌入
  • 搜索查询:我们将在几分钟内定义链的输入。按 {} 并输入 {{params.question}} 以将其更改为变量模式。
Example of a Redis Vector Search step and its inputs
Redis 向量搜索步骤及其输入示例。

步骤 4. 配置 LLM 提示以注入来自向量搜索的上下文并提出我们的问题。您可以根据需要自定义提示。

Example of an LLM step that takes the context from Redis Search and Query and asks a question
LLM 步骤示例,该步骤从 Redis 搜索和查询中获取上下文并提出问题。

这里的目的是帮助人们查询大量信息。假设您正在思考您最喜欢的鲍勃·迪伦歌曲“困在手机里”,并且您想知道“是谁弹奏了那些令人上瘾的吉他即兴演奏?”使用我们的 LLM 链,您可以轻松地将此问题问给 AI 加强的维基百科搜索,它会迅速返回您的答案。(我们将非 AI 加强的搜索留给非专业人士,这可能会证明此类工具的用处。)

这不仅仅是技术炫技,而是关于以闪电般的速度丰富您的理解和满足您的好奇心。就像一个渴望与您分享琐事的知识渊博的朋友,我们的 LLM 链随时准备与您进行对话,为您的知识搜索增添个人色彩。

部署链

可以使用 Relevance AI 以两种方式部署链:作为可嵌入应用程序或作为 API 端点。应用程序也可以直接通过链接共享,用户可以在该链接中看到表单,填写表单并运行链。这些现在已经可以用于生产环境。

The deploy page for a chain with a production-ready API endpoint or shareable URL form
带有生产就绪 API 端点或可共享 URL 表单的链的部署页面。

想做更多尝试或尝试 SDK 吗?您可以 查看有关构建商业分析师代理的教程,该代理可以查询 SQL、创建图表和回答问题。

立即开始使用您自己的向量搜索驱动的检索系统,方法是注册 Redis Enterprise CloudRelevance AI

LLM Stack Hackathon advertisment

加入我们,于 2023 年 6 月 3 日在旧金山与 MLOps 社区一起参加为期 12 小时的 LLM 黑客马拉松,该活动以 Redis 和 Relevance AI 为特色。与其他机器学习从业人员合作,有机会赢得奖品。