AI Infrastructure

Векторные БД для Agentic RAG: сравнение 6 ведущих движков

Краткий ответ: В продакшене агентного RAG (Agentic RAG) в 2026 году Qdrant обеспечивает наилучший баланс: задержка p95 ниже 12 мс, эффективная payload-фильтрация и экономное потребление RAM. Для команд с уже развернутыми кластерами Postgres pgvector (HNSW) — это самая дешевая векторная база данных, не требующая дополнительной инфраструктуры. Pinecone Serverless лидирует по простоте эксплуатации с нулевыми затратами на простой, а Milvus лучше всего масштабируется на объемах свыше 50M+ векторов.

1. Введение: почему Agentic RAG требует новой векторной инфраструктуры

Технология генерации с дополнением выборкой (Retrieval-Augmented Generation) эволюционировала от простых пайплайнов «наивного» поиска к динамическому многошаговому агентному RAG (Agentic RAG). В стандартном классическом RAG приложение берет единственный промпт пользователя, запрашивает векторное хранилище на предмет $k=5$ ближайших соседей по косинусному сходству и передает сырые текстовые чанки в контекстное окно LLM.

Автономные AI-агенты разрушают практически все архитектурные допущения, заложенные в наивный RAG:

  1. Высокочастотные всплески чтения и записи (Read/Write Bursts): Агенты считывают эпизодическую память, вызывают внешние инструменты, формулируют промежуточные гипотезы и в реальном времени записывают рабочие заметки обратно в векторный индекс. Статическое хранилище с пакетной индексацией (batch-indexed) оказывается непригодным, когда агенту требуется согласованность «чтение своих записей» (read-your-own-writes) с задержкой менее 20 миллисекунд.
  2. Глубокая фильтрация по метаданным (Extreme Metadata Filtering): Автономные агенты редко выполняют неограниченный глобальный поиск по сходству. Напротив, запросы сопровождаются строгой фильтрацией по динамическим метаданным среды исполнения: tenant_id == "corp_42" AND user_id == "u_88" AND (visibility == "public" OR team_id IN [...]) AND timestamp >= NOW() - 7d. Если база данных сначала вычисляет векторное расстояние, а затем применяет фильтр метаданных (постфильтрация), задержка запросов растет экспоненциально, а полнота выборки (recall) катастрофически падает.
  3. Гибридный разреженно-плотный поиск (Sparse-Dense) и Reciprocal Rank Fusion (RRF): Продакшен-пайплайны агентов требуют объединения плотных семантических представлений (например, text-embedding-3-large, BAAI/bge-large-en-v1.5) с разреженным лексическим поиском (BM25 или SPLADE). Это необходимо для надежного извлечения точных имен идентификаторов, функций в коде и уникальных транзакционных ID.
  4. Жесткие лимиты задержек (Latency Budgets): Агент, выполняющий цикл ReAct (Reason + Act) или исследование дерева рассуждений (Tree-of-Thought), делает от 4 до 12 обращений к векторному индексу в рамках одного взаимодействия с пользователем. Если задержка поиска p95 составляет 150 мс, то только векторная выборка отнимет до 1,8 секунды из общего бюджета ожидания пользователя еще до того, как LLM сгенерирует хотя бы один выходной токен.

В этом техническом бенчмарке представлено строгое эмпирическое сравнение шести ведущих векторных СУБД 2026 года: Qdrant, Milvus, ChromaDB, Weaviate, Pinecone и pgvector. Мы оцениваем каждую систему по качеству поиска (NDCG@10, Recall@10), перцентилям задержки (p50, p95, p99), устойчивой пропускной способности (QPS), накладным расходам на фильтрацию метаданных и совокупной стоимости владения (TCO в расчете на 1 млн векторов).


2. Сводная матрица бенчмарка (производственные данные 2026)

Данные бенчмарка получены на стандартизированном датасете из 10 000 000 векторов (размерность 1536, нормализованный формат OpenAI text-embedding-3-large) с 20%-й кардинальностью метаданных (payload). Self-hosted движки тестировались на идентичных инстансах AWS (c6i.4xlarge: 16 vCPU, 32 ГБ RAM, NVMe SSD). Pinecone оценивался в продакшен-тарифе Serverless в регионе AWS us-east-1.

