为什么大厂要用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 知识库的必备组件。

相关推荐
葡萄城技术团队14 分钟前
1000 人协同压测的环境瓶颈排查:CPU 争用与 Wi\-Fi
前端
excel1 小时前
Marked 与 Markdown 有什么区别?该怎么选?
前端
Da Da 泓2 小时前
五子棋 Web 端测试用例报告
前端·网络·websocket·网络协议·测试用例·项目
zxcvb1533 小时前
远程查看本地文档:一条轻量 Web 文件服务的工程化链路
前端·远程查看文档
niucloud-admin3 小时前
NIUCLOUD PHP SAAS上门家政使用文档:城市管理
java·前端·php
北岛贰3 小时前
啵啵音乐迎来全新升级!
前端
hkNaruto5 小时前
【AI】基于大模型的AI游戏地图生成、控制方案:AI Native Game Harness 迁移操作手册
前端·人工智能·游戏
IT_陈寒5 小时前
Java序列化踩坑记:对象循环引用让我加班两小时
前端·人工智能·后端
Acro6 小时前
快给macOS 上的Grok Bot换一套皮肤
前端
flash俊杰6 小时前
双引擎 OCR 编排:逐页判定、视觉优先、partial 语义与三层超时
前端