部署并使用bge

部署bge:

cd到model文档:

使用命令:git clone https://huggingface.co/BAAI/bge-large-zh-1.5

再将bge-large-zh中的pytorch_model.bin删掉(如果该文件只有几十M大小,下载的可能是虚拟文件)再输入如下命令:

wget https://huggingface.co/BAAI/bge-large-zh/resolve/main/pytorch_model.bin

在py或者ipynb文件中输入如下命令:

from sentence_transformers import SentenceTransformer
queries = ['query_1', 'query_2']
passages = ["样例文档-1", "样例文档-2"]
instruction = "为这个句子生成表示以用于检索相关文章:"

model = SentenceTransformer('/home/ubuntu/model/bge-large-zh-1.5')
q_embeddings = model.encode([instruction+q for q in queries], normalize_embeddings=True)
p_embeddings = model.encode(passages, normalize_embeddings=True)
scores = q_embeddings @ p_embeddings.T
print(scores)

执行以后下列图片,即为下载成功。

如何使用:

我们希望我们的问题能embedding10个最相关的句子。使用如下数据集(由于是公司整理,暂时不会提供给公众)

这些数据我们录入到emb11_0918_3694.txt文件中

from sklearn.metrics.pairwise import cosine_similarity
with open('/home/ubuntu/model/bge-large-zh/emb11_0918_3694.txt', 'r') as f:
    text = f.read()
    # 按行分割文本
    sentence_2_cn = text.split('\n')
model_cn = SentenceTransformer('/home/ubuntu/model/bge-large-zh')
embeddings_2_cn = model_cn.encode(sentence_2_cn, normalize_embeddings=True)
query = "如何更换雨刮片"
sentence_1 = []
instruction = "为这个句子生成表示以用于检索相关文章:"
sentence_1.append(query)
embeddings_1 = model.encode([instruction+q for q in sentence_1], normalize_embeddings=True)
similarities = cosine_similarity(embeddings_1, embeddings_2_cn)[0]
top_indices = np.argsort(similarities)
request = f"""请告诉我\\"{sentence_1}\\"的答案"""
top_10_sentences = [f"{sentence_2_cn[index]}" for index in reversed(top_indices)]
new_string = '\n'.join(top_10_sentences) +'\n'+ request

  • 6
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
冒泡排序是一种基础的排序算法使用 MIPS 指令实现其过程如下: 1. 首先将数组的长度存储在 $t1$ 寄存器中,将数组指针存储在 $t2$ 寄存器中,将 $0$ 存储在 $t3$ 寄存器中,用来计数。 2. 接着需要两重循环,外层循环从 $0$ 到 $t1-1$ 进行 $t1 - 1$ 次迭代,里层循环从 $0$ 到 $t1-i-1$ 进行迭代,每次比较相邻两个数的大小,如果前一个数比后一个数大,则交换两个数。 3. 在实现过程中,需要使用 load、store、add、sub、beq、bne 等指令,具体操作可以参考以下示例代码: ``` # $t1 存储数组长度,$t2 存储数组指针 # $t3 存储计数器,$t4 存储循环变量 # 冒泡排序 li $t3, 0 # 将计数器 t3 置零 li $t4, 0 # 外层循环变量 i=0 loop: bge $t4, $t1, exit # 外层循环条件判断 li $t3, 0 # 每次开始循环前,将计数器 t3 置零 li $t5, 0 # 内层循环变量 j=0 loop1: bge $t5, $t1, endloop1 # 内层循环条件跳出 add $t6, $t2, $t5 add $t7, $t2, $t5 addi $t7, $t7, 4 lw $t8, 0($t6) # 取出要比较的两个数 lw $t9, 0($t7) blt $t8, $t9, continue # 如果前一个数比后一个数小,不交换 sw $t8, 0($t7) # 否则交换两个数的位置 sw $t9, 0($t6) addi $t3, $t3, 1 # 记录有多少个数移动了位置 continue: addi $t5, $t5, 1 # 内层循环变量 j++ j loop1 endloop1: beqz $t3, exit # 如果没有数移动位置,说明排序已完成 addi $t4, $t4, 1 # 外层循环变量 i++ j loop exit: ``` 对于优化操作,有几种可能的方式,如使用插入排序、使用更高效的排序算法使用汇编语言等,具体可根据实际情况进行选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值