【Elasticsearch】-文本向量化

news2024/11/18 9:49:21

由于使用了QAnything 本地知识库应答平台

内部已集成Embedding 文本向量化服务,因此不在单独部署。

基于 transformers

如果需要单独部署,可以参看 BCEmbedding/README_zh.md at master · netease-youdao/BCEmbedding · GitHub

从启动脚本中可以看出,集合多个服务,其中就包括embedding

其中embedding服务路径 

qanything_kernel/dependent_server/embedding_server

启动的容器中可以查看对应的模型配置

/root/models/linux_onnx/embedding_model_configs_v0.0.1

 

1、http调用

调用地址 http://0.0.0.0:9001/embedding

入参格式

{
	"texts": "使用QAnything平台"
}

返回格式:

输入的每个汉字、字母、数字、符号等都会形成一个768向量维度的float数组


[
  [0.002994537353515625,...],
  [-0.00853729248046875,...],
  [0.002994537353515625,...],
  [0.002994537353515625,...],
  [-0.00853729248046875, ...]
]

2、优化代码

执行结果速度有点慢,需要10多秒。内部将每个字符拆分,循环调用

修改 embedding_async_backend.py 文件

@get_time_async
async def embed_documents_async(self, texts):
	futures = []
	# 设置mini_batch=1,每次处理1个文本
	mini_batch = 1
	for i in range(0, len(texts), mini_batch):
		future = asyncio.Future()
		futures.append(future)
		await self.queue.put((texts[i:i + mini_batch], future))

	results = await asyncio.gather(*futures)
	return [item for sublist in results for item in sublist]

改造代码

改造后执行耗时500ms

@get_time_async
async def embed_documents_async_all(self, texts):
	future = asyncio.Future() 
	futures.append(future)
	await self.queue.put((texts, future))
	results = await asyncio.gather(*futures)
	return results	

前后两次的向量结果存在不一致问题

经测试发现,相同的字在不同文本中的向量结果一致

使用静态词嵌入模型(如 Word2Vec 或 GloVe)时。模型为每个词生成唯一的固定向量,不考虑上下文

3、词向量转句级向量

本质上属于平均向量

private static final float[] EMPTY_VECTOR = new float[0];

List<? extends float[]> vectors = JSONUtil.toList(body, EMPTY_VECTOR.getClass());

            // 词级 转 句级 ,采用mean
            float[] result = vectors.get(0);
            for (int i = 1; i < vectors.size(); i++) {
                float[] item = vectors.get(i);
                for (int t = 0; t < result.length; t++) {
                    result[t] = result[t] + item[t];
                }
            }
            int len = vectors.size();
            for (int i = 0; i < result.length; i++) {
                result[i] = result[i] / len;
            }

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

脚手架是什么?详细版+通俗易懂版!!!!!!

脚手架&#xff08;Scaffolding&#xff09;在软件开发领域&#xff0c;特别是在前端开发和全栈开发环境中&#xff0c;是一个术语&#xff0c;用来描述一个辅助工具或框架&#xff0c;它旨在帮助开发者快速搭建项目的基础结构和开发环境。这些基础结构可能包括项目的目录结构、…

Android Input系统原理一

1. getevent 命令使用 getevent -h getevent -lrt-t 表示事件发生时间 -l label event types and names in plain text 表示把event事件类型名字打出来 -r 显示一下接受事件速率130|console:/ # getevent -lrt could n…

aloam框架laserMapping.cpp源码解读

一、详细源码解读 #include <math.h> #include <vector> #include <aloam_velodyne/common.h> #include <nav_msgs/Odometry.h> #include <nav_msgs/Path.h> #include <geometry_msgs/PoseStamped.h> #include <pcl_conversions/pcl_c…

动手学深度学习8.7. 通过时间反向传播-笔记练习(PyTorch)

本节课程地址&#xff1a;本节无视频 本节教材地址&#xff1a;8.7. 通过时间反向传播 — 动手学深度学习 2.0.0 documentation (d2l.ai) 本节开源代码&#xff1a;...>d2l-zh>pytorch>chapter_multilayer-perceptrons>bptt.ipynb 通过时间反向传播 到目前为止&…

[通义灵码] IDE 插件实现企业知识库问答

在2024杭州云栖大会上&#xff0c;随着通义大模型能力的全面提升&#xff0c;阿里云通义灵码迎来重磅升级&#xff0c;从一年前只能完成基础的辅助编程任务&#xff0c;进化到几句话就能完成需求理解、任务拆解、代码编写、修改BUG、测试等开发任务&#xff0c;最快几分钟可从0…

XSS | DOM 型 XSS 攻击

关注这个漏洞的其他相关笔记&#xff1a;XSS 漏洞 - 学习手册-CSDN博客 0x01&#xff1a;DOM 型 XSS —— 理论篇 DOM 全称 Document Object Model&#xff0c;使用 DOM 可以使程序和脚本能够动态访问和更新文档的内容、结构及样式。 DOM 型 XSS 是一种特殊类型的反射型 XSS&…

系统实现悬浮窗-菜单-悬浮按钮功能

