当前位置: 首页> 汽车> 维修 > 宁波建站_网页设计作业html代码大全_网络销售挣钱吗_推广普通话手抄报内容简短

宁波建站_网页设计作业html代码大全_网络销售挣钱吗_推广普通话手抄报内容简短

时间:2025/9/16 0:41:22来源:https://blog.csdn.net/weixin_42176639/article/details/145834636 浏览次数: 0次
宁波建站_网页设计作业html代码大全_网络销售挣钱吗_推广普通话手抄报内容简短

WIN10 本地部署 BGE Embedding 向量化模型

  • 1.下载 BGE 模型
  • 2.安装
    • 1.创建虚拟环境
    • 2.安装依赖
    • 3.本地测试
  • 3.将服务封装为HTTP可调用形式
    • 1.生成向量值
    • 2.相似度测试

1.下载 BGE 模型

Hugging Face 官网

最好是科学上网,或者从其他渠道下载

2.安装

本文通过 Anconda 创建虚拟环境演示,可以直接用本地环境或其他虚拟形式,Anconda 的替代包可以用 Miniforge(命令是与 Anconda 兼容的)

1.创建虚拟环境

## 查看版本
conda -V
## 查看已有环境列表
conda env list
## 创建环境
conda create -n env-bge python=3.10

在这里插入图片描述

2.安装依赖

## 激活虚拟环境
conda activate env-bge
## 依赖包
pip install -U FlagEmbedding

在这里插入图片描述

3.本地测试

在模型文件所在的目录,打开控制台文件夹,并切换到虚拟环境 env-bge

测试命令

## 激活虚拟环境
conda activate env-bge
## BGE 命令
from FlagEmbedding import BGEM3FlagModel
model = BGEM3FlagModel('bge-m3', use_fp16=True)
sentences_1 = ["你多大了"]
sentences_2 = ["你几岁了"]
embeddings_1 = model.encode(sentences_1, batch_size=12, max_length=8192)['dense_vecs']
embeddings_2 = model.encode(sentences_2)['dense_vecs']
similarity = embeddings_1 @ embeddings_2.T

在这里插入图片描述

3.将服务封装为HTTP可调用形式

1.生成向量值

# encoding=utf-8
import http.server
import socketserver
import urllib.parse
from FlagEmbedding import FlagModel# 设置HTTP服务的端口号
HOST = '0.0.0.0'
PORT = 8800# 读取模型
model_zh = FlagModel('ZH\\bge-large-zh', use_fp16=True)
model_en = FlagModel('EN\\bge-large-en', use_fp16=True)
model_m3 = FlagModel('M3\\bge-m3', use_fp16=True)# 创建一个请求处理类,继承自BaseHTTPRequestHandler
class SimpleHTTPRequestHandler(http.server.BaseHTTPRequestHandler):# 处理GET请求的方法def do_GET(self):try:query_string = self.path.split('?')[-1]params = urllib.parse.parse_qs(query_string)# 解析GET参数md_type = params.get('type', [''])[0]content = params.get('content', [''])[0]# print(f"params content_1:{content_1} \n content_2:{content_2}")if md_type == 'zh':embeddings = model_zh.encode(content)elif md_type == 'en':embeddings = model_en.encode(content)elif md_type == 'm3':embeddings = model_m3.encode(content)else:embeddings = 'md type is error'# print(result)# print(type(embeddings))# 返回self.send_response(200)  # 设置响应状态码为200self.send_header('Content-type', 'text/plain')  # 设置响应头self.end_headers()  # 结束响应头的发送if type(embeddings) == str :self.wfile.write(embeddings.encode())  # 向客户端发送响应内容else:self.wfile.write(str(embeddings.tolist()).encode())  # 向客户端发送响应内容except Exception as e:print(e)# 创建并启动服务
httpd = socketserver.TCPServer((HOST, PORT), SimpleHTTPRequestHandler)
print(f'Serving at http://{HOST}:{PORT}')
httpd.serve_forever()

启动方式,激活虚拟环境,直接运行脚本

在这里插入图片描述

测试1错误的类型

http://127.0.0.1:8800?type=md&content=你好

在这里插入图片描述

测试2生成你好的向量值,结果长度 1024

http://127.0.0.1:8800?type=zh&content=你好

在这里插入图片描述

测试3生成Hello的向量值,结果长度 1024

在这里插入图片描述

2.相似度测试

# encoding=utf-8
import http.server
import socketserver
import urllib.parse
from FlagEmbedding import FlagModel# 设置HTTP服务的端口号
HOST = '0.0.0.0'
PORT = 8800# 读取模型
model_zh = FlagModel('ZH\\bge-large-zh', use_fp16=True)
model_en = FlagModel('EN\\bge-large-en', use_fp16=True)
model_m3 = FlagModel('M3\\bge-m3', use_fp16=True)# 创建一个请求处理类,继承自BaseHTTPRequestHandler
class SimpleHTTPRequestHandler(http.server.BaseHTTPRequestHandler):# 处理GET请求的方法def do_GET(self):try:query_string = self.path.split('?')[-1]params = urllib.parse.parse_qs(query_string)# 解析GET参数md_type = params.get('type', [''])[0]# 解析GET参数content_1 = params.get('content_1', [''])[0]content_2 = params.get('content_2', [''])[0]# print(f"params content_1:{content_1} \n content_2:{content_2}")type=1embeddings_1=[]embeddings_2=[]if md_type == 'zh':embeddings_1 = model_zh.encode(content_1)embeddings_2 = model_zh.encode(content_2)elif md_type == 'en':embeddings_1 = model_zh.encode(content_1)embeddings_2 = model_zh.encode(content_2)elif md_type == 'm3':embeddings_1 = model_zh.encode(content_1)embeddings_2 = model_zh.encode(content_2)else:type = 2# print(result)# print(type(embeddings))# 返回self.send_response(200)  # 设置响应状态码为200self.send_header('Content-type', 'text/plain')  # 设置响应头self.end_headers()  # 结束响应头的发送if type == 2 :self.wfile.write('md type is error'.encode())  # 向客户端发送响应内容else:result = embeddings_1 @ embeddings_2.Tself.wfile.write(str(result.tolist()).encode())  # 向客户端发送响应内容except Exception as e:print(e)# 创建并启动服务
httpd = socketserver.TCPServer((HOST, PORT), SimpleHTTPRequestHandler)
print(f'Serving at http://{HOST}:{PORT}')
httpd.serve_forever()

启动方式,激活虚拟环境,直接运行脚本

在这里插入图片描述

调用

http://127.0.0.1:8800?type=zh&content_1=小明把小红的自行车骑坏了&content_2=被小明骑坏的自行车是小红的

在这里插入图片描述

换成相反说法,相似度仍然很高,看来是有点小问题的
http://127.0.0.1:8800?type=zh&content_1=小明把小红的自行车骑坏了&content_2=被小红骑坏的自行车是小明的

在这里插入图片描述

关键字:宁波建站_网页设计作业html代码大全_网络销售挣钱吗_推广普通话手抄报内容简短

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: