先不要從工具開始,而是從查詢問題開始
很多團隊一開始會問:pgvector 好,還是 Qdrant 好?工程上更好的問法是:我們要解決的是什麼查詢問題。向量資料庫的任務通常不是單純把 embedding 存起來,而是支援一個可維運的檢索流程:資料如何切 chunk、metadata 如何過濾、權限如何套用、結果如何重排、版本如何回溯,以及當使用者覺得答案不準時,工程師如何追查原因。
如果你的資料主要來自既有業務系統,例如 ERP、CRM、客服紀錄、產品資料庫,並且已經在 PostgreSQL 裡管理權限、交易與報表,pgvector 往往是很自然的起點。它讓向量欄位、關聯資料、SQL filter、交易一致性放在同一個資料庫中,開發與維運心智負擔較低。相對地,如果你的檢索服務本身會快速成長、需要大量 collection、複雜 payload filter、服務化部署、獨立擴充查詢節點,Qdrant 這類專用向量資料庫會比較有空間。
關鍵不是哪一套比較高級,而是哪一套更符合資料生命週期。RAG 專案常見失敗點不是演算法,而是文件更新後索引沒有同步、同一份資料有多個版本、權限 filter 被繞過、測試環境與正式環境 embedding 不一致。選型時要把這些瑣碎問題放進架構評估,而不是只看 benchmark 或範例程式。
pgvector 適合什麼情境
pgvector 的最大優勢是簡化系統邊界。 對很多企業內部 AI 助理而言,資料量未必一開始就大到需要獨立向量搜尋叢集,但資料關聯、權限與稽核要求通常很早就會出現。把文件表、使用者權限、部門、資料來源、embedding 與索引狀態放在 PostgreSQL 中,可以讓工程團隊用熟悉的 SQL、migration、backup、monitoring 與 transaction 流程管理整體資料。
pgvector 特別適合幾種狀況:系統已經大量使用 PostgreSQL;查詢需要與結構化條件一起做,例如客戶、產品線、日期、權限群組;資料更新需要交易一致性;團隊希望先把 RAG 功能穩定上線,而不是一開始就導入新的資料基礎設施。它也適合早期產品驗證,因為少一個外部服務,就少一層部署、認證、備份與故障排除。
但 pgvector 不是萬能。當向量資料快速增長、查詢併發很高、需要更細緻的向量索引管理、需要跨節點擴充,或希望把向量搜尋作為獨立平台服務給多個產品使用時,只靠單一 PostgreSQL 可能會讓資料庫承擔太多角色。此時不是 pgvector 不好,而是系統責任需要拆分。
Qdrant 與專用向量資料庫的價值
Qdrant 的價值在於把向量搜尋當成一個專門服務來管理。 它通常更適合向量檢索是產品核心能力的場景,例如知識庫搜尋、多租戶 AI 助理、文件平台、推薦與語意搜尋服務。它的 payload filter、collection 管理、向量索引能力與 API 形態,會讓應用程式更容易把檢索層獨立出來。
這種分離帶來好處,也帶來成本。好處是可以獨立調整向量搜尋的資源、部署策略與觀測方式,不必和交易資料庫搶 CPU、記憶體與 I/O。壞處是你必須處理資料同步、刪除一致性、權限 metadata 複製、備份策略,以及 PostgreSQL 與向量庫之間的狀態差異。很多 production 問題都會出現在這裡:主資料已刪除但向量仍可被搜到、metadata 更新延遲、重建索引時新舊結果混雜。
除了 Qdrant,也可能評估 Milvus、Weaviate、Elasticsearch/OpenSearch 的向量能力、Pinecone 或雲端資料庫內建向量搜尋。選擇時不要只看「支援向量」四個字,而要看它對你的資料模型是否自然。若你本來就有成熟的搜尋系統,需要 BM25、同義詞、facet、權重與向量混合搜尋,搜尋引擎型方案可能更合適。若你要的是全託管、快速上線、少維運,雲端服務可能值得成本。若資料主體仍是關聯資料,pgvector 仍然常常是務實選擇。
實務決策清單
我們通常會把選型拆成幾個工程問題,而不是只列產品功能。這些問題能幫團隊避免過度設計,也能提早發現未來會痛的地方。
- 資料在哪裡產生:如果主資料在 PostgreSQL,pgvector 可以減少同步複雜度;如果資料來源很多且檢索層要服務多個系統,專用向量庫較容易治理。
- 查詢是否重度依賴 metadata:若每次查詢都要根據租戶、角色、產品、時間與狀態過濾,要確認 filter 效能與索引策略,而不是只測純向量相似度。
- 更新頻率多高:內部文件偶爾更新,和客服對話、IoT 事件、訂單資料持續進來,是完全不同的同步模型。
- 是否需要混合搜尋:許多企業資料只靠向量不夠,料號、人名、法規條文、錯誤碼常常需要 keyword search 搭配 reranking。
- 權限能否被安全套用:RAG 檢索前就應過濾不可見資料,不能只依賴模型回答時自行判斷。
- 維運能力是否足夠:多一個向量服務,就多一套監控、備份、升級、容量規劃與 incident response。
一個保守但常見的路徑是:先用 PostgreSQL 加 pgvector 做出可觀測、可追查、權限正確的第一版;當資料量、查詢併發或產品邊界明確超過 PostgreSQL 合理負載,再把檢索層抽成 Qdrant 或其他專用服務。這樣做的好處是,你帶著真實查詢紀錄與失敗案例做遷移,而不是在還沒有 production 行為前就猜測未來規模。
不要忽略檢索品質本身
向量資料庫只處理相似度搜尋的一部分,不能替你解決所有 RAG 品質問題。chunk 太大會讓結果含混,chunk 太小會失去上下文;metadata 設計不好會讓 filter 失效;embedding model 換版沒有重建索引會讓結果不一致;缺少 reranking 與引用檢查時,模型可能拿到看似相關但其實不夠精準的片段。
實務上,選型應該搭配一套檢索評估流程。至少要保留查詢、命中的 chunk、分數、filter 條件、rerank 結果與最後引用來源。當業務使用者說「答案不對」時,工程師要能判斷問題來自資料缺失、切分策略、embedding、向量庫查詢、reranker,還是 prompt。沒有這些紀錄,換任何向量資料庫都只是重新開始猜。
如果要一句話總結:資料還在關聯資料庫、團隊要快而穩地落地企業 AI 助理,先看 pgvector;向量搜尋已經是獨立平台能力、需要專門擴充與治理,再認真評估 Qdrant 或其他專用方案。真正好的選擇,不是功能最多,而是讓資料、權限、維運與檢索品質都能被工程團隊掌握。
