首页/文章/ 详情

重启检索增强词嵌入的核心算法sentence-transformers 2.6.1

14天前浏览1150

摘要

本文介绍了检索增强生成(RAG)及其核心词嵌入(Embedding),特别是使用sentence-transformers工具的最新进展。Sentence-Transformers是一个用于句子、文本和图像嵌入的Python框架,对于语义相似性、搜索或转述挖掘非常有用。文章还详细阐述了如何安装和配置该框架,包括安装Anaconda、创建虚拟环境以及安装Sentence-Transformers和相应的依赖库。此外,还介绍了CUDA这一用于GPU加速计算的编程模型,并进行了测试以验证预训练模型和CUDA的正常工作。

正文

1. 引言

检索增强生成(RAG)是目前大语言模型的一个热门词汇,其实这个概念和想法本身不是新的,它在ChatGPT发布之前就已经存在,只不过由于LLM的发展使得RAG逐步从理论进入到了实践。RAG背后的核心是词嵌入(Embedding),而embedding发展最好的工具是sentence-transformers,Ollama【最新Ollama: 基于嵌入模型的检索增强生成(RAG)---3DEC测试】和ChatRTX【英伟达的检索增强生成应用程序ChatRTX (V0.2.1)】都使用了sentence-transformers嵌入模型。

上一次更新sentence-transformers还是在2021年【SentenceTransformers库更新V2.0.0】,当时由于算力跟不上(RTX 1660S),被迫中止了运行。现在由于硬件和算法都得到了很大发展,因此重新启动了sentence-transformers工作。

2. sentence-transformers

Sentence-Transformers是一个用于句子、文本和图像嵌入的Python框架,使用这个框架可以计算多种语言的句子/文本嵌入,然后对这些嵌入进行比较,这对于语义上的文本相似性、语义搜索或转述挖掘都非常有用。该框架以PyTorch和Transformers为基础,并且提供了大量为各种任务微调的预训练模型。Sentence-Transformers目前的最新版本是V2.6.1(Mar 26, 2024)。下面介绍其安装过程。

(1) 安装最新版本的Anaconda (Anaconda3-2024.02-1-Windows-x86_64.exe);

(2) 创建虚拟环境st;

(3) 在st虚拟环境下安装Sentence-Transformers;

    pip install sentence-transformers

    transformers安装的是最新版本 V4.39.3 (Apr 2, 2024);Torch安装的是带CUDA的2.2.2+CUDA12.1,默认情况下安装PyTorch(pip install torch)安装的是CPU版本,为了安装GPU版本,在PyTorch的网页中按下图选择安装选项,根据选项得到安装命令行,如下图所示。

    3. CUDA检测

    CUDA是NVIDIA专为图形处理单元(GPU)上的通用计算开发的并行计算平台和编程模型,借助CUDA,开发者能够利用GPU的强大性能显著加速计算应用。在经GPU加速的应用中,工作负载的串行部分在CPU上运行,且CPU已针对单线程性能进行优化,而应用的计算密集型部分则以并行方式在GPU核心上运行。使用CUDA时,开发者使用编程语言如 C、C++、Fortran、Python 和 MATLAB进行编程,并通过扩展程序以几个基本关键字的形式来表示并行性。

      import torchtorch_version = torch.__version__ cuda_available = torch.cuda.is_available()cuda_version = torch.version.cudacuda_count = torch.cuda.device_count()cuda_device = torch.cuda.current_device()cuda_name = torch.cuda.get_device_name(torch.cuda.current_device())cuda_mem_allo = torch.cuda.memory_allocated(0)/1024**3cuda_mem_reser = torch.cuda.memory_reserved(0)/1024**3

      4. 测试

      本测试的主要目的有两个:首先是为了检查预训练模型是否能够正常工作,其次是为了测试CUDA是否能正常工作。同时使用了如下3个预训练模型,数据集尺寸为239k,由8个随机的论文摘要集组合而成。
      • all-MiniLM-L6-v2
      • all-mpnet-base-v2
      • multi-qa-mpnet-base-dot-v1
      查询与"Probabilistic Analysis of open pit slope stability"最相似的Top10,以Model 1为例其结果如下:

      [1] (2021) Stability Analysis and Optimal Design of Ultimate Slope of an Open Pit Mine: A Case Study.【经验确定露天矿边坡角的Haines and Terbrugge方法

      [2] (2018) Governing risk elements through open pit slope optimization.【构造数据收集和解释(Structural data gathering and interpretation)】

      [3] (2022) Estimating the Optimal Overall Slope Angle of Open-Pit Mines with Probabilistic Analysis.【露天矿整体边坡角优化技术(Overall Slope Angle Optimization)

      [4] (2009) Guidelines for Open Pit Slope Design.【露天矿边坡设计指南(Guidelines for Open Pit Slope Design)】

      [5] (2011) Addressing geotechnical data uncertainty and risk in open pit slope design.【采矿边坡稳定性---未来的边坡(Slopes of the Future)】

      [6] (2019) Slope Stability Of The Middle Stack Of An Open Pit.【三维极限平衡分析 (Three-Dimensional Limit Equilibrium)

      [7] (2019) Geotechnical considerations for the stability of open pit excavations at mine closure: some scenarios.【采矿边坡稳定性---未来的边坡(Slopes of the Future)

      [8] (2019) Comprehensive Analysis on Slope Stability through the Transition from Open Pit to Underground Block Cave Mining.【崩落采矿中岩石断裂的简化模拟途径Block Cave】

      5. 结束语

      Sentence-Transformers是检索增强生成(RAG)的重要工具,本文安装和测试了它的最新版本,并且使用了增强的CUDA加速器,测试例子使用的方法为大规模的数据清洗和文本归类提供了一种快捷的工具(geotech-Sbert-similarity.py)
      来源:计算岩土力学
      断裂通用MATLABUGpythonUM理论3DEC
      著作权归作者所有,欢迎分享,未经许可,不得转载
      首次发布时间:2024-04-21
      最近编辑:14天前
      计算岩土力学
      传播岩土工程教育理念、工程分析...
      获赞 119粉丝 873文章 1732课程 0
      点赞
      收藏
      未登录
      还没有评论

      课程
      培训
      服务
      行家

      VIP会员 学习 福利任务 兑换礼品
      下载APP
      联系我们
      帮助与反馈