Elasticsearch 向量相似搜索

这篇具有很好参考价值的文章主要介绍了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: es01
    image: docker.elastic.co/elasticsearch/elasticsearch:8.11.3
    environment:
      - discovery.type=single-node
      - xpack.security.enabled=false
    ports:
      - "8088:9200"
    volumes:
      - ./elasticsearch-data:/usr/share/elasticsearch/data
    mem_limit: 2g

    networks:
      - my-network
    restart: always



networks:
  my-network:
    name: my-network-1

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

Elasticsearch 向量相似搜索,Elasticsearch,elasticsearch,大数据,搜索引擎

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)文章来源地址https://www.toymoban.com/news/detail-763141.html

    • {
        "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

到了这里,关于Elasticsearch 向量相似搜索的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于Elasticsearch与Hbase组合框架的大数据搜索引擎

    本项目为学校大数据工程实训项目,共开发4周,答辩成绩不错。代码仓库放文章尾,写的不好,代码仅供参考。 对于结构化数据 ,因为它们具有特定的结构,所以我们一般都是可以通过关系型数据库(MySQL,Oracle 等)的二维表(Table)的方式存储和搜索,也可以建立索引。

    2024年02月09日
    浏览(53)
  • 向量数据库:使用Elasticsearch实现向量数据存储与搜索

    Here’s the table of contents:   Elasticsearch在7.x的版本中支持 向量检索 。在向量函数的计算过程中,会对所有匹配的文档进行线性扫描。因此,查询预计时间会随着匹配文档的数量线性增长。出于这个原因,建议使用查询参数来限制匹配文档的数量(类似二次查找的逻辑,先使

    2024年02月07日
    浏览(42)
  • Elasticsearch (ES) 搜索引擎: 数据类型、动态映射、多类型(子字段)

    原文链接:https://xiets.blog.csdn.net/article/details/132348634 版权声明:原创文章禁止转载 专栏目录:Elasticsearch 专栏(总目录) ES 映射字段的 数据类型 ,官网文档参考:Field data types。 下面是 ES 常用的一些基本数据类型。 字符串 类型: keyword :类型。 text :文本类型。

    2024年03月23日
    浏览(52)
  • elasticsearch(ES)分布式搜索引擎04——(数据聚合,自动补全,数据同步,ES集群)

    **聚合(aggregations)**可以让我们极其方便的实现对数据的统计、分析、运算。例如: 什么品牌的手机最受欢迎? 这些手机的平均价格、最高价格、最低价格? 这些手机每月的销售情况如何? 实现这些统计功能的比数据库的sql要方便的多,而且查询速度非常快,可以实现近

    2024年02月08日
    浏览(39)
  • Elasticsearch:FMA 风格的向量相似度计算

    作者:Chris Hegarty 在 Lucene 9.7.0 中,我们添加了利用 SIMD 指令执行向量相似性计算的数据并行化的支持。 现在,我们通过使用融合乘加 (Fused Mulitply-Add - FMA) 进一步推动这一点。 乘法和加法是一种常见的运算,它计算两个数字的乘积并将该乘积与第三个数字相加。 这些类型的

    2024年02月01日
    浏览(28)
  • 微服务04 分布式搜索引擎 elasticsearch DSL数据聚合 自动补全 数据同步 集群 Sentinel

    聚合(aggregations)可以让我们极其 方便的实现对数据的统计、分析、运算 。例如: 什么品牌的手机最受欢迎? 这些手机的平均价格、最高价格、最低价格? 这些手机每月的销售情况如何? 实现这些 统计功能的比数据库的sql要方便的多,而且查询速度非常快 ,可以实现近

    2024年02月11日
    浏览(37)
  • 《Spring Boot 实战派》--13.集成NoSQL数据库,实现Elasticsearch和Solr搜索引擎

             关于搜索引擎 我们很难实现 Elasticseach 和 Solr两大搜索框架的效果;所以本章针对两大搜索框架,非常详细地讲解 它们的原理和具体使用方法, 首先 介绍什么是搜索引擎 、如何用 MySQL实现简单的搜索引擎,以及Elasticseach 的 概念和接口类; 然后介绍Elasticseach

    2023年04月09日
    浏览(77)
  • Elasticsearch:语义搜索、知识图和向量数据库概述

    结合对你自己的私有数据执行语义搜索的概述 语义搜索是一种使用自然语言处理算法来理解单词和短语的含义和上下文以提供更准确的搜索结果的搜索技术。 这种方法基于这样的想法:搜索引擎不仅应该匹配查询中的,还应该尝试理解用户搜索的意图以及所使用的单

    2024年02月16日
    浏览(36)
  • ES搜索引擎入门+最佳实践(九):项目实战(二)--elasticsearch java api 进行数据增删改查

            本篇是这个系列的最后一篇了,在这之前可以先看看前面的内容: ES搜索引擎入门+最佳实践(一)_flame.liu的博客-CSDN博客 ES搜索引擎入门+最佳实践(二)_flame.liu的博客-CSDN博客 ES搜索引擎入门+最佳实践(三)_flame.liu的博客-CSDN博客 ES搜索引擎入门+最佳实践(四)_flame.liu的博客

    2024年02月12日
    浏览(42)
  • 微服务04 分布式搜索引擎 elasticsearch DSL数据聚合 自动补全 数据同步 集群 微服务保护 Sentinel

    聚合(aggregations)可以让我们极其 方便的实现对数据的统计、分析、运算 。例如: 什么品牌的手机最受欢迎? 这些手机的平均价格、最高价格、最低价格? 这些手机每月的销售情况如何? 实现这些 统计功能的比数据库的sql要方便的多,而且查询速度非常快 ,可以实现近

    2024年02月15日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包