+-------------------------------------------------------------------------------------------------------------------------+
|                                     БЕНЧМАРК ВЕКТОРНЫХ БАЗ ДАННЫХ В ПРОДАКШЕНЕ (10M ВЕКТОРОВ, 1536-D)                  |
+-------------------+------------------+------------------+------------------+------------------+------------------+------+
| Движок и версия   | Архитектура      | Задержка p50 (мс)| Задержка p95 (мс)| QPS (Один узел)  | Recall@10 (HNSW) | TCO ($/1M в/мес)|
+-------------------+------------------+------------------+------------------+------------------+------------------+------+
| Qdrant v1.13      | Rust / Native    | 4.2 мс           | 11.8 мс          | 1 420 QPS        | 98.4%            | $11.50 (Self)|
| Milvus v2.5       | Go/C++ / Cloud   | 6.1 мс           | 14.5 мс          | 2 100 QPS        | 98.1%            | $16.80 (Self)|
| Weaviate v1.28    | Go / Hybrid HNSW | 7.8 мс           | 19.4 мс          | 890 QPS          | 97.6%            | $18.20 (Self)|
| ChromaDB v0.6     | Python/Rust Core | 14.2 мс          | 42.6 мс          | 320 QPS          | 95.8%            | $9.80  (Self)|
| Pinecone Serverless| Proprietary Cloud| 18.5 мс          | 48.2 мс          | Автомасштаб.     | 96.9%            | $8.50  (Cloud)|
| pgvector v0.8     | C / Postgres Ext | 12.4 мс          | 36.7 мс          | 480 QPS          | 96.2%            | $0.00* (Сущ.)|
+-------------------+------------------+------------------+------------------+------------------+------------------+------+

\Стоимость pgvector рассчитана с учетом размещения в существующей корпоративной базе данных PostgreSQL с разделением выделенной памяти.*

Детальная разбивка характеристик

