dot Redis 8 已推出,并且是开源的

了解更多

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

在这个简短的教程中,我们将使用 Relevance AI、Redis VSS、OpenAI GPT 和 Cohere Wikipedia 嵌入来创建一个链。

使用大型语言模型 (LLM) 通常需要检索正确的数据作为上下文注入到提示中。这样做是为了让 LLM 理解您的自定义数据,而无需对模型进行微调。检索数据的常用策略是使用向量搜索,因为它在匹配相似数据(无需完全匹配)方面非常出色。Redis 原生支持 向量相似性搜索,并且专为速度而打造。 

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

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

将 Redis 设置为向量数据库

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

步骤 1. 安装 Redis 和数据集的 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: 为前缀进行索引。在 Schema 中,我们将 JSON 中的每个字段引用为 $.field_name,并使用 as name 赋予它一个友好的标签及其数据类型。向量字段 emb 的类型为 vector,并使用 HNSW 作为索引类型,L2 作为距离指标。

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

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

构建 LLM 链

现在,是时候进入 Relevance AI Notebook 开始构建我们的链了。

步骤 1. 如有必要,注册 Relevance AI 免费账户。登录后,选择“Build AI chains”(构建 AI 链)并点击“Create new chain”(创建新链)。这将带您进入一个 Notebook。

The Relevance AI chain notebook
Relevance AI 链 Notebook。

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

步骤 3. 选择“Start with prompt”(从提示开始)。添加一个新的“Vector search (Redis)”(向量搜索 (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
从 Redis 搜索和查询中获取上下文并提问的 LLM 步骤示例。

这里的目的是帮助人们查询海量信息。假设您正在思考您最喜欢的 Bob Dylan 歌曲“Stuck Inside of Mobile”,并且想知道“是谁弹奏了那些极富感染力的吉他即兴演奏?”通过我们的 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 日在旧金山现场参加一场为期 12 小时的 LLM 黑客马拉松,与 MLOps 社区一起体验 Redis 和 Relevance AI。与其他机器学习从业者协作,赢取奖品。