AI Infrastructure

面向 Agentic RAG 的向量数据库横评:Qdrant vs Milvus vs Chroma vs Weaviate vs Pinecone vs pgvector

核心结论:在 2026 年的生产级 Agentic RAG 场景中,Qdrant 在低于 12 毫秒的 p95 延迟、Payload 元数据过滤和内存(RAM)利用率之间实现了最佳综合平衡。对于已有 Postgres 集群的团队而言,pgvector (HNSW) 凭借零新增基础设施成为性价比最高(成本最低)的向量数据库Pinecone Serverless 以零闲置成本和极简运维领先,而 Milvus 在 5000 万以上超大规模向量扩展中表现最为强劲。

1. 引言:为何 Agentic RAG 亟需全新的向量基础设施

检索增强生成(RAG)已经从简单的原生检索流水线演进为动态、多跳的 Agentic RAG。在传统的文档级 RAG 中,应用程序接收单个用户 Prompt,利用余弦相似度在向量数据库中检索最近邻的 $k=5$ 个结果,然后将原始文本分块直接注入大语言模型(LLM)的上下文窗口中。

而自主 AI Agent 则彻底打破了朴素 RAG(Naive RAG)背后的所有架构假设:

  1. 高频读写突发(High-Frequency Read/Write Bursts):Agent 需要实时读取情境记忆(Episodic Memory)、执行工具、生成子假设并将工作笔记实时写回向量索引。当 Agent 要求在 20 毫秒内实现“读己所写(Read-Your-Own-Writes)”一致性时,传统的静态批量索引存储根本无法胜任。
  2. 严苛的元数据过滤(Extreme Metadata Filtering):自主 Agent 极少执行无约束的全局相似度搜索。相反,其查询严重依赖动态运行时的元数据过滤:tenant_id == "corp_42" AND user_id == "u_88" AND (visibility == "public" OR team_id IN [...]) AND timestamp >= NOW() - 7d。如果数据库先计算向量距离再进行元数据过滤(后置过滤,Post-filtering),查询延迟将呈指数级恶化,召回率也会急剧崩塌。
  3. 稠密-稀疏混合检索与互惠排序融合(Hybrid Sparse-Dense & RRF):生产级 Agent 工作流要求将稠密语义表征(如 text-embedding-3-large、BAAI/bge-large-en-v1.5)与稀疏词法检索(如 BM25 或 SPLADE)相结合,以便可靠地检索出精确的符号名、代码函数以及唯一的事务标识符。
  4. 严苛的延迟预算(Strict Latency Budgets):一个正在执行 ReAct(推理 + 行动)循环或思维树(Tree-of-Thought)探索的 Agent,在单次用户交互中可能发起 4 到 12 次向量检索。如果索引检索的 p95 延迟达到 150 毫秒,那么在 LLM 生成第一个 Token 之前,单单向量检索就会吃掉 1.8 秒面向用户的延迟预算。

本技术评测报告针对 2026 年占据主导地位的六款向量存储引擎展开严格的实证对比:QdrantMilvusChromaDBWeaviatePinecone 以及 pgvector。我们将从检索准确率(NDCG@10、Recall@10)、各分位查询延迟(p50、p95、p99)、持续 QPS 吞吐量、元数据过滤开销以及总体拥有成本(每百万向量 TCO)等多维度进行全面评估。


2. 核心性能评测矩阵(2026 年生产级实测数据)

以下评测数据基于 10,000,000 条向量的标准数据集(1,536 维,标准化 OpenAI text-embedding-3-large 格式),附带 20% Payload 元数据基数。自建引擎均在同等配置的 AWS 实例(c6i.4xlarge,16 vCPU,32 GB RAM,NVMe SSD)上进行压测。Pinecone 则在其部署于 AWS us-east-1 的生产级 Serverless 层上进行评估。

