Elasticsearch 向量相似搜索

Elasticsearch 向量相似搜索的原理涉及使用密集向量(dense vector)来表示文档,并通过余弦相似性度量来计算文档之间的相似性。以下是 Elasticsearch 向量相似搜索的基本原理:

  1. 向量表示文档

    • 文档的文本内容经过嵌入模型(如BERT、Word2Vec等)处理,得到一个密集向量(dense vector)表示文档的语义信息。
    • 这个向量通常具有数百至数千个维度,每个维度表示文档在语义空间中的某个特定方面。
  2. 向量存储到 Elasticsearch

    • 将文档的向量表示存储到 Elasticsearch 索引中,通常使用 dense_vector 类型的字段进行存储。
    • 在索引中,每个文档都有一个与之关联的密集向量。
  3. 查询向量表示

    • 当执行搜索查询时,将查询文本通过相同的嵌入模型转换为一个密集向量,表示查询的语义信息。
  4. 相似性计算

    • 使用余弦相似性度量计算查询向量与每个文档向量之间的相似性。
    • 余弦相似性度量衡量了两个向量之间的夹角,值在 -1 到 1 之间,越接近1表示相似性越高。
  5. 返回排序的结果

    • Elasticsearch 根据相似性得分对文档进行排序,将相似性高的文档排在前面。
    • 检索的结果包含与查询向量相似的文档,最相似的文档排在前面。
  6. 脚本评分(Script Score)

    • Elasticsearch 提供了脚本评分功能,可以使用脚本来定制相似性评分的计算方式。常见的是使用余弦相似性函数来计算评分。

具体的例子:

1. 安装 Elasticsearch 8.X, 如下是docker-compose.yml:

version: '2.2'
services:elasticsearch:container_name: es01image: docker.elastic.co/elasticsearch/elasticsearch:8.11.3environment:- discovery.type=single-node- xpack.security.enabled=falseports:- "8088:9200"volumes:- ./elasticsearch-data:/usr/share/elasticsearch/datamem_limit: 2gnetworks:- my-networkrestart: alwaysnetworks:my-network:name: my-network-1

2.安装后测试一下Elasticsearch:
http://localhost:8088/_cat/health?v

3. 创建索引映射

在 Postman 中,使用 HTTP PUT 请求创建索引及其映射。假设您的 Elasticsearch 服务运行在 http://localhost:9200,创建名为 your_index 的索引:

发送请求以创建索引映射。

  • 请求类型:PUT

  • URL:http://localhost:9200/your_index

  • Body(选择 rawJSON (application/json)):

    {"mappings": {"properties": {"text": {"type": "text"},"embedding": {"type": "dense_vector","dims": 768  // 替换为实际的嵌入向量维度}}}
    }
    

    4. 插入文档

    • 请求类型:POST

    • URL:http://localhost:9200/your_index/_doc/1

    • Body(选择 rawJSON (application/json)

    • {"text": "淄博新建的一座占地100亩的烧烤城在短短20天内建成,吸引了众多烧烤爱好者,如今“烤位”已是一位难求。","embedding": [
      0.24153212,0.20880528,0.030148063,-0.53177595,-0.16311283,-0.48528185,0.8071734,-0.5603691,-0.034782775,-0.010840773,0.20591497,-0.190546,0.0939277,-0.31472996,0.41703156,-0.31428546,0.32904455,-0.1818271,0.0828045,0.2891722,-0.12507804,0.44376546,-0.10610913,0.2950189,0.34206498,0.54851073,0.33173296,-0.50768775,-0.22573504,0.09621267,1.1528952,-0.13125856,0.06805208,0.75444174,0.28983256,-0.058324914,0.029754816,0.28223705,0.017140139,-0.20847563,-0.3175143,-0.6432414,0.13734575,-0.34154043,-0.7852689,-0.7646187,-0.08415885,0.27589658,0.037415426,-0.111104995,-0.7493051,0.13488679,-0.0021623205,-0.4228744,-0.5692682,0.37095323,-0.17621705,-0.029115338,0.41395468,-0.36694804,-0.21973066,-0.0684685,-0.4107971,0.17953752,-0.6013466,0.4058221,0.088796705,0.39943227,-0.0005312811,-0.011339925,-0.20651253,0.113913804,0.0025909252,0.3519917,-0.34478262,0.45721626,-0.75878835,0.13280198,-0.09654277,0.5451904,-0.5389396,0.2736914,0.07034891,0.002583282,0.075424306,0.33698198,0.7679384,0.46068242,-0.08456434,0.5998018,0.2

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/285847.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Spring】12 EmbeddedValueResolverAware 接口

文章目录 1. 简介2. 作用3. 使用3.1 创建并实现接口3.2 配置 Bean3.3 创建启动类3.4 启动 4. 应用场景总结 Spring 框架提供了许多回调接口,以便开发者在 Bean 的生命周期中执行一些特定操作。其中之一是 EmbeddedValueResolverAware 接口,本文将深入探…

单片机LCD1602

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、LCD1602是什么?二、LCD1602 原理三、显示一个字符四、如何显示四位数五、参考历程六、封装成一个显示 字符和一个显示任意四位数的函数总结 前言…

基于ssm防疫信息登记系统的设计与实现论文

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本防疫信息登记系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息…

回溯算法之棋盘问题hard

12.18 51N皇后 题目: 思路: (1)用回溯的思想寻找每一行皇后的位置 (2)皇后位置的约束,创建一个新函数。使得与之前行的皇后不在同一列或斜线 (3)45度斜线行列和相等&…

系统设计——系统安全

HTTPS 是如何工作的? 安全超文本传输​​协议(HTTPS)是超文本传输​​协议(HTTP)的扩展。HTTPS 使用传输层安全性(TLS)传输加密数据。如果数据在网上被劫持,劫持者得到的只是二进制…

CRM客户登记管理系统:企业数字化转型的必备工具

客户登记管理系统(CRM)是一种用于记录和管理客户信息的软件系统。它用于存储和跟踪客户的基本信息、联系方式、交易历史、服务请求等关键数据,以便企业能够更好地了解客户、提供个性化的服务,并进行有效的销售和营销活动。 CRM系统…

迅为RK3588开发板瑞芯微国产化工业ARM核心板AI人工智能

性能强 iTOP-3588开发板采用瑞芯微RK3588处理器,是全新一代AloT高端应用芯片,采用8nm LP制程,搭载八核64位CPU,四核Cortex-A76和四核Cortex-A55架构,主频高达2.4GHz,8GB内存,32GB EMMC。 四核心…

用于噪声和分段相位测量的鲁棒相位展开算法(全文翻译-2区Optics Express)

摘要:本文提出了一种在存在噪声和分段相位的情况下进行相位展开的鲁棒相位展开算法(RPUA)。RPUA方法提出了一种新的相位导数模型,结合纠错迭代来实现抗噪声效果。此外,它使用数值载波频率和条纹外推法在空间域中桥接相…

vp与vs联合开发-通过FrameGrabber连接相机

添加控件 1.CogRecordDisplay 控件 用于显示图像 初始化相机对象方法 //启动窗体时 调用初始化相机方法 //封装相机关闭方法 //窗体关闭时 调用相机关闭方法 拍照 设置采图事件 // 保存图像 设置曝光按钮事件 1.可变参数

【Flink-cdc-Mysql-To-Kafka】使用 Flinksql 利用集成的 connector 实现 Mysql 数据写入 Kafka

【Flink-cdc-Mysql-To-Kafka】使用 Flinksql 利用集成的 connector 实现 Mysql 数据写入 Kafka 1)环境准备2)准备相关 jar 包3)实现场景4)准备工作4.1.Mysql4.2.Kafka 5)Flink-Sql6)验证 1)环境…

前端视角看 Docker :在国内的基础配置教程(含国内镜像源)

引言 在国内使用Docker时,直接从Docker Hub拉取镜像可能会遇到网络速度慢的问题。配置国内的镜像加速器可以显著提升拉取速度。本教程将指导您完成安装Docker后的基础配置,特别是设置国内镜像加速器。 1. 安装Docker 确保您已在系统上安装Docker。根…

不做数据采集,不碰行业应用,专注数字孪生PaaS平台,飞渡科技三轮融资成功秘诀

12月15日,飞渡科技在北京举行2023年度投资人媒体见面会,全面分享其产品技术理念与融资之路。北京大兴经开区党委书记、管委会主任常学智、大兴经开区副总经理梁萌、北京和聚百川投资管理有限公司(以下简称“和聚百川”)投资总监严…