Что это
Redis Vector Search - возможность Redis Search, а не отдельная нейросеть. Она помогает находить близкие векторные представления текста или других данных. Это полезно для RAG и поиска похожих объектов, особенно если Redis уже есть в инфраструктуре.
В Redis 8 поиск и JSON входят в Open Source-дистрибутив. В более старой установке нельзя предполагать наличие команд FT.CREATE и FT.SEARCH: сначала проверьте версию и состав сервера.
До поиска нужно подготовить векторы и схему индекса. После поиска - проверить права пользователя и передать разрешенные фрагменты модели, если нужен ответ. База не читает PDF и не подтверждает правильность найденного факта сама.
Ключевые параметры
- Категория: Векторные базы
- Сложность: Для разработчика
- Запуск: Около 30 минут
- Open-source: Да
- Данные: Не известно
- Чувствительные данные: Только с настройками
Сильные стороны
- Поддерживает точный FLAT и приближенный HNSW-поиск.
- Векторный запрос можно сочетать с фильтрами метаданных.
- Данные можно индексировать в HASH или JSON.
- Для Redis 8 поиск доступен в Open Source-дистрибутиве.
Ограничения
- Вектор запроса должен соответствовать размерности и представлению индекса.
- HNSW ускоряет поиск ценой настройки и возможной потери полноты выдачи.
- Индекс и исходные данные потребляют ресурсы сервера; нужен расчет объема.
- Парсинг документов, embeddings, LLM и разграничение доступа остаются частью приложения.
Как использовать
1. Подготовка. Возьмите отдельный Redis 8 с доступом только с локального компьютера. Установите Python-пакет redis. Для первого теста используйте искусственные векторы, без загрузки документов или платной модели.
2. Настройка. В redis-cli выполните FT.CREATE demo_vectors ON JSON PREFIX 1 demo:v: SCHEMA $.vector AS vector VECTOR FLAT 6 TYPE FLOAT32 DIM 3 DISTANCE_METRIC COSINE. Добавьте JSON.SET demo:v:1 $ '{"vector":[1,0,0]}' и JSON.SET demo:v:2 $ '{"vector":[0,1,0]}'. Если команда неизвестна, проверьте сборку сервера.
3. Первый результат. В Python импортируйте Redis из redis и pack из struct. Создайте r = Redis(host="127.0.0.1", port=6381). Выполните r.execute_command("FT.SEARCH", "demo_vectors", "*=>[KNN 1 @vector $q AS distance]", "PARAMS", 2, "q", pack("<3f", 1, 0, 0), "SORTBY", "distance", "RETURN", 1, "distance", "DIALECT", 2). Ожидается ключ demo:v:1 с расстоянием около нуля. Если экземпляр использует другой порт, измените port.
4. Проверка. Повторите запрос с вектором [0,1,0]: ближайшим должен стать demo:v:2. Это проверка механики индекса, не качества смыслового поиска. Для реальных документов используйте одну embedding-модель, проверьте известные вопросы и фильтры доступа до передачи выдачи LLM.
Примеры сценариев
- Найти фрагменты инструкции перед ответом модели.
- Ограничить поиск метаданными разрешенного раздела.
- Сравнить полноту точного и приближенного поиска.
Доступ и оплата
- Модель оплаты: Open-source
- Бесплатный тариф: Да
- Работа в РФ: Нужно проверять
- VPN: Не известно
- Русский интерфейс: Не известно
- Русский язык: Не известно
Для Redis 8+ действует выбор трех лицензий; собственное размещение требует инфраструктуры. Не путайте бесплатный локальный поиск с тарифом Redis Cloud и оплатой embedding-модели.
Когда не подходит
- Искать по смыслу без embeddings
- Считать ближайший фрагмент доказанным ответом
- Заменить проверку прав одним промптом
Альтернативы
Qdrant - специализированный векторный сервер. pgvector добавляет поиск в PostgreSQL. Pinecone предлагает управляемую инфраструктуру. Перенос требует согласовать схему, фильтры и модель embeddings, а не только сменить адрес.