+-------------------------------------------------------------------------------------------------------------------------+
|                                     生产级向量数据库基准测试(1000 万向量,1536 维)                                     |
+-------------------+------------------+------------------+------------------+------------------+------------------+------+
| 引擎与版本         | 架构设计         | p50 延迟 (ms)    | p95 延迟 (ms)    | QPS (单节点)     | Recall@10 (HNSW) | TCO ($/百万/月)|
+-------------------+------------------+------------------+------------------+------------------+------------------+------+
| Qdrant v1.13      | Rust / 原生      | 4.2 ms           | 11.8 ms          | 1,420 QPS        | 98.4%            | $11.50 (自建)  |
| Milvus v2.5       | Go/C++ / 云原生  | 6.1 ms           | 14.5 ms          | 2,100 QPS        | 98.1%            | $16.80 (自建)  |
| Weaviate v1.28    | Go / 混合 HNSW   | 7.8 ms           | 19.4 ms          | 890 QPS          | 97.6%            | $18.20 (自建)  |
| ChromaDB v0.6     | Python/Rust 内核 | 14.2 ms          | 42.6 ms          | 320 QPS          | 95.8%            | $9.80  (自建)  |
| Pinecone Serverless| 专有云架构      | 18.5 ms          | 48.2 ms          | 自动扩缩         | 96.9%            | $8.50  (云托管)|
| pgvector v0.8     | C / Postgres 扩展| 12.4 ms          | 36.7 ms          | 480 QPS          | 96.2%            | $0.00* (现有)  |
+-------------------+------------------+------------------+------------------+------------------+------------------+------+

\pgvector 成本基于将其与现有企业级 PostgreSQL 数据库同机混部,共享已分配内存计算。*

关键特性与过滤性能明细

+-------------------------------------------------------------------------------------------------------------------------+
|                                        AGENTIC RAG 核心特性与过滤性能                                                   |
+-------------------+----------------------+--------------------+--------------------+--------------------+---------------+
| 引擎              | 前置过滤模型         | 稀疏-稠密混合检索  | 动态 CRUD 延迟     | 多租户隔离机制     | 冷启动延迟    |
+-------------------+----------------------+--------------------+--------------------+--------------------+---------------+
| Qdrant            | 单阶段 Payload 过滤  | 原生支持(Sparse API)| < 5 ms (即时可见)  | 命名空间 / 过滤规则| < 100 ms      |
| Milvus            | 分区 / 标量过滤      | 原生多向量支持     | < 15 ms (日志缓冲) | Collection / 分区  | < 500 ms      |
| Weaviate          | 倒排索引图检索       | 原生支持(BM25+稠密)| < 25 ms (WAL 提交) | 原生多租户 API     | < 200 ms      |
| ChromaDB          | SQLite / Rust 索引   | 需外部重排器       | < 18 ms            | 租户 / 数据库      | < 50 ms       |
| Pinecone          | 元数据倒排索引       | 原生稀疏-稠密支持  | 100-400 ms(最终一致)| 命名空间           | 0 ms (Serverl)|
| pgvector          | 迭代式索引扫描       | Postgres 全文检索  | < 8 ms (ACID 事务) | 行级安全策略 (RLS) | 0 ms (原生常驻)
+-------------------+----------------------+--------------------+--------------------+--------------------+---------------+

3. 核心架构深度解析

1. Qdrant:高吞吐 Rust 原生重型武器

Qdrant 是一款采用 Rust 原生编写的开源向量搜索引擎,专为在向量最近邻搜索的同时处理复杂过滤条件而设计。

+-------------------------------------------------------------------------------+
|                             QDRANT 内部架构                                   |
|                                                                               |
|  [传入查询 + 过滤条件]                                                        |
|           │                                                                   |
|           ▼                                                                   |
|  ┌──────────────────┐      ┌─────────────────────────┐                        |
|  │  Payload 索引    ├─────>│      过滤条件评估器     │                        |
|  │  (倒排 / B 树)   │      └────────────┬────────────┘                        |
|  └──────────────────┘                   │ (Payload 位图)                      |
|                                         ▼                                     |
|  ┌──────────────────┐      ┌─────────────────────────┐   [输出]               |
|  │  HNSW 图         ├─────>│     自定义图遍历        ├──> Top-K 结果          |
|  │  (向量嵌入)      │      │ (带过滤的距离计算)      │   (召回率: 98.4%)      |
|  └──────────────────┘      └─────────────────────────┘                        |
+-------------------------------------------------------------------------------+
  • 核心索引机制: Qdrant 采用了定制的分层可导航小世界(HNSW)图实现,并与 Payload 索引(B 树、倒排索引及地理位置索引)深度集成。与采用两阶段过滤(先检索候选向量再执行后置过滤)的引擎不同,Qdrant 采用了单阶段带过滤的向量检索(Single-stage filtered vector search)。在图遍历过程中,Payload 索引会构建内存位图(Bitset),使遍历算法仅在满足 Payload 条件的候选节点之间评估边缘跳转。
  • 量化与内存优化: 支持标量量化(SQ)和乘积量化(PQ)。标量量化可将 32 位浮点数向量(FP32)压缩为 8 位无符号整数(UINT8),在召回率损失低于 1.1% 的前提下降低 75% 的 RAM 占用。此外,它还支持通过内存映射(mmap)进行磁盘存储,同时仅将 HNSW 导航图常驻在内存中。
  • Agentic 适配度: 极其优秀(Exceptional)。 其立即可见的写入特性非常适合实时 Agent 情境记忆。Payload Schema 无需严格的预先定义,允许 Agent 在存储嵌入向量的同时附加任意动态 JSON 上下文。