+-------------------------------------------------------------------------------------------------------------------------+
|                            ВОЗМОЖНОСТИ ДЛЯ AGENTIC RAG И ПРОИЗВОДИТЕЛЬНОСТЬ ФИЛЬТРАЦИИ                                 |
+-------------------+----------------------+--------------------+--------------------+--------------------+---------------+
| Движок            | Модель префильтрации | Sparse-Dense гибрид| Динамический CRUD  | Изоляция тенантов  | Холодный старт|
+-------------------+----------------------+--------------------+--------------------+--------------------+---------------+
| Qdrant            | Single-Stage Payload | Нативный (Sparse API)| < 5 мс (Мгновенно) | Namespaces / Filter| < 100 мс      |
| Milvus            | Partition / Scalar   | Нативный Multi-Vector| < 15 мс (Log Buffer| Collections/Parts  | < 500 мс      |
| Weaviate          | Inverted Index Graph | Нативный(BM25+Dense)| < 25 мс (WAL-коммит| Multi-Tenancy API  | < 200 мс      |
| ChromaDB          | SQLite / Rust Index  | Внешний реранкер   | < 18 мс            | Tenants / Databases| < 50 мс       |
| Pinecone          | Metadata Inverted Idx| Нативный Sparse-Dense| 100–400 мс (Event) | Namespaces         | 0 мс (Serverl)|
| pgvector          | Iterative Index Scan | Postgres Full Text | < 8 мс (ACID-транз)| Row-Level Security | 0 мс (Нативно)|
+-------------------+----------------------+--------------------+--------------------+--------------------+---------------+

3. Подробный архитектурный анализ систем

1. Qdrant: высокопроизводительный тяжеловес на Rust

Qdrant — это векторный поисковый движок с открытым исходным кодом, написанный на чистом Rust и созданный специально для работы со сложными условиями фильтрации параллельно с поиском ближайших соседей среди векторов.

+-------------------------------------------------------------------------------+
|                         ВНУТРЕННЯЯ АРХИТЕКТУРА QDRANT                         |
|                                                                               |
|  [Входящий запрос + фильтр]                                                   |
|           │                                                                   |
|           ▼                                                                   |
|  ┌──────────────────┐      ┌─────────────────────────┐                        |
|  │  Payload-индекс  ├─────>│ Filter Cond. Evaluator  │                        |
|  │ (Inverted/B-tree)│      └────────────┬────────────┘                        |
|  └──────────────────┘                   │ (Payload Bitset)                    |
|                                         ▼                                     |
|  ┌──────────────────┐      ┌─────────────────────────┐   [Результат]          |
|  │  Граф HNSW       ├─────>│  Кастомный обход графа  ├──> Top-K результатов   |
|  │  (Векторные эмб.)│      │  (Filtered Distance)    │   (Recall: 98.4%)      |
|  └──────────────────┘      └─────────────────────────┘                        |
+-------------------------------------------------------------------------------+
  • Основной механизм индексации: Qdrant использует собственную реализацию графа HNSW (Hierarchical Navigable Small World) в сочетании с индексами полезной нагрузки (payload indexes: B-Tree, Inverted и Geo). В отличие от движков, применяющих двухэтапную фильтрацию (извлечение кандидатов с последующей постфильтрацией), Qdrant выполняет одноэтапный векторный поиск с фильтрацией (single-stage filtered vector search). Во время обхода графа индекс полезной нагрузки строит битовую маску (bitset) в оперативной памяти, что позволяет алгоритму обхода переходить по ребрам исключительно между теми узлами-кандидатами, которые удовлетворяют условиям фильтра.
  • Квантование и оптимизация памяти: Поддерживаются скалярное квантование (Scalar Quantization, SQ) и продуктовое квантование (Product Quantization, PQ). Скалярное квантование сжимает 32-битные векторы с плавающей запятой (FP32) до 8-битных целых чисел без знака (UINT8), сокращая потребление RAM на 75% при потере менее 1,1% recall. Также поддерживается хранение векторов на диске (mmap) с сохранением навигационного графа HNSW в оперативной памяти.
  • Применимость для Agentic RAG: Исключительная. Мгновенная видимость записей делает его идеальным решением для эпизодической памяти агентов в реальном времени. Схема полезной нагрузки не требует жесткого предварительного описания, позволяя агентам сохранять произвольный JSON-контекст вместе с эмбеддингами.

2. Milvus: распределенный крупномасштабный кластер Cloud-Native

Milvus — проект с открытым исходным кодом под эгидой LF AI & Data Foundation, созданный для гипермасштабируемого распределенного векторного поиска в масштабах от 100 млн до десятков миллиардов векторов.

+-------------------------------------------------------------------------------+
|                       РАСПРЕДЕЛЕННАЯ АРХИТЕКТУРА MILVUS                       |
|                                                                               |
|  [Запрос клиента] ──> [Прокси-слой (Stateless Load Balancer)]                 |
|                              │                                                |
|            ┌─────────────────┴─────────────────┐                              |
|            ▼                                   ▼                              |
|  [Query Node (Memory Cache)]         [Data Node (Segment Builder)]            |
|            │                                   │                              |
|            ▼                                   ▼                              |
|  ┌──────────────────┐                ┌──────────────────┐                     |
|  │  Knowhere Engine │                │ Message Broker   │ (Apache Pulsar /    |
|  │  (FAISS, HNSW,   │                │ (Log Broker)     │  Kafka Event Log)   |
|  │   SCaNN, GPU)    │                └────────┬─────────┘                     |
|  └──────────────────┘                         │                               |
|            ▲                                  ▼                               |
|            └──────────── [MinIO / S3 Object Storage Chunk Layer]              |
+-------------------------------------------------------------------------------+
  • Основной механизм индексации: В основе Milvus лежит C++ ядро индексации Knowhere, абстрагирующее низкоуровневые векторные алгоритмы, включая HNSW, IVF-FLAT, SCaNN и DiskANN. В Milvus вычисления полностью отделены от хранения: узлы запросов (Query Nodes) работают в режиме stateless, а персистентные сегменты хранятся в объектном хранилище (Amazon S3, Google Cloud Storage или MinIO). Брокер журнала упреждающей записи (Write-Ahead Log на базе Apache Kafka или Apache Pulsar) координирует потоковый инджест данных.
  • Применимость для Agentic RAG: От умеренной до высокой для корпоративных роев (Swarms). Для крупных организаций, разворачивающих мультиагентные рои на миллионы сессий в день, Milvus обеспечивает непревзойденную отказоустойчивость кластера, шардирование и GPU-ускорение. Однако для небольших инсталляций (< 5 млн векторов) минимальный состав компонентов (etcd, Pulsar/Kafka, MinIO, QueryNodes, DataNodes) создает неоправданно высокую сложность эксплуатации.

3. ChromaDB: легковесный движок с фокусом на Developer Experience

ChromaDB стала де-факто стандартной базой данных для прототипирования на заре экосистемы генеративного ИИ, завоевав популярность благодаря локальной интеграции в Python без конфигурации (chromadb.Client()).

  • Основной механизм индексации: Изначально созданная как in-process хранилище на SQLite с оберткой над ClickHouse или нативным hnswlib, Chroma начиная с версии v0.5+ перевела свое ядро на распределенную архитектуру на Rust. Она включает распределенный координатор запросов, раздельное хранение метаданных через персистентные слои SQLite/PostgreSQL и нативные коллекции.
  • Квантование и масштабируемость: Исторически ChromaDB была ограничена объемом оперативной памяти одного узла, но в последних релизах появилась поддержка распределенной многоузловой кластеризации. Тем не менее движку не хватает развитых механизмов продуктового квантования (PQ) и сжатия графов на диске, доступных в Qdrant или Milvus.
  • Применимость для Agentic RAG: Высокая для локальной разработки и прототипирования; умеренная для продакшена. ChromaDB остается абсолютным лидером по скорости интеграции в локальные среды разработки, терминальные агенты (такие как локальные форки OpenCode или Claude Code) и наборы автотестов. При этом в высоконагруженных многоагентных продакшен-контурах задержка p95 и потолок QPS уступают нативным движкам на Rust/Go.

4. Weaviate: специалист по гибридному поиску со строгими схемами

Weaviate — это cloud-native векторная база данных с открытым исходным кодом, написанная на Go. Ее ключевые особенности: интерфейсы GraphQL/gRPC, строгие схемы данных и бесшовная интеграция гибридного разреженно-плотного поиска «из коробки».

  • Основной механизм индексации: Weaviate использует реализацию HNSW в связке с инвертированным индексом для полнотекстового поиска по ключевым словам через BM25. Движок оснащен встроенными модулями векторизации (vectorizers), позволяющими обращаться к эндпоинтам OpenAI, Cohere, Voyage AI и HuggingFace напрямую из базы данных.
  • Гибридный поиск с RRF: Weaviate реализует нативный алгоритм Reciprocal Rank Fusion (RRF). Когда агент выполняет запрос к Weaviate, движок параллельно запускает разреженный поиск по BM25 и плотный поиск по HNSW, динамически взвешивая распределения оценок с помощью настраиваемого параметра alpha ($\alpha \in [0.0, 1.0]$).
  • Применимость для Agentic RAG: Очень высокая для сложных документов. Нативное API мультитенантности в Weaviate позволяет динамически создавать, изолировать и удалять графы отдельных тенантов по требованию. Это делает его отличным выбором для корпоративных агентов, работающих с изолированными учетными записями клиентов.

5. Pinecone: пионер полностью управляемых Serverless-решений

Pinecone популяризировал векторные БД как управляемый облачный сервис (DBaaS). В период с 2024 по 2026 год компания полностью переработала архитектуру своей инфраструктуры, выпустив Pinecone Serverless, где построение векторных индексов отделено от вычислительных ресурсов.

  • Основной механизм индексации: В Pinecone Serverless вместо выделения постоянных подов (pods) сырые векторы и инвертированные индексы хранятся напрямую в блочном объектном хранилище (Amazon S3). При поступлении запросов stateless-воркеры динамически подтягивают кандидатов из геометрических кластеров, кэшируя часто запрашиваемые кластеры на локальных NVMe SSD.
  • Модель ценообразования: В Pinecone Serverless индексы во время простоя стоят $0. Оплата взимается строго за объем хранения ($0.33/ГБ в месяц) и единицы чтения/записи (WRU / ROU: $8.50 за 1 миллион поисковых запросов).
  • Применимость для Agentic RAG: Высокая для команд с фокусом на Zero-DevOps. Небольшим и средним инженерным командам, создающим агентные системы без штатных инженеров инфраструктуры, Pinecone позволяет забыть о планировании емкости, шардировании и масштабировании кластеров. Однако «холодные» запросы, обращающиеся к объектному хранилищу, могут вызывать скачки задержки p95 до 120–250 мс.

6. pgvector: прагматичный выбор для Enterprise

pgvector — это C-расширение с открытым исходным кодом, добавляющее векторные типы данных и индексы приближенного поиска ближайших соседей (ANN) непосредственно в PostgreSQL.

  • Основной механизм индексации: Поддерживает как IVFFlat (инвертированный файл с плоским квантованием), так и HNSW (Hierarchical Navigable Small World). С выходом pgvector v0.7 и v0.8 в индексы HNSW были добавлены итеративное сканирование индекса (iterative index scans), параллельное построение индексов и бинарное квантование.
  • ACID-транзакции и джойны: Главное преимущество pgvector — колокация с реляционными данными. Агент может объединять (JOIN) результаты векторного поиска напрямую с реляционными бизнес-таблицами (orders, audit_logs, customer_permissions) в рамках единой ACID-транзакции без необходимости синхронизировать данные между двумя независимыми распределенными системами.
  • Применимость для Agentic RAG: Лучший выбор для существующей инфраструктуры Postgres и жестких требований комплаенса. Если ваше приложение уже использует Amazon RDS, Supabase, Neon или собственный инстанс Postgres, pgvector практически не создает дополнительных накладных расходов на сопровождение. Он полностью исключает задержку синхронизации данных между реляционными записями и внешним векторным хранилищем. Однако при масштабе более 20 млн векторов время построения HNSW-индексов и требования к RAM создают серьезную нагрузку на общие инстансы СУБД.

4. Pinecone vs. Weaviate vs. ChromaDB: сравнение для production-контуров RAG

Типичная архитектурная дилемма, с которой сталкиваются архитекторы программного обеспечения, — это выбор между тремя наиболее популярными венчурными движками: Pinecone, Weaviate и ChromaDB.

+---------------------------------------------------------------------------------------------------------------+
|                               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, если: вам требуется нулевое эксплуатационное обслуживание, характер нагрузки нерегулярен (всплески и простои), и вы хотите платить строго за фактически выполненные запросы. Это золотой стандарт для serverless-архитектур агентов, работающих на базе AWS Lambda или Cloudflare Workers.
  • Выбирайте Weaviate, если: ваш агент опирается на гибридный поиск (dense + sparse) — например, для сопоставления точных артикулов, номеров деталей или кодов ошибок наряду с семантическим контекстом. Встроенный движок BM25 и гибко настраиваемые параметры слияния (fusion) устраняют необходимость в развертывании отдельного кластера Elasticsearch или OpenSearch.
  • Выбирайте ChromaDB, если: вам нужен встраиваемый (embeddable), максимально простой в развертывании движок для разработки, edge-устройств или локальных десктопных ИИ-агентов. Он обеспечивает самый бесшовный порог входа в экосистеме Python.

5. «Самая дешевая векторная база данных»: анализ совокупной стоимости владения (TCO)

При оценке самой дешевой векторной базы данных ориентироваться исключительно на базовые тарифы подписки ошибочно. Инженерным командам необходимо рассчитывать полную совокупную стоимость владения (TCO), которая включает вычислительные инстансы, постоянное хранилище (persistent storage), потребление оперативной памяти (RAM footprint), входящий/исходящий сетевой трафик и трудозатраты инженеров на обслуживание.

Прогноз затрат для 1M, 10M и 50M векторов ($/месяц, 1536-D 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            |
+-------------------+----------------------------+----------------------------+-------------------------+

Расчет предполагает 500 000 поисковых запросов в месяц для 1M векторов, 5 млн запросов в месяц для 10M векторов и 25 млн запросов в месяц для 50M векторов.

Вердикт по затратам:

  1. Абсолютный лидер по экономичности для существующего стека: pgvector. Если вы уже эксплуатируете инстанс PostgreSQL в AWS RDS, Neon или Supabase с утилизацией памяти менее 60%, добавление индекса HNSW обойдется в $0,00 дополнительных расходов на инфраструктуру в месяц.
  2. Самый экономичный выделенный self-hosted движок: Qdrant со скалярным квантованием (Scalar Quantization, SQ). За счет сжатия векторов из FP32 в UINT8 и отображения полезной нагрузки (payload) в память с диска, Qdrant позволяет без проблем разместить 10M 1536-мерных векторов на одной вычислительной ноде стоимостью $115/месяц, удерживая задержку p95 на уровне менее 15 мс.
  3. Самый выгодный облачный serverless-движок для низких или импульсных нагрузок: Pinecone Serverless. Если ваши агенты запускаются периодически или простаивают длительное время (например, по ночам или в выходные), Pinecone Serverless обойдется буквально в копейки в день ($0,33 за ГБ в месяц за хранилище), полностью исключая базовые затраты в размере $50–$300 в месяц на поддержание простаивающих self-hosted кластеров.

6. Практическая реализация для production-окружения

Чтобы продемонстрировать реальное развертывание, ниже приведены готовые к запуску паттерны кода для двух ведущих решений production-уровня: Qdrant (высокопроизводительный специализированный движок) и pgvector (реляционный гибридный движок).

1. Высокопроизводительная настройка Qdrant с индексацией payload

Развертывание Qdrant с персистентным хранилищем с помощью Docker:

# 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

Реализация на Python с динамической индексацией payload, скалярным квантованием и поиском по памяти агента с фильтрацией:

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 enterprise-уровня (PostgreSQL 17 / pgvector 0.8)

Инициализация индекса HNSW с поддержкой итеративного сканирования (iterative scan) в PostgreSQL:

-- 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)

Итоговый выбор лучших решений в своем классе:

  • Лучший выбор в целом для production-агентов и RAG: Qdrant. Нативная производительность Rust, задержка p95 менее 12 мс при сложной фильтрации по payload и исключительная эффективность использования RAM благодаря скалярному квантованию.
  • Самая экономичная векторная БД для существующих систем: pgvector. Непревзойденная экономическая эффективность при наличии работающего PostgreSQL. Прямые реляционные JOIN в SQL и отсутствие необходимости во вторичных пайплайнах синхронизации данных.
  • Лучшее решение Serverless / Zero-DevOps: Pinecone Serverless. Модель оплаты Pay-as-you-go, нулевая стоимость простоя и практически бесконечное масштабирование без накладных расходов на инфраструктуру.
  • Лучший выбор для сверхкрупных масштабов (> 50M векторов): Milvus. Распределенная Kubernetes-native архитектура с разделением слоев вычислений и хранения, идеальная для корпоративных кластерных инсталляций.
  • Лучшее решение для гибридного поиска (Sparse + Dense): Weaviate. Нативная поддержка Reciprocal Rank Fusion (RRF), объединяющая поиск по ключевым словам через BM25 и векторные эмбеддинги в рамках единого запроса.
  • Лучший выбор для быстрого прототипирования и локальных агентов: ChromaDB. Мгновенная инициализация, минимальное потребление ресурсов и бесшовная интеграция в тестовые среды разработки.
← Все статьи
0 / 4
Сравнить →