当前位置: 首页 > news >正文

Elasticsearch:设置向量搜索

Elasticsearch 简介

当你开始使用 Elastic 时,你将使用 Elasticsearch Relevance Engine™(ESRE),它专为 AI 搜索应用程序提供支持。通过 ESRE,你可以利用一整套开发者工具,包括 Elastic 的文本搜索、向量数据库以及我们专有的 Transformer 模型进行语义搜索。

Elastic 提供多种搜索技术,从 BM25 开始,这是文本搜索的行业标准。它可以精准匹配特定搜索内容,匹配精确的关键词,并且可以通过调优来提升效果。

在开始使用向量搜索时,需要注意向量搜索有两种形式:“dense - 密集” 向量搜索(即 kNN 向量搜索)和“sparse - 稀疏”向量搜索。

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

在本指南中,我们将演示如何利用 Elasticsearch 作为向量数据库,以支持向量搜索的应用场景。

安装

Elasticsearch 及 Kibana

我们首先需要安装 Elasticsearch 及 Kibana。我们可以参考如下的文章来进行安装:

  • 如何在 Linux,MacOS 及 Windows 上进行安装 Elasticsearch

  • Kibana:如何在 Linux,MacOS 及 Windows 上安装 Elastic 栈中的 Kibana

当我们安装的时候,选择 Elastic Stack 8.x 的文章来进行安装。在本展示中,我们将使用 Elastic Stack 8.17.2 来进行展示。当我们首次运行 Elasticsearch 时,我们可以看到如下的界面:

创建 Elasticsearch 索引

让我们创建第一个 Elasticsearch 索引,可以将其命名为 vector-search。点击 Create my index(创建我的索引)。

开始使用向量搜索

现在你已经创建了无服务器项目和第一个索引,是时候将数据导入 Elasticsearch 了。我们已让此过程变得简单,在 Data > Index Management Data 中,点击 Run in Console(在控制台中运行)。

一个侧边窗口(flyout)会弹出,显示控制台。你会在左侧看到代码,点击 Send request 按钮 ▶ 后,你将在右侧看到执行的代码。

第一个命令将为索引创建映射,包括一个名为 vector 的向量字段和一个名为 text 的文本字段。

PUT vector-search/_mapping
{
  "properties": {
    "vector": {
      "type": "dense_vector",
      "dims": 3
    },
    "text": {
      "type": "text"
    }
  }
}

上面的命令定义 vector-search 索引的 mapping:

POST _bulk?pretty
{ "index" : { "_index" : "vector-search" } }
{"vector": [9.048, 9.573, 3.047], 
"title": "Yellowstone National Park"}
{ "index" : { "_index" : "vector-search" } }
{"vector": [2.654, 6.36, 0.476], 
"title": "Yosemite National Park"}
{ "index" : { "_index" : "vector-search" } }
{"vector": [6.125, 8.118, 7.029], 
"title": "Rocky Mountain  Park"}

我们使用上面的 _bulk API 来写入三个数据。在 Elasticsearch 中,_bulk 请求是索引大量文档的首选方式。

使用 Elasticsearch

构建你的向量搜索查询

很好,现在我们可以使用 knn 查询来获取与给定向量最接近的文档,例如尝试向量 [2,6,0]。复制并粘贴以下请求:

GET vector-search/_search
{
 "knn": {
   "field": "vector",
   "k": 10,
   "num_candidates": 100,
   "query_vector": [2,6,0]
 }
}

完成,“Yosemite National Park” 的向量 [2.654, 6.36, 0.476] 确实是最接近的匹配项。

下一步

感谢你花时间在设置向量搜索上。随着你开始使用 Elastic,了解在你的环境中部署时需要管理的一些操作、安全和数据组件。

准备好开始了吗?启动一个免费的 14 天 Elastic Cloud 试用,或者尝试这些 15 分钟的动手学习课程:《Search AI 101》。

相关文章:

  • CentOS安装sshpass工具-自动化SSH密码认证
  • vue2中引入elementui
  • node-ddk,electron,截屏封装(js-web-screen-shot)
  • 【蓝桥杯】每日连续 Day9 前缀和
  • Xinference安装、使用详细笔记
  • 数据库原理13
  • tcl语法中的命令
  • </mirrorOf> Maven
  • 零基础入门网络爬虫第5天:Scrapy框架
  • 嵌入式驱动开发方向的基础强化学习计划
  • 【监控系列】ELK
  • 《水上安全》杂志社水上安全编辑部水上安全杂志2025年第3期目录
  • 持续集成与持续交付:这里有从开发到部署的全流程优化
  • Linux 基础入门操作 第十二章 TINY Web 服务器
  • MyBatis StatementHandler是如何创建 Statement 对象的? 如何执行 SQL 语句?
  • mac怎么安装pycharm?
  • 【加密社】币圈合约交易量监控,含TG推送
  • 简单描述一下,大型语言模型简史
  • 内网穿透的应用-本地部署ChatTTS教程:Windows搭建AI语音合成服务的全流程配置
  • JavaScript数组和对象
  • 北大深圳研究生院成立科学智能学院:培养交叉复合型人才
  • 走访中广核风电基地:701台风机如何乘风化电,点亮3000万人绿色生活
  • 观察|英国航母再次部署印太,“高桅行动”也是“高危行动”
  • 上海明天起进入“升温通道”,五一假期冲刺33℃
  • 点燃“文化活火”,上海百年街区创新讲述“文化三地”故事
  • 学校食堂饭菜有蛆?举报人遭值班人员辱骂?四川苍溪县教育局回应