Elasticsearch:构建 AI 驱动的搜索体验

概述

Elasticsearch 简介

通过 Elastic Cloud 了解如何摄取和查看数据,熟悉 Elasticsearch。



当您开始使用 Elastic 时,您将使用 Elasticsearch 相关性引擎™ (ESRE),该引擎旨在为 AI 搜索应用程序提供支持。使用 ESRE,您可以利用一套开发人员工具,包括 Elastic 的文本搜索、向量数据库和我们用于语义搜索的专有转换器模型。

Elastic 提供多种搜索技术,从 BM25(文本搜索的行业标准)开始。它为特定搜索提供精确匹配、匹配确切的关键字,并通过调整进行改进。

当您开始使用 向量搜索时,请记住有两种形式的向量搜索:“密集”(也称为 kNN 向量搜索)和“稀疏”(例如 Elastic 的 Learned Sparse Encoder (ELSER))。

Elastic 还为语义搜索提供开箱即用的 Learned Sparse Encoder 模型。该模型在各种数据集(例如财务数据、天气记录、问答对等)上表现出色。该模型的构建旨在跨领域提供出色的相关性,而无需额外的微调。

查看此交互式演示,了解当您测试 Elastic 的 Learned Sparse Encoder 模型与 Elastic 的文本 BM25 算法时,搜索结果如何更相关。



此外,Elastic 还支持密集向量,以在文本以外的非结构化数据(例如视频、图像和音频)上实现相似性搜索。

语义搜索和向量搜索的优势在于,这些技术允许客户在其搜索查询中使用直观的语言。例如,如果您想搜索有关第二收入的工作场所指南,您可以搜索“副业”,这不是您可能在正式人力资源文件中看到的术语。

在本指南中,我们将演示如何创建 Elastic Cloud 帐户、使用 Elastic 网络爬虫摄取数据,以及只需点击几下即可实现语义搜索。


让我们开始吧

创建 Elastic Cloud 部署

开始 14 天试用。转到 cloud.elastic.co 并创建一个帐户后,请按照以下步骤了解如何在我们在全球 50 多个受支持的区域中的任何一个区域启动您的第一个 Elastic Stack。

如果您单击编辑设置,您可以选择云提供商,包括 AWS、Microsoft Azure 或 Google Cloud。选择云提供商后,您将能够选择相关区域。接下来,您可以选择几种不同的硬件配置文件,以便更好地自定义部署以满足您的需求。此外,最新版本的 Elastic 已经为您预先选择。

在创建部署时,您将获得用户名和密码。请务必复制或下载此信息,因为在安装集成时需要使用它。

配置 Elastic 网络爬虫

现在您已经创建了部署,是时候将数据导入 Elastic 了。让我们使用 Elastic 的网络爬虫来做到这一点。首先,在搜索选项卡下,您将选择图块构建 AI 驱动的搜索体验。

接下来,要设置语义搜索,您将看到一个页面,您可以在其中开始使用以下任一选项

  • Elastic Learned Sparse Encoder
  • 向量搜索
  • NLP 增强

所有这些功能以及更多功能都是 Elasticsearch Relevance Engine (ESRE) 的一部分。

为了本指南的目的,让我们了解如何使用 Elastic Learned Sparse Encoder 和向量搜索来设置语义搜索。

注意: 如果您刚开始使用语义搜索并希望搜索文本,则应首先尝试 Elastic Learned Sparse Encoder 指南。kNN 向量搜索指南可能更适合满足以下某些条件的用户

  • 拥有数据科学或数据科学技能
  • 已确定内置的 Elastic Learned Sparse Encoder 语义搜索模型无法满足他们的用例
  • 在比较嵌入模型方面经验丰富,并且可能对 ML 模型进行微调
  • 意识到快速 kNN 搜索可能需要大量的 RAM 资源

如果您准备好开始,请选择您首选的方法来构建 AI 驱动的搜索应用程序。

对于这两种方法,您都将首先选择 创建索引。 从这里,您可以选择 网络爬虫 以开始提取您的数据。

要设置 网络爬虫,请查看此引导式演示或按照以下说明进行操作

现在创建一个索引。 为了本指南的目的,我们正在提取 elastic.co 上的博客。

Web crawler search index

一旦您为索引命名,请选择 创建索引。 接下来,您将 验证域,然后选择 添加域

在右下角添加域后,您将选择 编辑,以便在需要时添加子域。

将域添加到您的索引接下来,您将选择 抓取规则 并添加您的抓取规则,如下所示。*

Manage domains

*因为您要抓取的页面会有链接到它的页面,所以您应该添加额外的规则来禁止这些链接和任何其他链接。

 

接下来,当您稍后选择您的字段时,某些字段会超过 512 个令牌计数,例如 body_content。 您应该利用 提取规则 来过滤掉博客的相关部分。

当您选择 提取规则 时,单击 添加内容提取规则。

接下来,在 规则描述 下,为其命名,以便其他人了解此规则将提取哪些数据。 为了本指南的目的,让我们将其称为“main”。

现在,选择 应用于所有 URL,然后选择 添加内容字段,将出现一个浮出窗口。 当浮出窗口出现时,填写并选择以下标准。

  • 文档字段
    • 字段名称:main
    • 从以下位置提取内容:HTML 元素
    • CSS 选择器或 XPath 表达式:main
  • 内容
    • 使用内容来源:提取的值
    • 将提取的内容存储为:字符串

填写此标准后,单击 保存,然后单击 保存规则。

使用 Elastic Learned Sparse Encoder 丰富您的数据

按照以下说明,开始使用 Elastic 的开箱即用语义搜索模型 Elastic Learned Sparse Encoder。

为此,您将选择 管道,并通过选择顶部的 复制并自定义解锁您的自定义管道。 接下来,在 机器学习推理管道 下,选择 部署 以下载模型并将其安装在您的 Elasticsearch 部署上。

部署后,选择 开始单线程,然后选择 + 添加推理管道。 接下来,您将执行以下操作

  1. 选择新的或现有的管道
  2. 为其命名
  3. 最后,在“选择已训练的 ML 模型”下拉列表中,选择 ELSER 文本扩展,然后单击 继续

现在,您需要选择要应用 ELSER 文本扩展 的字段。 选择“title”和“main”作为源字段,然后单击 添加

接下来,单击 继续

单击 继续 跳过 测试您的管道结果 步骤,然后单击 创建管道

现在您已经创建了管道,请选择右上角的 抓取,然后选择 抓取此索引上的所有域


使用 Elasticsearch

创建搜索查询

现在是时候搜索您正在寻找的信息了。 有两种推荐的方法可以执行此操作:第一种是使用 开发工具。 如果您是正在实现搜索的开发人员(即,针对您的 Web 应用程序),则应使用开发工具来测试和改进索引数据的搜索结果。

观看以下视频,了解如何利用 开发工具



创建搜索查询的另一种方法是利用 搜索应用程序 功能作为您的应用程序的端点。 如果您想创建一个可以从中发送搜索请求的搜索端点,并且可以返回搜索结果,则应使用 搜索应用程序 功能。

请查看以下简短视频,了解如何使用 搜索应用程序 功能的简短演练。 您还可以通过浏览此引导式演示来了解如何操作。




后续步骤

感谢您花时间使用 Elastic Cloud 为您的数据设置语义搜索。 当您开始使用 Elastic 之旅时,请了解在跨环境部署时,作为用户您应管理的一些操作、安全和数据组件

 

准备好开始了吗? 在 Elastic Cloud 上启动 14 天的免费试用版。

开始免费试用