切换日光/暗黑模式
002. 模型 Key 与数据库准备
学习目标
这一节继续准备实战项目的基础环境。
学完后,你应该能理解:
- 宝塔面板绑定账号和重装系统的关系;
- 为什么要申请阿里云百炼和火山引擎的 API Key;
- 文本模型、语音模型、视觉模型、多模态模型、Embedding 模型分别解决什么问题;
- 为什么实战项目要同时准备 MySQL、PostgreSQL、Milvus、Redis;
- Docker 安装数据库时,端口映射和目录映射分别是什么意思;
- 为什么课程选择 MariaDB,但日常仍然可以把它当成 MySQL 来理解。
宝塔面板账号
进入宝塔面板后,如果提示绑定宝塔账号,可以注册并登录宝塔的免费账号。
如果服务器初始化流程走错,或者宝塔环境看起来被自己改乱了,可以在云服务器控制台里重装系统。重装时继续选择宝塔 Linux 面板镜像,重新初始化会很快。
对刚接触服务器的人来说,重装系统不是失败,而是重新得到一台干净服务器。
申请模型平台 API Key
实战项目需要调用大模型服务,所以要先准备模型平台的 API Key。
当前先准备两个平台:
| 平台 | 用途 |
|---|---|
| 阿里云百炼 / 通义千问 | 文本模型、Embedding 等能力 |
| 火山引擎 / 豆包 | 文本、多模态、语音等能力 |
API Key 可以理解成“后端程序访问模型平台的密码”。后端拿着这个 Key 去请求模型,模型平台根据 Key 识别是谁在调用,并从对应账号里扣费。
实战项目的调用任务比较具体,Token 消耗不会像日常长时间聊天那么高。学习阶段可以先小额充值,比如每个平台充少量余额,够后续实验即可。
为什么要准备多个模型平台?
不要让自己的应用强绑定某一个模型平台。
真实项目里,不同客户可能有不同偏好:
- 有的客户更愿意用阿里云生态;
- 有的客户更愿意用火山引擎生态;
- 有的模型便宜但能力够用;
- 有的模型更适合处理图片、语音或长文本;
- 有的业务后期可能需要切换模型供应商。
所以从一开始就要建立“可替换模型”的意识。
这和 JS 项目里不要把业务逻辑写死在某个第三方 SDK 上是同一个道理:底层可以换,上层业务尽量不要被绑死。
模型类型先建立概念
后面会逐步用到不同类型的模型。现在先知道它们各自负责什么。
| 模型类型 | 作用 | 直观理解 |
|---|---|---|
| 文本模型 | 处理文字输入和文字输出 | 类似智能问答、摘要、生成文案 |
| 语音模型 | 处理录音、语音识别等 | 把用户说的话转成文字,或处理音频内容 |
| 视觉模型 | 处理图片内容 | 看懂图片、票据、截图里的信息 |
| 多模态模型 | 同时理解文字、图片、音频、视频等输入 | 不只会读文字,还能看图、听音频 |
| Embedding 模型 | 把文本转换成向量 | 后面做 RAG 和相似度检索时使用 |
对 JS 开发者来说,可以先把模型理解成不同能力的远程 API。你传入不同的数据,它返回不同形式的结果。
实战项目会用到哪些数据库?
这套项目不是只连一个数据库,而是会组合多个数据组件。
| 数据组件 | 主要用途 |
|---|---|
| MariaDB / MySQL | 存业务数据,比如用户、报销单、项目数据 |
| PostgreSQL | 给 LangGraph 持久化对话状态、检查点和记忆 |
| Milvus | 存向量数据,用于 RAG、文档分块后的相似度检索 |
| Redis | 做缓存,比如用户信息、认证信息、高频读取数据 |
先不要急着把所有数据库都学深。当前重点是知道它们为什么存在,以及后端项目连接它们时各自承担什么角色。
先安装 MariaDB
课程里用 MariaDB 承担业务数据库角色。
MariaDB 可以理解成 MySQL 的一个分支。MySQL 后来被 Oracle 收购,部分高级能力会涉及商业化;MariaDB 从 MySQL 分支出来,保留了接近 MySQL 的使用方式,并且更强调开源可用。
实际学习中,可以先按 MySQL 的思路理解 MariaDB:
- 都是关系型数据库;
- 都可以存业务表;
- 都可以用 SQL 查询;
- 很多连接工具和 ORM 都能兼容;
- 后续口头上说 MySQL,很多时候实际指的就是这类业务数据库。
为什么用 Docker 安装?
宝塔面板里可以搜索并安装数据库,但课程更强调用 Docker 命令安装。
原因是:
- 企业里经常会用 Docker 或 Docker Compose 管理服务;
- Docker 安装方式更容易复现;
- 命令里能清楚看到端口、密码、目录映射;
- 删除容器、重建容器比直接改系统环境更干净。
可以把 Docker 容器理解成一个小型独立环境:MariaDB 跑在自己的容器里,PostgreSQL 跑在自己的容器里,Redis 也跑在自己的容器里。每个容器只做一件事。
端口映射
数据库在容器内部有自己的默认端口,例如 MySQL / MariaDB 通常是 3306。
但外部访问服务器时,不能直接访问容器内部端口,需要把服务器上的某个端口映射到容器端口。
例如:
txt
服务器端口 14148 -> 容器端口 3306这样外部工具连接服务器的 14148 端口时,请求会被转发到容器里的 3306。
端口映射的好处是:
- 容器内部端口可以保持默认;
- 外部端口可以按自己的规则调整;
- 同一台服务器可以跑多个数据库实例,只要外部端口不同即可。
目录映射
数据库的数据不能只放在容器内部。
如果数据只在容器内部,删除容器时数据也可能一起消失。所以要把服务器上的目录映射到容器的数据目录。
可以理解成:
txt
服务器目录 /www/app/mysql -> 容器目录 /var/lib/mysql容器认为自己在写 /var/lib/mysql,实际数据会落到服务器的 /www/app/mysql。
这样以后重建容器时,只要目录还在,数据就能继续保留。
防火墙端口
数据库容器启动后,如果需要从本地电脑连接服务器数据库,还要在云服务器防火墙里放开对应端口。
例如 MariaDB 映射到服务器的 14148,本地数据库工具要连它,就需要云服务器防火墙允许 14148。
注意:
- 宝塔面板也有防火墙;
- 云厂商控制台也有防火墙;
- 学习阶段优先看云厂商控制台的端口规则;
- 生产环境不要随便把数据库端口暴露给所有 IP。
数据库和数据库服务不是一回事
MariaDB / MySQL 既可以表示一个数据库服务,也可以表示服务里面的某个数据库。
一个 MySQL 服务启动后,内部可能自带几个系统数据库,例如:
information_schemamysqlperformance_schemasys
这些是数据库服务自带的系统库。
后续业务项目还会创建自己的业务库,比如报销系统用一个库,电商系统用一个库。不要把“数据库软件”和“某一个业务数据库”混在一起。