为什么大厂要用Postgres + mogodb的框架?

正常来说,Postgres是关系型数据库,它里面的插件pgvector可以做向量相似度检索,一般就将Postgres + pgvector 充当向量数据库,既然postgres既能做关系型数据库的事情,又能做向量数据库的事情,为什么还要用mogodb?

从技术角度看使用 Postgres+pgvector 完全可以搞定全部,MongoDB 不是必需品。 用 Mongo 不是因为 PG 做不到,是业务读写特点 + 架构取舍 带来的选择,很多开源项目这么做,是为了拆分负载、隔离数据,不是硬性要求。

PG 能干啥

Postgres + pgvector:

  1. ✅ 关系能力:表、主键、外键、事务、JSONB
  2. ✅ 向量能力:向量相似度检索(RAG 核心召回)

你可以:向量、文档元信息、聊天记录全部存在 PG,小项目这么写是最优最简单方案。

为什么很多 RAG 项目还要带上 MongoDB?

核心的原因有三个:

1. 负载隔离(最重要)

向量检索CPU 开销很高,是 RAG 最核心、最不能卡的接口。

  • 如果你把频繁写入的聊天记录、文件上传记录 全部放在同一个 PG 实例: 用户每一轮对话、每次上传文件,都会大量 INSERT/UPDATE,会和向量查询争抢 CPU、IO。 高峰期,向量检索会变慢,问答变卡。

分开之后:

  • PG:只承载向量检索、文档切片(读重,计算重)
  • Mongo:承载聊天记录、文件元数据(大量追加写入,结构多变)

两个库独立资源,聊天记录疯狂写入,不会拖累向量检索性能。
👉 但是!本地开发、小体量知识库,根本感受不到这个压力,属于 "预留给大并发生产环境" 的设计。

2. 数据形态的偏好:频繁变更的松散结构

聊天记录、文档元数据经常要新增字段: 比如今天加feedback用户点赞,明天加agent_plugins插件信息,后天加trace日志。

  • Mongo:文档型,直接新增字段,不用改表结构,零成本。
  • PG:JSONB 虽然也能存动态字段,但如果业务规范强,一般会尽量设计成固定表;如果大量字段随意增减,开发习惯上不如 Mongo 顺手。

⚠️ 注意:这是开发习惯,不是 PG 做不到。PG 的 JSONB 很强。

3. 故障域隔离

  • 如果 Mongo 挂了:向量检索还能跑,问答可以继续,只是看不到历史对话 / 文件列表
  • 如果 PG 挂了:整个知识库召回直接失效,问答完全不可用

核心逻辑:把系统最核心的向量能力单独保护起来,不要被非核心数据的故障影响。

✅ 两种架构对比,帮你选

架构 A:单库 Postgres + pgvector(推荐你本地开发)

没有 Mongo,最简单,少维护一个容器

  • 向量切片、文件元信息、对话记录,全部放在 PG ✅ 优点:部署简单,少一个组件,调试方便,个人项目足够 ❌ 缺点:高并发、百万级文档时,数据库压力混杂在一起

架构 B:PG+pgvector + MongoDB(大型企业项目)

开源项目常用,面向未来可能扩容到生产 ✅ 优点:读写负载隔离,海量对话写入不影响向量检索;松散文档字段改动方便;故障隔离 ❌ 缺点:组件变多,维护更麻烦,本地开发属于 "过度设计"

什么时候没必要加 Mongo?

  • 本地测试、个人知识库、文档量不大、没有大量并发聊天 👉 直接去掉 Mongo,只用 Postgres+pgvector,完全够用,不损失核心 RAG 功能

总结

Postgres + pgvector 本身就是全能选手 ,既能存结构化数据,又能做向量检索。 MongoDB 是加分的分离方案,不是 RAG 知识库的必备组件。

相关推荐
运维有小邓11 小时前
2026年主流AD域管理软件有哪些?
前端
Mickey同学1 小时前
提示词注入:AI 时代的「SQL 注入」
前端
deli0071 小时前
GROUP BY 先别想当然:我把 SQL 分组语义做成了沙盘,8 个实验 + 27 条自检全绿
前端
WayneX1 小时前
开源 Vue 3 组件库 Morya UI:把组件、文档、AI 工具链一起做进一个包
前端·vue.js·前端框架
用户15741568165341 小时前
页面白屏 + Invalid prop: type check failed for prop "options"?原来是 script setup 的 ref
前端
btcSteven1 小时前
给浏览器装了个「AI 操作员」:纯聊天帮你完成任何任务
前端
高晶1 小时前
一种小功率锂电池组充电器方案
前端·架构
deli0071 小时前
AI 说写完了怎么知道它没骗你?16 项交付证据清单,我用码道做成一键核对页
前端
zReadonly1 小时前
不用反复 nvm use 了:nvm-windows 2.x 按项目自动切换 Node.js
前端·node.js