2. Milvus:分布式大规模云原生集群

Milvus 是由 LF AI & Data 基金会托管的开源项目,专为超过 1 亿至百亿级规模的超大规模分布式向量检索而打造。

+-------------------------------------------------------------------------------+
|                              MILVUS 分布式架构                                |
|                                                                               |
|  [客户端请求] ──> [代理层 (无状态负载均衡器)]                                 |
|                              │                                                |
|            ┌─────────────────┴─────────────────┐                              |
|            ▼                                   ▼                              |
|  [Query Node (内存缓存)]             [Data Node (分段构建器)]                 |
|            │                                   │                              |
|            ▼                                   ▼                              |
|  ┌──────────────────┐                ┌──────────────────┐                     |
|  │  Knowhere 引擎   │                │ 消息代理         │ (Apache Pulsar /    |
|  │  (FAISS, HNSW,   │                │ (日志 Broker)    │  Kafka 事件日志)    |
|  │   SCaNN, GPU)    │                └────────┬─────────┘                     |
|  └──────────────────┘                         │                               |
|            ▲                                  ▼                               |
|            └──────────── [MinIO / S3 对象存储分块层]                          |
+-------------------------------------------------------------------------------+
  • 核心索引机制: Milvus 依赖其 C++ 索引核心 Knowhere,该内核抽象了包括 HNSW、IVF-FLAT、SCaNN 和 DiskANN 在内的底层向量算法。Milvus 采用存储与计算分离架构:Query Node 完全无状态,而持久化分段(Segment)则存储在对象存储(Amazon S3、Google Cloud Storage 或 MinIO)中。预写日志代理(Apache Kafka 或 Apache Pulsar)负责协调流式数据摄取。
  • Agentic 适配度: 企业级 Agent 群(Swarms)场景下评级为“中到高”。 对于在每日数百万次 Agent 会话中运行多租户集群的大型企业,Milvus 能提供无可比拟的集群韧性、分片能力和 GPU 加速支持。然而,对于较小规模的部署(< 500 万向量),其庞大的基础依赖组件(etcd、Pulsar/Kafka、MinIO、QueryNode、DataNode)带来了极高的运维复杂度。

3. ChromaDB:开发者优先的轻量级引擎

ChromaDB 作为早期生成式 AI 生态系统中的默认原型数据库脱颖而出,以其零配置的本地 Python 集成(chromadb.Client())而广受青睐。

  • 核心索引机制: 最初作为封装了 ClickHouse 或原生 hnswlib 的进程内 SQLite 存储而构建,Chroma 在 v0.5+ 版本中将其内核迁移到了分布式 Rust 架构。它具备分布式查询协调器、通过持久化 SQLite/Postgres 层的解耦元数据存储,以及原生集合(Collections)管理。
  • 量化与扩展性: 过去受限于单节点内存上限,最近的版本增加了分布式多节点集群能力。但相比 Qdrant 或 Milvus,它仍缺乏深度乘积量化以及磁盘图压缩等底层高级优化能力。
  • Agentic 适配度: 本地工具与原型设计评级为“高”;生产环境评级为“中等”。 ChromaDB 依然是集成到本地开发环境、终端 Agent(如 OpenCode 或 Claude Code 本地分支)以及自动化测试套件中最快上手的引擎。但在高并发多 Agent 的生产环境中,其 p95 延迟和 QPS 上限相比原生 Rust/Go 引擎仍存在差距。

4. Weaviate:模式驱动的混合检索专家

