Skip to content

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_schema
  • mysql
  • performance_schema
  • sys

这些是数据库服务自带的系统库。

后续业务项目还会创建自己的业务库,比如报销系统用一个库,电商系统用一个库。不要把“数据库软件”和“某一个业务数据库”混在一起。

AI Agent 课程学习文档。