Skip to content
EN

Vector Database

Коротко:

Vector Database — БД, оптимизированная для хранения + поиска векторов (embeddings) через ANN (Approximate Nearest Neighbor) алгоритмы. HNSW, IVF, DiskANN — common indexing. Поддерживает hybrid search (vector + keyword), metadata filtering, upsert/delete. 2026 leaders: Qdrant (Rust open-source, fastest), Pinecone (managed, expensive), Weaviate (open hybrid search), Milvus (CNCF), pgvector (Postgres extension, простой).

Ниже: подробности, пример, смежные термины, FAQ.

Проверить свой сайт →

Подробности

  • Scale: миллиарды vectors на single node с SSD disk-based indexes
  • Index types: HNSW (fastest recall) vs IVF (cheaper memory) vs DiskANN (huge scale)
  • Hybrid search: dense vector + sparse BM25 + metadata filter
  • Cloud managed: Pinecone, Qdrant Cloud, Weaviate Cloud, Zilliz (Milvus)
  • Self-host: Qdrant / Weaviate / Milvus Docker image, pgvector extension в Postgres 14+

Пример

# Qdrant: create collection + insert + search
curl -X PUT http://localhost:6333/collections/docs \
  -H 'Content-Type: application/json' \
  -d '{"vectors": {"size": 1536, "distance": "Cosine"}}'

# Insert
curl -X PUT http://localhost:6333/collections/docs/points \
  -d '{"points": [{"id": 1, "vector": [0.1, 0.2, ...], "payload": {"text": "..."}}]}'

# Search top-5
curl -X POST http://localhost:6333/collections/docs/points/search \
  -d '{"vector": [0.1, 0.2, ...], "limit": 5}'

Смежные термины

Что такое векторная база данных?

Векторная база данных — это специализированная система управления данными, предназначенная для хранения, обработки и поиска векторных представлений объектов, таких как текст, изображения или звуковые записи. В отличие от традиционных реляционных баз данных, которые работают с табличными данными, векторные базы данных оптимизированы для выполнения операций с многомерными векторными данными, что делает их особенно полезными в задачах машинного обучения и искусственного интеллекта.

Принципы работы векторных баз данных

Векторные базы данных используют векторные представления, которые представляют собой набор чисел, отражающих характеристики объектов. Эти векторы можно создавать с помощью различных алгоритмов, таких как Word2Vec, FastText или BERT для текстов, а также CNN для изображений. Векторные базы данных обеспечивают эффективное хранение и быстрое извлечение данных с использованием методов, таких как:

  • Индексирование: Используются специальные структуры данных, такие как KD-деревья или LSH (Locality Sensitive Hashing), для ускорения поиска.
  • Поиск по близости: Векторные базы данных позволяют находить объекты, которые наиболее близки к заданному вектору, используя метрики, такие как косинусное расстояние или евклидово расстояние.
  • Масштабируемость: Современные векторные базы данных способны обрабатывать миллиарды векторов, что позволяет использовать их в крупных проектах и приложениях.

Практический пример использования векторной базы данных

Рассмотрим практический пример использования векторной базы данных для поиска похожих изображений. Для начала, необходимо создать векторные представления изображений с помощью предобученной модели глубокого обучения, такой как ResNet. После этого полученные векторы можно сохранить в векторной базе данных, например, в Milvus или Pinecone.

import torch
from torchvision import models, transforms
from PIL import Image

# Загружаем предобученную модель
model = models.resnet50(pretrained=True)
model.eval()

# Функция для преобразования изображения в вектор
def get_vector(image_path):
    image = Image.open(image_path)
    preprocess = transforms.Compose([
        transforms.Resize(256),
        transforms.CenterCrop(224),
        transforms.ToTensor(),
        transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]),
    ])
    input_tensor = preprocess(image)
    input_batch = input_tensor.unsqueeze(0)

    with torch.no_grad():
        output = model(input_batch)
    return output.numpy()

# Получаем вектор для изображения
vector = get_vector('image.jpg')

После того как векторы изображений получены, они могут быть загружены в векторную базу данных. Например, с помощью Milvus можно использовать следующий код:

from pymilvus import Collection, connections

# Устанавливаем соединение с Milvus
connections.connect(host='localhost', port='19530')

# Создаем коллекцию
collection = Collection('images')

# Добавляем векторы в коллекцию
collection.insert([vector])

Теперь, когда векторы загружены, можно выполнять запросы для поиска изображений, похожих на заданное.

Больше по теме

Часто задаваемые вопросы

pgvector vs dedicated vector DB?

pgvector: simplicity (ваш уже Postgres), до ~1M vectors. Dedicated: лучше при >10M, hybrid search, HA. Начинайте с pgvector, migrate если upgrade нужен.

Qdrant vs Pinecone?

Qdrant: open source, self-host, Rust быстрый, $0 cost. Pinecone: managed, no ops, $70+/mo. Enterprise features: Qdrant Cloud или Pinecone.

Как monitor?

<a href="/ping">Enterno Ping</a> для порта 6333 (Qdrant). <a href="/monitors">Monitors</a> для /health endpoint.

Запустить инструмент, который описан в этой статье

Бесплатный тариф — 10 мониторов, проверки каждые 5 мин, без карты. Платные тарифы — интервал от 1 минуты и проверки из нескольких регионов.