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 上的博客。
一旦您为索引命名,请选择 创建索引。 接下来,您将 验证域,然后选择 添加域。
在右下角添加域后,您将选择 编辑,以便在需要时添加子域。
接下来,您将选择 抓取规则 并添加您的抓取规则,如下所示。*
接下来,当您稍后选择您的字段时,某些字段会超过 512 个令牌计数,例如 body_content。 您应该利用 提取规则 来过滤掉博客的相关部分。
当您选择 提取规则 时,单击 添加内容提取规则。
接下来,在 规则描述 下,为其命名,以便其他人了解此规则将提取哪些数据。 为了本指南的目的,让我们将其称为“main”。
现在,选择 应用于所有 URL,然后选择 添加内容字段,将出现一个浮出窗口。 当浮出窗口出现时,填写并选择以下标准。
- 文档字段
- 字段名称:main
- 源
- 从以下位置提取内容:HTML 元素
- CSS 选择器或 XPath 表达式:main
- 内容
- 使用内容来源:提取的值
- 将提取的内容存储为:字符串
填写此标准后,单击 保存,然后单击 保存规则。
使用 Elastic Learned Sparse Encoder 丰富您的数据
按照以下说明,开始使用 Elastic 的开箱即用语义搜索模型 Elastic Learned Sparse Encoder。
为此,您将选择 管道,并通过选择顶部的 复制并自定义 来 解锁您的自定义管道。 接下来,在 机器学习推理管道 下,选择 部署 以下载模型并将其安装在您的 Elasticsearch 部署上。
部署后,选择 开始单线程,然后选择 + 添加推理管道。 接下来,您将执行以下操作
- 选择新的或现有的管道
- 为其命名
- 最后,在“选择已训练的 ML 模型”下拉列表中,选择 ELSER 文本扩展,然后单击 继续。
现在,您需要选择要应用 ELSER 文本扩展 的字段。 选择“title”和“main”作为源字段,然后单击 添加。
接下来,单击 继续。
单击 继续 跳过 测试您的管道结果 步骤,然后单击 创建管道。
现在您已经创建了管道,请选择右上角的 抓取,然后选择 抓取此索引上的所有域。
使用 Elasticsearch
创建搜索查询
现在是时候搜索您正在寻找的信息了。 有两种推荐的方法可以执行此操作:第一种是使用 开发工具。 如果您是正在实现搜索的开发人员(即,针对您的 Web 应用程序),则应使用开发工具来测试和改进索引数据的搜索结果。
观看以下视频,了解如何利用 开发工具。
创建搜索查询的另一种方法是利用 搜索应用程序 功能作为您的应用程序的端点。 如果您想创建一个可以从中发送搜索请求的搜索端点,并且可以返回搜索结果,则应使用 搜索应用程序 功能。
请查看以下简短视频,了解如何使用 搜索应用程序 功能的简短演练。 您还可以通过浏览此引导式演示来了解如何操作。
高级:使用 kNN 向量搜索提取和搜索
当利用 Elastic 时,您可以利用环境中 kNN 向量搜索的优势。 如上所述,kNN 向量搜索允许您搜索文本以外的数据,例如图像或音频。
在使用网络爬虫提取数据后,接下来您需要将嵌入模型加载到 Elasticsearch 中,以生成数据的向量。 请观看以下视频以了解如何操作。
为此,您将选择 管道,并通过选择顶部的 复制并自定义 来 解锁您的自定义管道。 接下来,在 机器学习推理管道 下,选择 部署 以下载模型并将其安装在您的 Elasticsearch 部署上。
部署后,选择 开始单线程,然后选择 + 添加推理管道。 接下来,您将执行以下操作
- 选择新的或现有的管道
- 为其命名
- 最后,在“选择已训练的 ML 模型”下拉列表中,选择 密集向量文本嵌入,然后单击 继续。
现在,您需要选择要应用密集向量扩展的字段。 因为您使用的是 网络爬虫,所以您默认可以选择字段。 为了本指南的目的,让我们选择 title 作为新字段的开始,然后选择 继续。
接下来,选择 继续,然后选择 创建管道。
现在,您必须更新 dense_vector 字段的映射。(注意:对于 Elasticsearch 版本 8.8+,此步骤应自动进行。)
- 在导航菜单中,单击 开发工具。 如果这是您第一次打开开发工具,则可能必须单击浮出窗口上的 关闭。
- 在 开发工具 的“控制台”选项卡中,使用以下代码更新 kNN 向量目标字段的映射。 您只需将其粘贴到代码框中,然后单击第 1 行右侧的小箭头即可。
POST search-blogs/_mapping
{
"properties": {
"title-vector": {
"type": "dense_vector",
"dims": 768,
"index": true,
"similarity": "dot_product"
}
}
}
请务必将“search-blogs”替换为您为索引命名的名称。 此外,“title-vector”是存储向量的字段的名称。
现在您已经创建了管道,请选择右上角的 抓取,然后选择 抓取此索引上的所有域。
最后,现在是执行 kNN 向量搜索以查找您需要的信息的时候了。 为此,您应利用开发工具。 请观看以下视频以了解如何操作。
后续步骤
感谢您花时间使用 Elastic Cloud 为您的数据设置语义搜索。 当您开始使用 Elastic 之旅时,请了解在跨环境部署时,作为用户您应管理的一些操作、安全和数据组件。
准备好开始了吗? 在 Elastic Cloud 上启动 14 天的免费试用版。