文章目录 需求&#xff1a;系统实现悬浮窗菜单功能或悬浮小球定制功能实际手机产品效果悬浮窗作用 一、实际应用场景二、应用上面实现功能思路Demo演示效果部分源码分析Service层View层View初始化view 添加到窗体悬浮球拖动重点代码&#xff1a; 三、系统上面实现功能思路系统服…

秒懂Linux之信号

目录 信号的基本概念 信号的处理方式 默认动作 自定义处理信号 忽略该信号 信号的产生方式 kill命令 键盘组合键 系统调用 软件条件 异常 信号产生的深层理解 core的功能 信号的阻塞 内核中的表示 sigset_t 信号集操作函数 sigprocmask sigpending …

do while循环

/while(条件) {满足条件执行的代码&#xff0c;循环体 } /* do 做 */ while (false) { Console.WriteLine(" while循环执行了"); } do { //循环体逻辑 Console.WriteLine("dowhile循环执行了"); } while (true); Console.ReadLine(); /* w…

数据库索引:最左匹配原则——提升数据库的查询性能

数据库索引&#xff1a;最左匹配原则——提升数据库的查询性能 1、核心要点2、实例3、建议 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 在数据库优化中&#xff0c;组合索引的使用深受最左匹配原则的影响。这一原则是提升查询效率的关键…

详细分析Nginx中的proxy_pass 末尾斜杠

目录 前言1. 基本知识2. Demo 前言 对于Nginx的讲解&#xff0c;更多推荐阅读&#xff1a; Nginx配置静态网页访问&#xff08;图文界面&#xff09;Nginx将https重定向为http进行访问的配置&#xff08;附Demo&#xff09;Nginx从入门到精通&#xff08;全&#xff09;详细分…

[Java EE] TCP 协议

Author&#xff1a;MTingle major:人工智能 Build your hopes like a tower! 文章目录 文章目录​​​​​​​ 一. TCP 协议 二. TCP 特性 1. 确认应答(ack) 2. 超时重传 3. 连接管理 三次握手 四次挥手 TCP状态 4 滑动窗口 5. 流量控制 6.拥塞控制 7. 延时应答 8.捎带应答 9…

前端性能初探

前端监控 提升稳定性&#xff0c;更快的发现异常&#xff0c;定位异常&#xff0c;解决异常&#xff0c;js错误&#xff0c;接口异常&#xff0c;资源异常&#xff0c;白屏等。 关注用户体验&#xff0c;建立性能规范&#xff0c;长期关注优化&#xff0c;页面性能&#xff0c…

TopOn对话游戏魔客:2024移动游戏广告应如何突破?

TopOn对话游戏魔客&#xff1a;2024移动游戏广告应如何突破&#xff1f; 近年来&#xff0c;游戏广告投放的成本日益走高&#xff0c;ROI如何回正&#xff0c;素材如何创新等问题困扰着每一个广告主。在隐私政策的实施下&#xff0c;广告投放难度也在不断升级。 据data.ai发布…

MK米客方德SD NAND参考设计

一、电路设计 参考电路&#xff1a; R1~R5 (10K-100 kΩ)是上拉电阻&#xff0c;当SD NAND处于高阻抗模式时&#xff0c;保护CMD和DAT线免受总线浮动。 即使主机使用SD NAND SD模式下的1位模式&#xff0c;主机也应通过上拉电阻上拉所有的DATO-3线。 R6&#xff08;RCLK&…

解决图片放大模糊

首先需要了解设备像素和CSS像素&#xff0c;CSS像素 是 Web 开发中的逻辑像素&#xff0c;设计者根据这些像素来布局页面。设备像素 是设备屏幕上的实际像素点数。 DPR 是 设备像素 和 CSS像素 的比率&#xff0c;所以进行缩放后&#xff0c;也需要对图片尺寸进行处理&#xf…

【HarmonyOS】鸿蒙自定义TabLayout示例

【HarmonyOS】自定义TabLayout代码示例&#xff0c;通过 Scroll 锚点 Tab 布局&#xff0c;滚动条会自动滚动使选中的标签居中显示。 class MyTabItem {label: string "";positionX: number -1; // 当前位置width: number -1; // 当前宽度constructor(label: stri…

OpenHarmony(鸿蒙南向)——平台驱动指南【HDMI】

往期知识点记录&#xff1a; 鸿蒙&#xff08;HarmonyOS&#xff09;应用层开发&#xff08;北向&#xff09;知识点汇总 鸿蒙&#xff08;OpenHarmony&#xff09;南向开发保姆级知识点汇总~ 持续更新中…… 概述 功能简介 HDMI&#xff08;High Definition Multimedia Int…

VS Code设置合集

目录 VS Code设置合集1、汉化2、VS Code自动报错3、VS Code右键没有Open In Default Browser4、VS Code设置颜色主题5、修改默认缩进字符 VS Code设置合集 1、汉化 点击插件 → 搜索chinese → 点击install&#xff0c; 同时按住ctrl shift P → 搜索>configure displ…

架构师:消息队列的技术指南

1、简述 消息队列(Message Queue, MQ)是一种异步通信机制,允许系统的各个组件通过消息在彼此之间进行通信。消息队列通过解耦系统组件、缓冲高峰期请求和提高系统的可扩展性,成为分布式系统中不可或缺的一部分。 2、工作原理 消息队列的基本工作原理是生产者将消息发布到…