摘要
本文介绍了检索增强生成(RAG)及其核心词嵌入(Embedding),特别是使用sentence-transformers工具的最新进展。Sentence-Transformers是一个用于句子、文本和图像嵌入的Python框架,对于语义相似性、搜索或转述挖掘非常有用。文章还详细阐述了如何安装和配置该框架,包括安装Anaconda、创建虚拟环境以及安装Sentence-Transformers和相应的依赖库。此外,还介绍了CUDA这一用于GPU加速计算的编程模型,并进行了测试以验证预训练模型和CUDA的正常工作。
正文
检索增强生成(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工作。
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
CUDA是NVIDIA专为图形处理单元(GPU)上的通用计算开发的并行计算平台和编程模型,借助CUDA,开发者能够利用GPU的强大性能显著加速计算应用。在经GPU加速的应用中,工作负载的串行部分在CPU上运行,且CPU已针对单线程性能进行优化,而应用的计算密集型部分则以并行方式在GPU核心上运行。使用CUDA时,开发者使用编程语言如 C、C++、Fortran、Python 和 MATLAB进行编程,并通过扩展程序以几个基本关键字的形式来表示并行性。
import torch
torch_version = torch.__version__
cuda_available = torch.cuda.is_available()
cuda_version = torch.version.cuda
cuda_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**3
cuda_mem_reser = torch.cuda.memory_reserved(0)/1024**3
[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】