跳至主要內容
推荐场景下文本嵌入模型性能对比

推荐场景下文本嵌入模型性能对比

向量嵌入技术可以将图片、文字等信息转换为高维向量,从而能够在搜素推荐等场景下,通过计算向量之间的距离来计算图片、文本等原始内容之间的相关性。其中本文嵌入用到最多,市面上主要的AI服务商都会为他们的用户提供本文嵌入API,另外也有很多开源文本嵌入模型可供自行部署使用。目前主流的文本嵌入模型的评估标准为MTEB,但是MTEB并没有评估文本嵌入模型在推荐系统中的能力,而本文将尝试评估文本嵌入模型在推荐场景下的表现。


2025年7月5日大约 6 分钟技术分享机器学习
如何在GitHub Actions上运行RISC-V工作流

如何在GitHub Actions上运行RISC-V工作流

GitHub Actions为托管于GitHub上的项目提供了多种持续集成运行环境,包括三种操作系统Linux、macOS和Windows,以及两种架构AMD64和ARM64。这些环境对于大部分项目来说完全足够,但是RISC-V开发者会发现自己很难在GitHub Actions上运行RISC-V工作流。商业公司可以使用自托管(参考Supporting runners on 64bit RISC-V)或者服务商(RISC-V RunnersCloud-V),但是对于个人开发者来说是一笔巨大的支出。


2025年6月28日大约 2 分钟技术分享GitHub
如何在Go语言中使用BF16

如何在Go语言中使用BF16

在大语言模型流行的当下,低精度浮点数对于开发者们不再陌生,而其中BF16是其中支持范围最广的低精度浮点格式。本文将介绍如何在Go语言中使用BF16。

BF16介绍

+---------+--------+--------+
| 1符号位 | 8指数位 | 7尾数位 |
+---------+--------+--------+

2025年6月1日大约 5 分钟技术分享BF16
在Go语言中优雅地使用AVX512

在Go语言中优雅地使用AVX512

AVX512是英特尔发布的最新最新一代SIMD指令,能够在一个指令周期内对512位数据进行处理,相当于16个单精度浮点数或者8个双精度浮点数。Gorse推荐系统中的推荐模型训练和推理过程需要大量的向量计算工作,AVX512理论上能够带来一定的加速效果。然而比较遗憾的是,Go语言的编译器并不能自动生成使用SIMD指令的机器码。

MinIO曾经开源过一个将英特尔汇编转换为Go汇编的工具c2goasm。首先,将需要向量化的函数用C语言实现,通过Clang编译出包含SIMD指令的汇编。然后,由于Go汇编支持AVX512的,将Intel汇编指令转换成Go汇编,即可通过汇编调用SIMD实现的函数。c2goasm的方案十分有效,然而项目已经将近4年没有更新,经过测试也无法处理AVX512指令。


2023年3月1日大约 15 分钟技术分享SIMD
使用Go Modules引入前端产物到Go项目

使用Go Modules引入前端产物到Go项目

能够编译成一个单独的二进制文件是Go语言的一大特色,避免了部署时繁琐的依赖管理。然而,如果项目包含了前端代码,在编译的时候就需要想办法将前端产物嵌入到Go二进制文件中。编译流程大致如下:

  1. 编译前端代码。
  2. 将前端生成物转换为Go嵌入文件。例如,rakyll/statik这个项目就能够将任何文件嵌入到Go源代码中。另外,Go语言目前提供了官方资源嵌入方案embed,可以在编译期间完成嵌入,免去步骤2。
  3. 构建Go代码。

2023年2月1日大约 3 分钟技术分享前端