Weaviate 是一款使用 Go 语言编写的开源云原生向量数据库,其核心特色在于开箱即用地支持 GraphQL/gRPC 接口、严格的数据模式(Data Schemas)以及无缝的稀疏-稠密混合检索。

  • 核心索引机制: Weaviate 运行 HNSW 算法实现,并搭配用于 BM25 关键词匹配的倒排索引。它内置了 Vectorizer 向量化模块(允许在数据库引擎内部直接集成 OpenAI、Cohere、Voyage AI 和 HuggingFace 等模型接口)。
  • 混合 RRF 检索: Weaviate 实现了原生的互惠排序融合(Reciprocal Rank Fusion, RRF)。当 Agent 查询 Weaviate 时,引擎会并行发起 BM25 稀疏检索与 HNSW 稠密检索,并通过可调参数 alpha($\alpha \in [0.0, 1.0]$)动态对两者得分分布进行加权融合。
  • Agentic 适配度: 处理复杂文档场景下评级为“极高”。 Weaviate 的原生多租户 API 支持按需动态创建、隔离和销毁单个租户的图索引。这使得它成为管理独立客户账户的企业级 Agent 系统的理想之选。

5. Pinecone:全托管 Serverless 先驱

Pinecone 开创了向量数据库作为全托管云服务的先河。在 2024 至 2026 年间,Pinecone 通过推出 Pinecone Serverless 完全重构了其基础设施,实现了向量索引与计算资源的彻底解耦。

  • 核心索引机制: Pinecone Serverless 抛弃了预配置专用 Pod 的模式,转向将原始向量与倒排索引直接持久化在对象存储(Amazon S3)上的架构。当查询请求到达时,无状态计算节点动态拉取几何聚类候选簇,并将高频访问的簇缓存在本地 NVMe SSD 中。
  • 计费模式: Pinecone Serverless 对闲置索引收取 0 美元费用。用户严格按存储空间(每月 0.33 美元/GB)以及读写单元付费(WRU / ROU:每 100 万次搜索查询 8.50 美元)。
  • Agentic 适配度: 对追求“零运维(Zero-DevOps)”的团队评级为“高”。 对于在没有专属基础设施工程师的情况下运行 Agent 工作流的中小型工程团队,Pinecone 彻底免去了容量规划、分片管理与集群扩缩容的负担。然而,命中对象存储的冷查询可能会引发高达 120ms~250ms 的 p95 延迟毛刺。

6. pgvector:务实的企业级之选

pgvector 是一款开源 C 语言扩展,可直接为 PostgreSQL 赋予向量数据类型及近似最近邻(ANN)搜索索引能力。

  • 核心索引机制: 同时支持 IVFFlat(带平坦量化的倒排文件)与 HNSW(分层可导航小世界)。随着 pgvector v0.7 与 v0.8 的发布,其 HNSW 索引新增了迭代式索引扫描(Iterative Index Scan)、并行索引构建以及二进制量化(Binary Quantization)等重要功能。
  • ACID 事务与联表查询(Joins): pgvector 的杀手锏在于关系型数据的同机混部(Relational Co-location)。Agent 可以在单个 ACID 事务中将向量相似度结果直接与关系型业务表(如 ordersaudit_logscustomer_permissions)进行 Join 关联,无需跨两个独立的分布式系统同步数据。
  • Agentic 适配度: 已有 Postgres 架构及强合规要求场景下的“首选”。 如果您的应用程序已经在使用 Amazon RDS、Supabase、Neon 或自建 Postgres,pgvector 的运维开销几乎为零。它消除了业务关系数据与外部向量存储之间的数据同步延迟。然而,当向量规模超过 2000 万时,HNSW 索引的构建时间与 RAM 内存消耗将给共享数据库实例带来巨大的资源压力。

4. Pinecone vs. Weaviate vs. ChromaDB:生产级 RAG 对比

软件架构师常面临的一个架构抉择,是在三款最受风投资本青睐的主流向量引擎之间进行取舍:PineconeWeaviateChromaDB

