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

【ElasticSearch】ES 5.6.15 向量插件支持

参考 :
https://github.com/lior-k/fast-elasticsearch-vector-scoring

  1. 下载插件

  2. 安装插件
    插件目录:
    elasticsearch/plugins,
    安装后的目录如下

     plugins└── vector├── elasticsearch-binary-vector-scoring-5.6.9.jar└── plugin-descriptor.properties
    

    修改 plugin-descriptor.properties 中的 elasticsearch.version 为 5.6.15(因为这里使用的是5.6.15版本ES),安装完成后重启ES。

  3. 构建测试索引

    PUT /vector_test
    {"settings": {"index": {"number_of_shards": 3,"number_of_replicas": 0}},"mappings": {"resume": {"dynamic": "strict","properties": {"file_hash": {"type": "keyword"},"embedding_vector": {"type": "binary","doc_values": true},"doc": {"type": "text"}}}}
    }
    
  4. 构建测试数据

使用如下方法生成向量base64字符串

import base64
import numpy as npdfloat32 = np.dtype('>f4')def decode_float_list(base64_string):bytes = base64.b64decode(base64_string)return np.frombuffer(bytes, dtype=dfloat32).tolist()def encode_array(arr):base64_str = base64.b64encode(np.array(arr).astype(dfloat32)).decode("utf-8")return base64_strprint(encode_array([0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0]))
print(encode_array([0.001,0.002,0.003,0.004,0.005,0.006,0.007,0.008,0.009,0.010]))

将上述得到的结果放到下面内容(embedding_vector)中,这里 embedding_vector 要求传入上述方式base64生成的字符串

PUT /vector_test/resume/1
{"file_hash": "hash1","embedding_vector": "PczMzT5MzM0+mZmaPszMzT8AAAA/GZmaPzMzMz9MzM0/ZmZmP4AAAA==","doc": "This is the content of the first document."
}PUT /vector_test/resume/2
{"file_hash": "hash2","embedding_vector": "OoMSbzsDEm87RJumO4MSbzuj1wo7xJumO+VgQjwDEm88E3S8PCPXCg==","doc": "This is the content of the second document."
}
  1. 查询测试

    POST /vector_test/resume/_search
    {"query": {"function_score": {"boost_mode": "replace","script_score": {"script": {"source": "binary_vector_score","lang": "knn","params": {"cosine": true,"field": "embedding_vector","vector": [1.0,0.8,0.2223,0.7,0.6,0.5,0.4,0.3,0.2,0.1]}}}}},"size": 2,"_source": ["file_hash"]
    }
    

    查询结果

    {"took": 1,"timed_out": false,"_shards": {"total": 5,"successful": 5,"skipped": 0,"failed": 0},"hits": {"total": 4,"max_score": 0.998783,"hits": [{"_index": "vector_test","_type": "resume","_id": "4","_score": 0.998783,"_source": {"file_hash": "hash4"}},{"_index": "vector_test","_type": "resume","_id": "1","_score": 0.5818508,"_source": {"file_hash": "hash1"}}]}
    }
    

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 软件供应链安全:如何防范潜在的攻击?
  • 机器学习筑基篇,Jupyter Notebook 精简指南
  • Docker搭建kafka+zookeeper以及Springboot集成kafka快速入门
  • 暑假自律日记十二
  • 同步与异步:.NET 中的 Task.WaitAll 和 Task.WhenAll
  • SpringMVC框架--个人笔记步骤总结
  • 04.为什么line-height是无单位的 兄弟元素淡出效果 蚀刻文字效果
  • uniapp vue3微信小程序如何获取dom元素
  • 什么? CSS 将支持 if() 函数了?
  • JavaScript中的面向对象编程
  • 数据高效交互丨DolphinDB Redis 插件使用指南
  • 数据结构(Java):树二叉树
  • 前端数据加密方式
  • 《Windows API每日一练》9.13资源-鼠标位图和字符串
  • 基于Java+SpringMvc+Vue技术的药品进销存仓库管理系统设计与实现系统(源码+LW+部署讲解)
  • 9月CHINA-PUB-OPENDAY技术沙龙——IPHONE
  • 【108天】Java——《Head First Java》笔记(第1-4章)
  • 【347天】每日项目总结系列085(2018.01.18)
  • Fundebug计费标准解释:事件数是如何定义的?
  • Java 多线程编程之:notify 和 wait 用法
  • Javascript基础之Array数组API
  • JS专题之继承
  • MySQL QA
  • Vue.js源码(2):初探List Rendering
  • vue--为什么data属性必须是一个函数
  • 工作手记之html2canvas使用概述
  • 基于HAProxy的高性能缓存服务器nuster
  • 力扣(LeetCode)56
  • 强力优化Rancher k8s中国区的使用体验
  • 区块链分支循环
  • 探索 JS 中的模块化
  • 选择阿里云数据库HBase版十大理由
  • (10)Linux冯诺依曼结构操作系统的再次理解
  • (11)MATLAB PCA+SVM 人脸识别
  • (2)空速传感器
  • (AtCoder Beginner Contest 340) -- F - S = 1 -- 题解
  • (八十八)VFL语言初步 - 实现布局
  • (每日持续更新)jdk api之StringBufferInputStream基础、应用、实战
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理第3章 信息系统治理(一)
  • (免费领源码)Java#ssm#MySQL 创意商城03663-计算机毕业设计项目选题推荐
  • (一)SpringBoot3---尚硅谷总结
  • (转)树状数组
  • .locked1、locked勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .mysql secret在哪_MYSQL基本操作(上)
  • .NET : 在VS2008中计算代码度量值
  • .NET CLR基本术语
  • .net core 微服务_.NET Core 3.0中用 Code-First 方式创建 gRPC 服务与客户端
  • .net framework 4.0中如何 输出 form 的name属性。
  • .net MVC中使用angularJs刷新页面数据列表
  • .NET 中让 Task 支持带超时的异步等待
  • .NET/C# 利用 Walterlv.WeakEvents 高性能地中转一个自定义的弱事件(可让任意 CLR 事件成为弱事件)
  • .NET/C# 使用反射注册事件
  • .NET基础篇——反射的奥妙
  • .net流程开发平台的一些难点(1)
  • /etc/motd and /etc/issue