Vagrant+VMWare 安装Ubuntu24.04
背景介绍
对于众多 Windows 用户来说, 有时候需要用到 Linux 环境做一些开发或者测试. WSL 目前能覆盖到很大一部分使用场景, 但是仍然有一些场景需要用虚拟机才能解决.
开发者的痛点往往是对于虚拟机环境的配置和管理, 因为手动安装需要很长的时间, 并且每次安装完成之后需要重新配置, 所以需要一个自动化的工具来完成这些工作.
Vagrant 就是一个很好的工具, 它可以自动安装虚拟机, 并且可以自动配置虚拟机, 与 Docker 类似, 它支持将 Vagrantfile 作为配置文件, 并且可以制作一个镜像文件用来共享或者备份, 所以我们可以轻松的完成虚拟机的安装和配置工作.
在 Windows 上安装虚拟机时 VMware 是一个不错的选择, 因为它的性能相比起 VirtualBox 要好很多, 现在 VMWare Workstation Pro 已经对个人用户免费了, 这更是一个利好.
本文将介绍如何使用 Vagrant+VMWare 安装配置 Ubuntu 24.04.
我将分安装和使用两个章节, 方便读者分阶段了解.
演示环境:
- Vagrant 2.4.3
- Vagrant VMware Utility 1.0.23
- VMWare Workstation 17 Pro(17.6.3 build-24583834)
- Ubuntu 24.04
1. 安装 Vagrant
读者可以选择使用安装包或者用命令行安装:
-
下载安装
-
打开 Power Shell, 使用 winget 安装
winget install --id Hashicorp.Vagrant
1.1 安装 Vagrant VMware Utility
这个插件是允许 Vagrant 使用 VMware Workstation Pro 作为其虚拟化后端的必要插件.
下载安装
2. 安装 VMWare Workstation 17 Pro
VMWare 目前的下载页面需要注册才能 下载安装. 如果你本地有老版本的可以选择升级.
3. 创建 Ubuntu 24.04 虚拟机
接下来我们使用 vagrant 创建一个 ubuntu 24.04 的虚拟机.
-
创建
Vagrantfile
, 这个文件是用来配置虚拟机的, 可以参考 官方文档
打开 Power Shell, 输入:vagrant init bento/ubuntu-24.04 --box-version 202502.21.0
输出:
A `Vagrantfile` has been placed in this directory. You are now ready to `vagrant up` your first virtual environment! Please read the comments in the Vagrantfile as well as documentation on `vagrantup.com` for more information on using Vagrant.
-
启动虚拟机
vagrant up
接下来就是等待虚拟机启动了, 如果是第一次运行, Vagrant 需要下载对应的镜像(Box), 启动需要一些时间.
输出
Bringing machine 'default' up with 'vmware_desktop' provider... ==> default: Box 'bento/ubuntu-24.04' could not be found. Attempting to find and install...default: Box Provider: vmware_desktop, vmware_fusion, vmware_workstationdefault: Box Version: 202502.21.0 ==> default: Loading metadata for box 'bento/ubuntu-24.04'default: URL: https://vagrantcloud.com/api/v2/vagrant/bento/ubuntu-24.04 ==> default: Adding box 'bento/ubuntu-24.04' (v202502.21.0) for provider: vmware_desktop (amd64)default: Downloading: https://vagrantcloud.com/bento/boxes/ubuntu-24.04/versions/202502.21.0/providers/vmware_desktop/amd64/vagrant.boxdefault: ==> default: Successfully added box 'bento/ubuntu-24.04' (v202502.21.0) for 'vmware_desktop (amd64)'! ==> default: Cloning VMware VM: 'bento/ubuntu-24.04'. This can take some time... ==> default: Checking if box 'bento/ubuntu-24.04' version '202502.21.0' is up to date... ==> default: Verifying vmnet devices are healthy... ==> default: Preparing network adapters... ==> default: Starting the VMware VM... ==> default: Waiting for the VM to receive an address... ==> default: Forwarding ports...default: -- 22 => 2222 ==> default: Waiting for machine to boot. This may take a few minutes...default: SSH address: 127.0.0.1:2222default: SSH username: vagrantdefault: SSH auth method: private keydefault:default: Vagrant insecure key detected. Vagrant will automatically replacedefault: this with a newly generated keypair for better security.default:default: Inserting generated public key within guest... ==> default: Machine booted and ready! ==> default: Configuring network adapters within the VM... ==> default: Waiting for HGFS to become available... ==> default: Enabling and configuring shared folders...default: -- C:/Users/xuron/Documents/vagrant-tutorial: /vagrant
-
连接到虚拟机
vagrant ssh
输出
Welcome to Ubuntu 24.04.2 LTS (GNU/Linux 6.8.0-53-generic x86_64)* Documentation: https://help.ubuntu.com * Management: https://landscape.canonical.com * Support: https://ubuntu.com/proSystem information as of Sun Mar 16 04:47:44 AM UTC 2025System load: 0.04 Processes: 203Usage of /: 13.9% of 30.34GB Users logged in: 0Memory usage: 7% IPv4 address for eth0: 192.168.146.128Swap usage: 0%This system is built by the Bento project by Chef Software More information can be found at https://github.com/chef/bentoUse of this system is acceptance of the OS vendor EULA and License Agreements. vagrant@vagrant:~$
配置 Vagrantfile
在 Vagrantfile 中配置初始化命令, 可以通过config.vm.provision
来实现. Vagrant 支持多种类型的 provisioning(供应), 包括 shell, Ansible, Chef 和 Puppet 等. 这里我们以最常用的 Shell 脚本为例, 介绍如何配置.
使用 Shell 脚本进行初始化
你可以直接在 Vagrantfile 中嵌入 Shell 脚本, 或者指定一个外部的 Shell 脚本文件路径. 下面是一个简单的例子, 演示了如何使用内联的 Shell 脚本来执行一些初始化命令:
Vagrant.configure("2") do |config|# ...# 使用内联的Shell脚本config.vm.provision "shell", inline: <<-SHELLecho '开始初始化...'sudo apt-get updatesudo apt-get install -y nginxsudo systemctl start nginxsudo systemctl enable nginxecho '初始化完成!'SHELL
end
在这个例子中, 我们首先更新了包列表, 然后安装并启动了 Nginx 服务. 当 Vagrant 启动虚拟机时, 它会自动运行这些命令.
使用外部脚本
如果你希望将初始化命令放在一个单独的脚本文件中, 可以这样做:
- 创建一个 shell 脚本文件, 例如
bootstrap.sh
. - 在 Vagrantfile 中引用这个脚本:
Vagrant.configure("2") do |config|# ...# 使用外部脚本config.vm.provision "shell", path: "bootstrap.sh"
end
这样做的好处是, 你的 Vagrantfile 保持简洁, 而所有的初始化逻辑都封装在了外部脚本中.
通过这种方式, 你可以轻松地为你的 Vagrant 环境添加任何初始化命令. 无论是安装软件, 修改配置还是其他任何你需要的操作, 都可以通过这种方式实现自动化.
配置端口转发
可以通过 config.vm.network
方法在 Vagrantfile 中指定需要转发的端口. 比如在虚拟机中开启了 Nginx 或者其他 Web 服务, 地址为 127.0.0.1:80
, 要在客户机访问, 可以使用端口转发功能. 下面的例子就展示了在主机上通过127.0.0.1:8080
访问虚拟机中的127.0.0.1:80
:
config.vm.network "forwarded_port", guest: 80, host: 8080
配置共享文件夹
在 Vagrant 中配置共享文件夹允许你在主机(你的电脑)和虚拟机之间共享目录. 这对于开发环境尤其有用, 因为它允许你使用主机上的编辑器或其他工具来修改虚拟机内的文件. 共享文件夹的配置是通过 config.vm.synced_folder
指令完成的.
Vagrant.configure("2") do |config|# ...# 配置共享文件夹config.vm.synced_folder "主机路径", "虚拟机路径"
end
相关文章:
Vagrant+VMWare 安装Ubuntu24.04
背景介绍 对于众多 Windows 用户来说, 有时候需要用到 Linux 环境做一些开发或者测试. WSL 目前能覆盖到很大一部分使用场景, 但是仍然有一些场景需要用虚拟机才能解决. 开发者的痛点往往是对于虚拟机环境的配置和管理, 因为手动安装需要很长的时间, 并且每次安装完成之后需要…...
数字化转型 - 数据驱动
数字化转型 一、 数据驱动1.1 监控1.2 分析1.3 挖掘1.4 赋能 二、数据驱动案例2.1 能源工业互联网:绿色节能的数字化路径2.2 光伏产业的数字化升级2.3 数据中心的绿色转型2.4云迁移的质效优化2.5 企业数字化运营的实践2.6数字化转型的最佳实践 一、 数据驱动 从数…...
【软考-架构】11.3、设计模式-新
✨资料&文章更新✨ GitHub地址:https://github.com/tyronczt/system_architect 文章目录 项目中的应用设计模式创建型设计模式结构型设计模式行为型设计模式 💯考试真题题外话 项目中的应用 在实际项目中,我应用过多种设计模式来解决不同…...
leetcode0031 下一个排列-medium
1 题目: 下一个排列 官方标定难度:中等 整数数组的一个 排列 就是将其所有成员以序列或线性顺序排列。 例如,arr [1,2,3] ,以下这些都可以视作 arr 的排列:[1,2,3]、[1,3,2]、[3,1,2]、[2,3,1] 。 整数数组的 下一…...
CmBacktrace的cmb_cfg.h
一:宏定义解析 #ifndef _CMB_CFG_H_ #define _CMB_CFG_H_#ifdef CMB_USER_CFG #include "cmb_user_cfg.h" #else /* print line, must config by user */ #define cmb_println(...) /* e.g., printf(__VA_ARGS__);printf("\r\n"…...
Redis监控:从睁眼瞎到千里眼的进化史
各位在Redis迷雾中摸黑的探险家们!今天我们要给Redis装上"天眼系统"——从连自己内存爆了都不知道的睁眼瞎,进化到连每秒哪个键被摸了几次都门儿清的监控狂魔!准备好迎接《Redisの楚门世界》了吗?👁️ 第一幕…...
mac利用“自动操作”扩展添加 Mac 访达右键菜单项
用惯了 Windows 的资源管理器,换到 Mac 的访达,最不习惯的就是不能通过右键菜单创建文件。 虽然 Mac 的 App Store 中有几个可以增加访达右键菜单的工具,但是居然都要收费(就这么一点点活都能卖钱,真是了不起…...
算法013——水果成篮
水果成篮(点击即可跳转) 这道题其实就是找到一个最长的子数组的长度,子数组中不超过两种类型的水果。 定义两个指针 left 与 right ,固定 left , 当 right 走到一个位置时,left 与 right 之间的种类 kind 2 , 当 ri…...
TCP/IP协议栈----通俗易懂(与OSI七层模型区别)
目录 一、概念 二、模型 对比 编辑(1)OSI的七层模型 (2)TCP/IP的四层模型 三、TCP/IP模型分层 (1)应用层 (2)传输层 (3)网络层 (4&…...
python中print函数的flush如何使用
在 Python 中,print 函数的 flush 参数是一个布尔值,默认值为 False。当设置为 True 时,它会强制将输出缓冲区的内容立即刷新到目标设备(通常是控制台),而不是等待缓冲区满或者程序结束时才输出。 要注意fl…...
python中有几种作用域
在 Python 中,作用域决定了变量的可见性和生命周期。Python 主要有以下四种作用域: 1. 局部作用域(Local Scope): - 在函数或方法内部定义的变量属于局部作用域。 - 这些变量只能在函数或方法内部访问。 def my_f…...
DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加列宽调整功能,示例Table14_13可展开行的固定表头表格
前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏+关注哦 💕 目录 DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加列宽调整功能,示例Table14_13可展开行的固…...
【Java 优选算法】分治 - 快速排序
欢迎关注个人主页:逸狼 创造不易,可以点点赞吗~ 如有错误,欢迎指出~ 分治算法就是将一个问题划分为多个相同类型的子问题,解决这些子问题即解决该类问题 颜色分类 题目链接 解法 利用三指针, i, left, right,将数组分为4个区间,如下图 …...
Kafka相关的面试题
以下是150道Kafka相关的面试题及简洁回答: Kafka基础概念 1. 什么是Kafka? Kafka是一个分布式、可扩展、容错的发布-订阅消息系统,最初由LinkedIn开发,现为Apache项目。它适用于高吞吐量的场景,如大数据处理和实时数据…...
Java基础面经
Java 基础 面试官:重写与重载的区别? 重载:发生在同一个类中,若多个方法之间方法名相同、参数列表不同,则它们构成重载的关系。重载与方法的返回值以及访问修饰符无关,即重载的方法不能根据返回类型进行…...
Let’s Build AI- 实用AI导航网站
Let’s Build AI Let’s Build AI是一个在线实用AI导航网站,由社区驱动的平台,致力于为 AI 爱好者和开发人员共享资源、工具和知识等等,通过GitHub编辑内容更新,目前包括数据库、模型、开发者工具、ChatGPT提示、图像生成、模型开…...
Spring Boot集成EasyExcel
1. 初始化Spring Boot项目 首先,使用Spring Initializr(https://start.spring.io/)生成一个基本的Spring Boot项目。选择以下依赖项: Spring WebLombok (用于减少样板代码)SLF4J (用于日志记录) 2. 添加依赖 在你的pom.xml文件…...
2024年12月CCF-GESP编程能力等级认证C++编程六级真题解析
CCF-GESP C++六级真题难度与考察范围深度解析 考试定位与整体难度 CCF-GESP C++六级认证属于高阶编程能力考核,难度显著高于五级,接近信息学竞赛提高组水平,重点考察复杂算法设计、面向对象编程(OOP)深度应用及高级数据结构实现能力。试题要求考生具备将数学建模与算法优化…...
网络VLAN技术详解:原理、类型与实战配置
网络VLAN技术详解:原理、类型与实战配置 1. 什么是VLAN? VLAN(Virtual Local Area Network,虚拟局域网) 是一种通过逻辑划分而非物理连接隔离网络设备的技术。它允许管理员将同一物理网络中的设备划分为多个独立的广播…...
深入探讨RAID 5的性能与容错能力:实验与分析(磁盘阵列)
前言—— 本实验旨在探讨 RAID 5 的性能和容错能力。通过创建 RAID 5 阵列并进行一系列读写性能测试及故障模拟,我们将观察 RAID 5 在数据冗余和故障恢复方面的表现,以验证其在实际应用中的可靠性和效率。 首先说明:最少三块硬盘, 使用 4 块…...
如何让ai问答机器人通人性?
领域专用的问答机器人,数据是灵魂。通用模型的问题在于,它们虽然知识广博,但对特定领域的深度理解不足。解决这个问题的第一步,就是构建一个高质量的领域知识库。 数据要精准且全面 想让机器人真正“懂”一个领域,数…...
最新版Chrome浏览器加载ActiveX控件技术--allWebPlugin中间件一键部署浏览器扩展
allWebPlugin简介 allWebPlugin中间件是一款为用户提供安全、可靠、便捷的浏览器插件服务的中间件产品,致力于将浏览器插件重新应用到所有浏览器。它将现有ActiveX控件直接嵌入浏览器,实现插件加载、界面显示、接口调用、事件回调等。支持Chrome、Firefo…...
重生之我在学Vue--第11天 Vue 3 高级特性
重生之我在学Vue–第11天 Vue 3 高级特性 文章目录 重生之我在学Vue--第11天 Vue 3 高级特性前言一、Teleport:打破组件层级的瞬移术1. 什么是Teleport?2. 核心用法3. 实战技巧 二、Suspense:异步组件的优雅过渡1. 为什么需要Suspense&#x…...
汽车无钥匙启动系统不使用传统机械钥匙启动汽车
汽车无钥匙启动系统 定义 汽车无钥匙启动系统(Keyless Start System),启动车辆时不用掏拧钥匙,只需把钥匙放在包内或口袋里,按下车内按键或拧动导板即可使发动机点火。它无需插入钥匙,通过点按按键或旋转…...
平安养老险深圳分公司积极开展2025年“3·15”金融消费者权益保护教育宣传活动
为深刻把握金融工作的政治性、人民性,帮助社会公众增强维护自身合法权益的意识和能力,平安养老险深圳分公司在2025年3月7日至3月15日期间,以“保障金融权益,助力美好生活”为口号,聚焦“维护权益”主题,全面…...
python 实现 A* 算法
A*算法是一种广泛使用的路径搜索算法,结合了启发式搜索和Dijkstra算法的优点。它通过评估每个节点的代价函数 ( f(n) g(n) h(n) ) 来选择最优路径,其中: ( g(n) ) 是从起点到当前节点的实际代价。( h(n) ) 是从当前节点到目标节点的启发式…...
MyBatis 如何创建 SqlSession 对象的?
MyBatis 创建 SqlSession 对象的过程主要由 SqlSessionFactory 接口及其实现类来完成。以下是详细步骤: 1. SqlSessionFactory 接口: SqlSessionFactory 是 MyBatis 的核心接口之一,它负责创建 SqlSession 对象。 你可以将 SqlSessionFactory 视为 Sql…...
微服务》》四个问题
客户端如何访问 API 网关 如 Core中 Ocelot技术 服务如何治理 服务注册与发现 如 Core中 的 consul技术 服务挂了怎么办 可以利用 重试机制、限流、熔断、降级等 服务之间通信问题 》》同步 1. Http 对外 跨防火墙 【 序列化、反序列化 2 ( 因为http是应用层…...
CockroachDB MCP -cursor适用
CockroachDB MCP 服务器 GitHub仓库置顶 这是一个用于 Cursor 的 CockroachDB MCP 服务器,基于 Model Context Protocol (MCP) 规范实现,可以让你在 Cursor 中直接与 CockroachDB 数据库交互。 功能 连接到 CockroachDB 数据库获取数据库中的所有表获…...
GOC学习
for(int i1;i<5;i){//这里的所有语句都会被执行 5 次 } int main(){pen.a(200,16,1,0).a(200,-16,1,0);pen.rt(16).fd(200).bk(200);pen.lt(32).fd(200).bk(200);///pen.rt(-32).fd(200).bk(200);for(int i1;i<5;i){pen.a(200,16,1,0).a(200,-16,1,0);pen.rt(16).fd(200)…...
【机器学习】基于t-SNE的MNIST数据集可视化探索
一、前言 在机器学习和数据科学领域,高维数据的可视化是一个极具挑战但又至关重要的问题。高维数据难以直观地理解和分析,而有效的可视化方法能够帮助我们发现数据中的潜在结构、模式和关系。本文以经典的MNIST手写数字数据集为例,探讨如何利…...
Vscode工具开发Vue+ts项目时vue文件ts语法报错-红波浪线等
Vscode工具开发Vuets项目时vue文件ts语法报错-红波浪线等 解决方案 问题如题描述,主要原因是开发工具使用的代码检查与项目的中的ts不一致导导致,解决办法,修改 vscode 中, 快捷键:command shift p, 输入ÿ…...
Python在数据处理中的应用:从入门到精通
活动发起人小虚竹 想对你说: 这是一个以写作博客为目的的创作活动,旨在鼓励大学生博主们挖掘自己的创作潜能,展现自己的写作才华。如果你是一位热爱写作的、想要展现自己创作才华的小伙伴,那么,快来参加吧!…...
vue3实现跨页面缓存
避免频繁向后端发送请求,vue3中,可以用缓存机制,为了实现跨页面缓存,可以把缓存放到localsotrage里面 关键代码: const globalCache JSON.parse(localStorage.getItem(globalCache)) || {}; 然后加一个forceRefresh关键字, const fetchData async (forceRefresh false) …...
YOLO优化之多信息融合MIF
设计背景 在目标检测领域,随着深度学习技术的不断进步,研究者们一直在寻求提高模型性能和效率的方法。其中, 多模态数据融合 作为一种有效的策略,近年来受到了广泛关注。多模态融合旨在将来自不同传感器或模态的数据进行整合,以提供更全面、丰富的信息供模型学习和推断。…...
人工智能与人的智能,改变一生的思维模型【8】逆向思维
逆向偏差思维模型:顶尖高手如何「反常识」破局 (斯坦福决策科学中心认证的逆向思考框架) 一、直击本质:什么是逆向偏差思维? 定义: 逆向偏差思维是一种主动对抗本能认知倾向的决策模式,通过系…...
Python 科学计算与机器学习入门:NumPy + Scikit-Learn 实战指南
Langchain系列文章目录 01-玩转LangChain:从模型调用到Prompt模板与输出解析的完整指南 02-玩转 LangChain Memory 模块:四种记忆类型详解及应用场景全覆盖 03-全面掌握 LangChain:从核心链条构建到动态任务分配的实战指南 04-玩转 LangChai…...
深入理解 Qt 系统托盘图标:创建自定义的系统托盘图标类
文章目录 深入理解 Qt 系统托盘图标:创建自定义的系统托盘图标类1. 什么是 QSystemTrayIcon?2. 自定义系统托盘图标类:SysTraylcon3. 代码解析1. **类的定义**2. **构造函数:SysTraylcon::SysTraylcon(QWidget *parent)**3. **ini…...
DeepSeek-R1 面试 -—— GRPO
DeepSeek训练中应用的GRPO算法,它源自于强化学习领域的PPO算法。GRPO与PPO算法之间存在哪些差异?这两种算法各自的优劣何在?为何DeepSeek选择采用GRPO算法而非PPO算法?本文将对这些问题提供解答。 一、PPO算法 PPO(Pr…...
AI作曲DiffRhythm原理及本地部署
1.原理简介 最近AI在音乐生成方面的进展引起了极大的关注,但现有的方法面临着严重的限制。一些当前的生成模型只能合成人声或伴奏轨道。虽然一些模型可以生成组合的人声和伴奏,但它们通常依赖于精心设计的多阶段级联架构和复杂的数据管道,阻…...
农业电商|基于SprinBoot+vue的农业电商服务系统(源码+数据库+文档)
农业电商服务系统 目录 基于SprinBootvue的农业电商服务系统 一、前言 二、系统设计 三、系统功能设计 5.1系统功能实现 5.2后台模块实现 5.2.1管理员模块实现 5.2.2商家模块实现 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码…...
深度学习有哪些算法?
深度学习包含多种算法和模型,广泛应用于图像处理、自然语言处理、语音识别等领域。以下是主要分类及代表性算法: 一、基础神经网络 多层感知机(MLP) 最简单的深度学习模型,由多个全连接层组成,用于分类和回…...
鸿蒙开发-一多开发之媒体查询功能
在HarmonyOS中,使用ArkTS语法实现响应式布局的媒体查询是一个强大的功能,它允许开发者根据不同的设备特征(如屏幕尺寸、屏幕方向等)动态地调整UI布局和样式。以下是一个使用媒体查询实现响应式布局的实例: 1. 导入必要…...
历年华中科技大学计算机考研复试上机真题
历年华中科技大学计算机考研复试上机真题 2022华中科技大学计算机考研复试上机真题 2021华中科技大学计算机考研复试上机真题 2019华中科技大学计算机考研复试上机真题 在线评测:https://pgcode.cn 八进制 题目描述 输入一个整数,将其转换成八进制数…...
卷积神经网络(CNN)的主要架构
卷积神经网络(CNN, Convolutional Neural Networks)是深度学习中最重要的模型之一,广泛应用于计算机视觉、目标检测、语义分割等任务。自 LeNet 诞生以来,CNN 结构经历了多个重要发展阶段,出现了许多经典架构ÿ…...
IDEA:项目结构不见了,项目文件消失解决
IDEA:看不见目录结构了。 1、确认项目是否仍存在:检查项目文件夹是否仍然存在于磁盘上。如果项目文件夹被删除或移动了,您需要将其还原或重新导入到IDEA中。 2、重新导入项目:如果项目文件存在,在 IDEA 中找到项目文…...
基于ssm的宠物医院信息管理系统(全套)
一、系统架构 前端:html | layui | vue | element-ui 后端:spring | springmvc | mybatis 环境:jdk1.8 | mysql | maven | tomcat | idea | nodejs 二、代码及数据库 三、功能介绍 01. web端-首页1 02. web端-首页…...
How to install a package in offline scenario in Ubuntu 24.04
概述 做过信创项目的兄弟们在工作上每天可能面对很多需要解决的问题,不过,有一类问题可能是大家经常遇的,比方说,有时候我们不得不硬着头皮在离线生产环境中安装某些软件包,相信很多兄弟被这种细碎的小事搞得焦头烂额…...
将pdf或者word转换成base64格式
废话不多说直接上代码: function fileToBase64(file) {return new Promise((resolve, reject) > {const reader new FileReader();reader.readAsDataURL(file);reader.onload function (event) {const base64Data event.target.result.split(,)[1];resolve(b…...
使用Nodejs基于DeepSeek加chromadb实现RAG检索增强生成 本地知识库
定义 检索增强生成(RAG)的基本定义 检索增强生成(Retrieval-Augmented Generation,简称RAG)是一种结合了信息检索技术与语言生成模型的人工智能技术。RAG通过从外部知识库中检索相关信息,并将其作为提示&…...