+---------------------------------------------------------------------------------------------------------------+
|                               PINECONE vs WEAVIATE vs CHROMADB: PRODUCTION MATRIX                             |
+------------------------------+---------------------------+---------------------------+------------------------+
| Dimension                    | Pinecone (Serverless)     | Weaviate (v1.28)          | ChromaDB (v0.6)        |
+------------------------------+---------------------------+---------------------------+------------------------+
| Deployment Target            | Cloud Managed Only (AWS/GCP)| Self-Hosted / Managed Cloud| Local Embedded / Server |
| Open Source License          | Proprietary Closed Source | Open Source (BSD-3-Clause)| Open Source (Apache 2.0)|
| Underlying Engine            | S3 Blob + NVMe Worker     | Go Native + HNSW + BM25   | Rust / SQLite Core     |
| Hybrid Search (BM25 + Dense) | Yes (Sparse-Dense Vector) | Native Out-of-the-Box (RRF)| Requires External Code |
| Multi-Tenancy Architecture   | Namespaces within Index   | Dynamic Native Tenant API | Multi-database/Tenant  |
| Filtering Performance        | High (Inverted Index)     | Very High (Integrated)    | Moderate               |
| Cold-Start Latency Impact    | 80ms - 220ms on cold read | 0ms (In-Memory HNSW)      | 0ms (Local In-Memory)  |
| 1M Vector Base Cost / Month  | ~$2.50 Storage + Usage    | ~$65 Instance (c6i.xlarge)| ~$30 Instance or Free  |
| Best Production Fit          | Lean teams, serverless RAG| Enterprise hybrid search  | Fast prototyping, local|
+------------------------------+---------------------------+---------------------------+------------------------+

实践中的架构权衡

  • 选择 Pinecone Serverless 的场景: 你希望实现零运维开销,查询负载具有波动性,且希望完全按实际查询量付费。它是基于 AWS Lambda 或 Cloudflare Workers 运行的无服务器(Serverless)智能体(Agent)架构的行业标杆。
  • 选择 Weaviate 的场景: 你的智能体依赖稠密与稀疏混合检索(例如在理解语义意图的同时,精确匹配特定零件编号或错误代码)。其内置的 BM25 引擎与可自定义的融合参数,让你无需再额外部署 Elasticsearch 或 OpenSearch 集群。
  • 选择 ChromaDB 的场景: 你需要一款用于开发环境、边缘设备或本地桌面端 AI 智能体的可嵌入、零门槛引擎。它在 Python 生态中提供了最平滑顺畅的上手体验。

5. “最便宜的向量数据库”:总拥有成本(TCO)深度剖析

在评估哪款是最便宜的向量数据库时,单纯对比订阅标价往往具有误导性。工程团队必须测算完整的总拥有成本(TCO,Total Cost of Ownership),其中包括计算实例、持久化存储、内存占用、网络入网/出网流量以及工程团队的人力运维工时。

100 万、1000 万与 5000 万向量成本预估(美元/月,1536 维 FP32)

