企业做 AI 知识库(也就是常说的 RAG,检索增强生成)时,最常遇到的问题不是"模型不会用",而是"服务器配不明白"。有人以为配一张大显卡就够了,结果向量检索慢得没法用;有人把向量数据库、嵌入模型、大模型全塞一台机器,一跑起来内存爆掉;也有人低估了存储增长,知识库一扩容磁盘就告急。AI 知识库的资源需求和传统业务差别很大,得按它自己的逻辑来规划。
这篇文章把一套 RAG 知识库的服务器拆成几块讲:向量数据库吃什么资源、嵌入模型和大模型推理要多少显存、存储怎么分层、检索架构怎么设计。然后给出按规模分档的配置建议,以及几处关键的成本权衡。文中所有数字都是经验值,用来做量级参考,具体要结合数据规模和延迟要求实测。
读完你应该能搭出一套资源匹配的知识库架构,知道显存该配多大、内存和存储怎么估、哪些地方能省钱哪些地方不能省。
一、先理解 RAG 的资源在哪几块
一个 AI 知识库的完整链路大致是这样:
- 文档入库:把文档(PDF、Word、网页等)切分成片段(chunk),用嵌入模型把每个片段转成向量,存进向量数据库。原文和元数据另外保存。
- 检索:用户提问时,把问题也转成向量,在向量数据库里做相似度搜索,找出最相关的若干片段。
- 生成:把检索到的片段作为上下文,连同问题一起交给大语言模型,生成回答。
这条链路里,资源消耗落在三处:嵌入模型的推理(入库时批量算向量)、向量数据库的存储与检索(吃内存和磁盘)、大模型的推理(最吃 GPU 显存)。原文存储是第四块,吃磁盘容量。
理解这个划分很重要,因为不同环节的瓶颈不一样,优化方向也不同。入库慢往往是嵌入模型或向量写入的问题,检索慢往往是向量库内存不足,生成慢则是大模型推理速度的问题。
二、向量数据库:内存是命脉
向量数据库(常见的思路有 Milvus、pgvector、Qdrant、Weaviate 等)的核心任务是在海量向量里做快速的相似度搜索。它的资源需求有几个特点。
内存是命脉。 向量检索要快,最好把整个向量索引放进内存。一个向量的维度常见是 512、768、1024、1536 等,存储开销是维度 × 数据类型大小。以 float32(4 字节)为例,一条 768 维向量大约占 3KB,一条 1536 维向量约占 6KB。再加上索引结构本身的开销(HNSW 这类图索引会有额外内存占用,经验上索引内存是原始向量内存的 1.5–2 倍),估算内存要留足。
举个例子:100 万个 768 维向量,原始向量约占 3GB,加上 HNSW 索引开销,内存需求大约在 5–8GB(经验值)。1000 万条就是 50–80GB 量级。这个数字说明,向量规模一大,内存需求会迅速攀升,规划时要把向量数量的增长算进去。
| 向量数量 | 维度 | 估算内存(含索引,经验值) |
|---|---|---|
| 10 万 | 768 | < 1GB |
| 100 万 | 768 | 5–8GB |
| 1000 万 | 768 | 50–80GB |
| 1 亿 | 768 | 500GB+,需分片/量化 |
磁盘与量化。 当向量多到内存放不下时,有几个方向:用量化(把 float32 压成 int8 甚至二值,大幅省内存,代价是精度略降)、用磁盘索引(部分方案支持,速度换内存)、或者分片(把向量分散到多台机器)。
pgvector 的取舍:如果已经用 PostgreSQL,直接用 pgvector 扩展能省掉单独部署向量库的运维成本,适合中小规模(百万级向量以内)。数据量大了,专用向量数据库在检索性能和扩展性上更有优势。
pgvector 的基本用法示意:
-- 安装扩展(需在目标库执行)
CREATE EXTENSION IF NOT EXISTS vector;
-- 建表:768 维向量
CREATE TABLE knowledge_chunk (
id BIGSERIAL PRIMARY KEY,
doc_id BIGINT,
content TEXT,
embedding vector(768)
);
-- 建近似索引(HNSW),加速检索
CREATE INDEX ON knowledge_chunk USING hnsw (embedding vector_cosine_ops);
-- 相似度检索:找与查询向量最接近的 5 条
SELECT id, content FROM knowledge_chunk
ORDER BY embedding <=> '[查询向量]'
LIMIT 5;
创建索引和建表要按实际数据量规划,HNSW 索引构建很吃内存和时间,大规模数据建议分批构建,别在生产高峰做。
三、嵌入模型与推理:CPU 够用还是必须 GPU
嵌入模型负责把文本转成向量。它比大模型轻得多,但入库阶段要处理海量片段,累积起来的算力需求不小。
嵌入模型通常可以跑在 CPU 上。 一些轻量嵌入模型(参数量在几千万到几亿级别)用 CPU 也能达到可接受的吞吐,适合中小规模知识库。经验上,CPU 做嵌入的吞吐是每秒几十到几百个片段(取决于模型大小和 CPU 核数)。如果入库量每天只有几万条,CPU 完全够用。
数据量大或要求高吞吐时,GPU 加速嵌入有明显收益,吞吐能提升一个数量级。对大模型来说,GPU 更是必需。
大模型推理是显存大户。 大模型显存占用主要看三部分:模型权重、KV 缓存(存放对话上下文)、以及一些运行开销。粗略估算:
- 模型权重:以 7B(70 亿参数)模型为例,FP16 精度下权重约占 14GB 显存;INT8 量化后约 7GB;INT4 量化后约 4GB(经验值)。
- KV 缓存:和上下文长度、并发数成正比。上下文越长、并发越高,KV 缓存越大。
- 预留开销:一般再留 1–2GB 余量。
所以一张 24GB 显存的卡,跑 FP16 的 7B 模型大约刚好(权重 14GB + KV 缓存 + 开销);跑 13B 模型就需要量化或更大的卡。显存不够的典型表现是模型加载失败或跑起来就 OOM。
| 模型规模 | 精度 | 权重显存(经验值) | 建议显存 |
|---|---|---|---|
| 7B | FP16 | ~14GB | 16–24GB |
| 7B | INT4 量化 | ~4GB | 8GB 起 |
| 13B | FP16 | ~26GB | 32GB+ |
| 13B | INT8 量化 | ~13GB | 16–24GB |
| 70B | INT4 量化 | ~40GB | 48GB+ 或双卡 |
量化是关键的成本杠杆:量化能大幅降低显存需求,让中小显存也能跑较大的模型,代价是回答质量可能有轻微下降。很多知识库场景用 INT8 或 INT4 量化就能满足需求,不必上 FP16。
四、存储:要分三层来规划
AI 知识库的存储不能只看一个数字,要按数据类型分三层:
原文与元数据存储:原始文档、切分后的片段文本、来源、时间等元数据。这部分用关系型数据库(PostgreSQL/MySQL)加对象存储即可。原文是长期占用的,一套持续增长的知识库,原文可能就是几十 GB 到几 TB。
向量存储:前面讲的向量数据库,吃内存和磁盘。向量往往是最占内存的部分。
对象存储:原始文件(PDF、图片、音视频)建议放对象存储,而不是数据库。原因是文件体积大、增长快,对象存储天然适合,且能配合 CDN 或直读。
容量估算要按增长算。 假设每个片段平均 500 字,向量 768 维占约 3KB,那么一条片段的总存储(文本 + 向量 + 元数据)大约 4–5KB。100 万片段就是 4–5GB。看似不多,但如果文档持续上传、还保留原文和多个版本,实际增长会快得多。规划时按半年到一年的数据增长量留容量,并设计归档策略(老数据转低频存储)。
五、资源规划与配置分档
把上面的分析收拢成分档配置建议(经验值,用于量级参考)。
| 规模 | 文档量 | 向量规模 | CPU | 内存 | GPU | 存储 |
|---|---|---|---|---|---|---|
| 个人/团队小库 | 几百到几千文档 | 十万级 | 8 核 | 32GB | 可不配或单卡入门 | 200GB SSD |
| 中小企业知识库 | 万级文档 | 百万级 | 16 核 | 64GB | 1 张中端卡(16–24GB) | 1TB SSD + 对象存储 |
| 较大规模 | 十万级文档 | 千万级 | 32 核+ | 128GB+ | 1–2 张大显存卡 | 数 TB SSD + 对象存储 |
| 大规模平台 | 海量 | 亿级 | 多节点 | 按分片规划 | 多卡/多机推理集群 | 分布式存储 + 分级 |
几个关键的规划原则:
- 显存按模型规模和并发估:先定用多大的模型、多长的上下文、多少并发,再算显存。
- 内存按向量规模估:向量能进内存就快,放不下就靠量化或分片。
- GPU 用于推理,不用于检索:向量检索主要吃内存和 CPU,别把 GPU 浪费在检索上。
- 存储分层:原文进对象存储,向量进向量库,热数据 SSD、冷数据低频存储。
- 推理服务要能并发:多个用户同时提问时,大模型推理要能排队或批量处理,否则并发上来延迟会飙升。
六、成本权衡:钱该花在哪
AI 知识库的成本大头是 GPU。几个能省钱的思路:
量化是性价比最高的手段,可以把显存需求降到 1/2 到 1/4,让更便宜的卡跑更大的模型。
嵌入模型用 CPU 或小模型:入库不是实时任务,慢一点没关系,用 CPU 跑轻量模型能省下一张卡。
按需使用 GPU:如果知识库不是 7×24 高频使用,可以考虑按需启动推理服务,或者用云上的按量 GPU,避免为闲置的卡付费。
向量规模控制:合理切分文档、定期清理过期数据、用量化索引,能显著降低内存需求。
但要提醒一句:省资源不能省到影响体验。检索相关性和生成质量是知识库的核心价值,如果为了避免硬件投入而用小模型/低量化导致回答质量崩了,那这个知识库就没有意义了。该配的显存要配够,该留的内存余量要留足。
常见问题
Q:向量数据库必须用 GPU 吗?
不需要。向量检索主要吃内存和 CPU,GPU 不是必须的。GPU 是用在嵌入模型和大模型推理上的。把 GPU 用在向量检索上是浪费。
Q:向量多到内存放不下怎么办?
有三个方向:量化(省内存、损精度)、磁盘索引(用速度换内存)、分片(多台机器分担)。小规模优先量化,大规模考虑分片。具体选哪个看你的延迟要求和预算。
Q:嵌入模型用 CPU 还是 GPU?
中小规模、入库量不大时 CPU 够用;入库量大、要求高吞吐时用 GPU 加速。嵌入不是实时任务,可以慢慢跑,所以 CPU 的性价比常常更高。
Q:大模型显存怎么估?
按"模型权重的显存 + KV 缓存 + 开销"来算。权重看参数量和精度(7B FP16 约 14GB),KV 缓存看上下文长度和并发。经验上显存不够时优先量化。
Q:能不能不用向量数据库,直接用关系型数据库?
可以,用 PostgreSQL 的 pgvector 扩展就能在关系库里做向量检索,适合百万级向量以内的场景。数据量再大,专用向量库在性能和扩展性上更有优势。选哪个取决于数据规模和团队的技术栈。
Q:知识库回答不准,是服务器配置问题吗?
通常不是。回答不准更多是切分策略、嵌入模型选择、检索参数的问题——片段切得不好、嵌入模型不适配、检索到的片段不相关,都会导致生成质量差。配置够用就行,效果优化主要在算法和数据层。
总结
- RAG 知识库的资源落在四处:嵌入推理、向量数据库、大模型推理、原文存储,先分清瓶颈在哪再谈配置。
- 向量数据库的命脉是内存,向量规模一大内存需求迅速攀升,靠量化、磁盘索引、分片来应对;百万级以内用 pgvector 往往够用。
- 嵌入模型 CPU 常常够用,大模型推理才是显存大户,显存按"权重 + KV 缓存 + 开销"估算,量化是降低显存需求的关键杠杆。
- 存储分三层规划:原文进对象存储、向量进向量库、热数据 SSD 冷数据低频,并按增长量预留容量。
- 成本大头是 GPU,量化和按需使用是主要省钱手段,但不能为了省钱牺牲检索相关性和生成质量——那会让知识库失去意义。
企业QQ咨询




