Что это
Qdrant - база данных для векторного поиска. Вместе с вектором можно сохранить дополнительные поля: название документа, источник, дату или идентификатор раздела. Поиск выбирает близкие записи, а фильтры ограничивают выборку.
В RAG Qdrant отвечает за хранение и поиск, но не за всю цепочку ответа. Разбор документов, получение embeddings, проверка прав и генерация текста требуют других компонентов. Для векторов и запроса должны совпадать выбранная модель и размерность.
Есть открытый сервер для своего размещения и управляемый Cloud. Учебный Python-прототип можно начать в локальном режиме клиента без сервера. Это способ проверить логику поиска, а не доказательство готовности к большой нагрузке.
Ключевые параметры
- Категория: Векторные базы
- Сложность: Для разработчика
- Запуск: Около 30 минут
- Open-source: Да
- Данные: Не известно
- Чувствительные данные: Только с настройками
Сильные стороны
- Поиск можно сочетать с условиями по дополнительным полям записи.
- Локальный режим Python-клиента позволяет проверить небольшой пример без отдельного сервера.
- Открытое размещение дает возможность контролировать инфраструктуру и хранение.
- REST, gRPC и клиентские библиотеки помогают встроить поиск в разные приложения.
Ограничения
- Качество поиска зависит от embeddings, подготовки данных и критериев проверки.
- Потребление памяти и диска растет с количеством, размерностью и индексами векторов.
- Self-hosted-сервер по умолчанию требует отдельной настройки авторизации и сетевой защиты.
- База не задает автоматически права пользователей, сроки памяти агента и достоверность ответа модели.
Как использовать
1. Подготовка. Создайте учебное окружение Python и установите python -m pip install qdrant-client. Для проверки механики возьмите три готовых вектора, не реальные документы: ID 1 = [1,0,0], ID 2 = [0,1,0], ID 3 = [0.9,0.1,0].
2. Настройка. Импортируйте QdrantClient и models из qdrant_client. Создайте client = QdrantClient(":memory:") и коллекцию demo через create_collection с vectors_config=models.VectorParams(size=3, distance=models.Distance.COSINE).
3. Первый результат. Через client.upsert добавьте в demo три models.PointStruct с числовыми id и vector. Выполните client.query_points(collection_name="demo", query=[1,0,0], limit=2).points. Первыми должны вернуться ID 1 и ID 3.
4. Проверка. Сверьте порядок и размерность; вектор иной длины должен отклоняться. :memory: теряет данные при завершении процесса. Для смыслового поиска отдельно выберите embedding-модель, преобразуйте учебные тексты и запрос одной моделью и проверьте ответы на заранее размеченных примерах.
Примеры сценариев
- Найти похожие фрагменты внутренней инструкции.
- Ограничить поиск документами конкретного раздела.
- Сравнить результаты поиска после смены embedding-модели.
Доступ и оплата
- Модель оплаты: Бесплатный тариф + платные возможности
- Бесплатный тариф: Да
- Работа в РФ: Нужно проверять
- VPN: Не известно
- Русский интерфейс: Не известно
- Русский язык: Не известно
Открытый сервер лицензируется по Apache-2.0. Cloud имеет бесплатный уровень для прототипов и тарификацию ресурсов на платных уровнях. Локальная работа не требует облачной подписки; доступность и оплату Cloud из России не подтверждаем. Расходы на embeddings и генерацию учитываются отдельно.
Когда не подходит
- Получить достоверный ответ из загруженного PDF без других компонентов
- Считать близость доказательством совпадения смысла
- Открывать самоуправляемый сервер без защиты
Альтернативы
pgvector удобен при уже используемом PostgreSQL. Pinecone предоставляет управляемый векторный сервис. Weaviate и Chroma предлагают другие варианты хранения и поиска. Сравнивайте на одинаковых embeddings, фильтрах и вопросах, а не только по числу записей.