+-------------------------------------------------------------------------------------------------------+
|                                    TOTAL COST OF OWNERSHIP (TCO) COMPARISON                           |
+-------------------+----------------------------+----------------------------+-------------------------+
| Vector Store      | 1,000,000 Vectors (1536-D) | 10,000,000 Vectors (1536-D)| 50,000,000 Vectors (1536-D) |
+-------------------+----------------------------+----------------------------+-------------------------+
| pgvector (Postgres| $0.00* (Shared RDS)        | $145.00/mo (db.r6g.xlarge) | $720.00/mo (db.r6g.4xl) |
| Qdrant (Self-Host)| $18.00/mo (c6i.large + SQ) | $115.00/mo (c6i.4xlarge+SQ)| $460.00/mo (Cluster)    |
| Milvus (Self-Host)| $65.00/mo (Min cluster)    | $168.00/mo (Distributed)   | $520.00/mo (Kubernetes) |
| ChromaDB (Self-H) | $15.00/mo (t4g.large)      | $98.00/mo (c6g.2xlarge)    | Not Recommended (>20M)  |
| Pinecone Serverles| $2.48 storage + $8.50 ops  | $24.80 storage + $85.00 ops| $124.00 st + $425.00 ops|
| Qdrant Cloud (Mng)| $45.00/mo                  | $320.00/mo                 | $1,450.00/mo            |
| Zilliz Cloud (Mng)| $65.00/mo                  | $380.00/mo                 | $1,680.00/mo            |
+-------------------+----------------------------+----------------------------+-------------------------+

测算基准假设:100 万向量对应 50 万次/月检索查询;1000 万向量对应 500 万次/月检索查询;5000 万向量对应 2500 万次/月检索查询。

成本维度的最终结论:

  1. 现有技术栈中的绝对最低成本:pgvector。如果你已经在运行 AWS RDS、Neon 或 Supabase 的 PostgreSQL 实例,且内存利用率低于 60%,那么为其添加 HNSW 索引每月产生的基础设施额外成本为 0.00 美元
  2. 成本最低的专用自建(Self-Hosted)引擎:采用标量量化(SQ)的 Qdrant。通过将向量从 FP32 压缩至 UINT8,并将 Payload 载荷数据内存映射(mmap)到磁盘,Qdrant 仅需一台月成本 115 美元的单计算节点即可轻松支撑 1000 万条 1536 维向量,同时保持低于 15 毫秒的 P95 延迟。
  3. 针对低频/突发流量最具性价比的云原生 Serverless 引擎:Pinecone Serverless。如果你的智能体仅周期性运行或存在较长时间的闲置期(如夜间或周末),Pinecone Serverless 每天仅产生几美分的费用(存储费用仅为 0.33 美元/GB-月),完全避免了运行闲置自建计算集群每月 50 至 300 美元的保底成本。

6. 生产级实战部署

为了展示真实的生产落地场景,以下提供了两大主流生产方案的开箱即用代码实现模式:Qdrant(高性能专用引擎)与 pgvector(关系型混合引擎)。

1. 支持 Payload 索引的高性能 Qdrant 配置

使用 Docker 部署带有持久化存储的 Qdrant:

# Launch optimized Qdrant instance with vector storage path
docker run -d -p 6333:6333 -p 6334:6334 \
  -v $(pwd)/qdrant_storage:/qdrant/storage:z \
  --name qdrant_rag \
  qdrant/qdrant:v1.13.0

集成了动态 Payload 索引、标量量化以及带过滤条件的智能体记忆检索的 Python 实现:

from qdrant_client import QdrantClient
from qdrant_client.http import models

# Initialize client
client = QdrantClient(url="http://localhost:6333")

COLLECTION_NAME = "agentic_memory"

# 1. Create collection optimized with Scalar Quantization & HNSW parameters
if not client.collection_exists(COLLECTION_NAME):
    client.create_collection(
        collection_name=COLLECTION_NAME,
        vectors_config=models.VectorParams(
            size=1536,
            distance=models.Distance.COSINE,
            on_disk=False  # Keep primary vectors in RAM for fast search
        ),
        hnsw_config=models.HnswConfigDiff(
            m=16,
            ef_construct=128,
            full_scan_threshold=10000
        ),
        quantization_config=models.ScalarQuantization(
            scalar=models.ScalarQuantizationConfig(
                type=models.ScalarType.INT8,
                quantile=0.99,
                always_ram=True
            )
        )
    )

# 2. Create payload index for high-speed agent pre-filtering
client.create_payload_index(
    collection_name=COLLECTION_NAME,
    field_name="tenant_id",
    field_schema=models.PayloadSchemaType.KEYWORD
)
client.create_payload_index(
    collection_name=COLLECTION_NAME,
    field_name="timestamp",
    field_schema=models.PayloadSchemaType.INTEGER
)

# 3. Insert Agent Memory Embedding with Metadata Payload
client.upsert(
    collection_name=COLLECTION_NAME,
    points=[
        models.PointStruct(
            id="c4a7e912-3b21-4b11-9a72-8f128e4e9a11",
            vector=[0.012, -0.045, 0.089] + [0.0] * 1533,  # 1536-D mock vector
            payload={
                "tenant_id": "enterprise_corp",
                "agent_id": "code_refactor_agent_07",
                "timestamp": 1756819200,
                "document_chunk": "Refactored payment gateway handler to support idempotency keys.",
                "visibility": "team_internal"
            }
        )
    ]
)

# 4. Perform Single-Stage Filtered Vector Query
query_vector = [0.011, -0.042, 0.085] + [0.0] * 1533
search_results = client.search(
    collection_name=COLLECTION_NAME,
    query_vector=query_vector,
    query_filter=models.Filter(
        must=[
            models.FieldCondition(
                key="tenant_id",
                match=models.MatchValue(value="enterprise_corp")
            ),
            models.FieldCondition(
                key="timestamp",
                range=models.Range(gte=1756700000)
            )
        ]
    ),
    limit=5,
    with_payload=True
)

for hit in search_results:
    print(f"Score: {hit.score:.4f} | Content: {hit.payload['document_chunk']}")

2. 企业级 pgvector(PostgreSQL 17 / pgvector 0.8)配置

在 PostgreSQL 中初始化支持迭代扫描(Iterative Scan)特性的 HNSW 索引:

-- 1. Enable the pgvector extension
CREATE EXTENSION IF NOT EXISTS vector;

-- 2. Create the agent episodic memory table
CREATE TABLE agent_memories (
    id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
    tenant_id VARCHAR(64) NOT NULL,
    agent_id VARCHAR(64) NOT NULL,
    created_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP,
    content TEXT NOT NULL,
    metadata JSONB,
    embedding VECTOR(1536) NOT NULL
);

-- 3. Create B-Tree index for scalar filtering
CREATE INDEX idx_agent_memories_tenant ON agent_memories(tenant_id);

-- 4. Create optimized HNSW vector index using cosine distance
CREATE INDEX idx_agent_memories_embedding ON agent_memories 
USING hnsw (embedding vector_cosine_ops)
WITH (m = 16, ef_construction = 128);

-- 5. Perform Hybrid Filtered Vector Query using Iterative HNSW Scan
-- (pgvector 0.8+ optimizes index scans when combined with strict WHERE filters)
SET hnsw.ef_search = 64;

SELECT 
    id,
    tenant_id,
    content,
    1 - (embedding <=> '[0.012, -0.045, 0.089, ...]'::vector) AS cosine_similarity
FROM agent_memories
WHERE tenant_id = 'enterprise_corp'
  AND created_at >= NOW() - INTERVAL '7 days'
ORDER BY embedding <=> '[0.012, -0.045, 0.089, ...]'::vector
LIMIT 5;

7. 架构选型策略指南:你该选用哪款引擎?

在 2026 年选择最适合的向量数据库,取决于你的运维约束、数据规模及整体软件架构:

                                 [Select Vector Engine]
                                            │
               ┌────────────────────────────┴────────────────────────────┐
               ▼                                                         ▼
     [Existing PostgreSQL Stack?]                                [Dedicated Vector Store?]
               │                                                         │
       ┌───────┴───────┐                                         ┌───────┴───────┐
      YES              NO                                       YES              NO
       │               │                                         │               │
 [Vectors < 20M?]  [Need Rust Speed?]                     [Vectors > 50M?]  [Managed Serverless?]
       │               │                                         │               │
  ┌────┴────┐     ┌────┴────┐                               ┌────┴────┐     ┌────┴────┐
 YES        NO   YES        NO                             YES        NO   YES        NO
  │         │     │         │                               │         │     │         │
pgvector  Qdrant Qdrant  Weaviate                        Milvus    Qdrant Pinecone  ChromaDB
(Fastest  (Scale (Best   (Best Hybrid                    (Scale    (Best  (Zero-Dev (Local Dev
 Deploy)   RAM)   P95)    RRF + Graph)                    Cluster) TCO)    Ops)      & Edge)

各领域最佳选型总结:

  • 生产级智能体 RAG 综合最佳:Qdrant。原生 Rust 带来的极高吞吐性能,重度 Payload 过滤下仍低于 12 毫秒的 P95 延迟,以及依托标量量化实现的极致内存利用率。
  • 现有系统中最具经济效益的向量数据库:pgvector。对于已在使用 PostgreSQL 的系统而言具备无与伦比的成本优势。支持直接进行 SQL 关系联结,且无需搭建二次数据同步管道。
  • 最佳 Serverless / 零运维方案:Pinecone Serverless。真正的按量计费模式、零闲置成本,且无需承担基础设施运维开销即可获得近乎无限的弹性伸缩能力。
  • 超大规模数据集(> 5000 万向量)首选:Milvus。基于 Kubernetes 的云原生分布式架构,实现计算与存储完全分离,是企业级大规模集群部署的理想之选。
  • 稀疏-稠密混合检索最佳:Weaviate。原生支持倒数排名融合(RRF,Reciprocal Rank Fusion),可在单次查询中完美结合 BM25 关键词匹配与稠密向量语义检索。
  • 快速原型验证与本地智能体首选:ChromaDB。即装即用、资源占用极低,能够无缝融入开发者的本地测试与验证环境。
← 返回所有文章
0 / 4