Векторные базы данных
Pinecone, Chroma, Weaviate
Проблема: RAG должен быстро находить релевантные документы из миллионов записей. Обычные базы данных ищут по ключевым словам, но нам нужен поиск по смыслу. Как?
Решение: Умная картотека
Векторные базы данных хранят эмбеддинги (числовые представления смысла) и позволяют молниеносный поиск по похожести среди миллионов документов. Представьте библиотеку с каталогом карточек — но вместо алфавитного порядка библиотекарь расставляет книги по смыслу. Алгоритм HNSW действует как библиотекарь, знающий короткие пути между секциями, находя нужную книгу за миллисекунды. Они — основа RAG-пайплайнов, превращающих ваши документы в поисковую базу знаний.
Представьте это как библиотека с каталогом карточек — HNSW-индекс как библиотекарь, знающий короткие пути между секциями:
- 1. Разбиваем документы на чанки: Разбиваем большие документы на чанки по 200-500 токенов с перекрытием — сохраняем границы абзацев и секций
- 2. Генерируем эмбеддинги: Пропускаем каждый чанк через модель эмбеддингов (например, text-embedding-3-small) для получения 1536-мерного вектора
- 3. Сохраняем в векторную БД: Индексируем векторы с помощью HNSW для поиска за доли миллисекунды — храним метаданные (источник, страница, дата) вместе с вектором
- 4. Эмбеддим запрос: Когда приходит запрос пользователя, конвертируем его в вектор той же моделью эмбеддингов
- 5. Находим ближайшие чанки: Векторная БД возвращает top-K наиболее похожих чанков (обычно K=3-10) — они становятся контекстом для LLM
Размер чанка важен: слишком маленький = потеря контекста, слишком большой = шум. Обычный оптимум: 200-500 токенов с 10-20% перекрытием между чанками.
Популярные векторные базы данных
- Pinecone: Полностью управляемая, простая в использовании
- Weaviate: Open source, богатый функционал
- Chroma: Лёгкая, дружелюбная к разработчикам
- pgvector: Расширение Postgres, знакомые инструменты
Интересный факт: Векторный поиск находит релевантные документы даже при нулевом совпадении слов! Поиск "как починить разбитое сердце" в медицинской базе правильно вернёт статьи по кардиологии, а не поэзию — потому что эмбеддинги учитывают контекст домена, а не только сходство слов.
Попробуйте сами!
Используй интерактивный пример ниже, чтобы увидеть, как поиск по векторной похожести находит семантически связанный контент.
Попробуй сам
Интерактивное демо этой техники
Найти релевантные документы: ключевой поиск vs семантический поиск
Найдено 1 результат:
- "Как отменить подписку: зайдите в настройки → подписки → отменить"
Пропущено:
- "Возврат средств за неиспользованный период" (релевантно, но нет слова "отменить")
- "Приостановить ежемесячный платёж" (синоним, но другие ключевые слова)
- "Удалить аккаунт и все данные" (связанная тема)
Топ-5 по cosine similarity:
- (0.95) "Как отменить подписку: настройки → подписки → отменить"
- (0.89) "Возврат средств за неиспользованный период подписки"
- (0.85) "Приостановить ежемесячные платежи на время отпуска"
- (0.82) "Изменить тариф или перейти на бесплатный план"
- (0.78) "Удалить аккаунт и все связанные данные"
Векторный поиск находит документы по СМЫСЛУ, а не по словам. "Отменить подписку" находит и "возврат средств", и "приостановить платежи" — потому что embedding кодирует семантику.
Создайте бесплатный аккаунт для решения челленджей
4 челленджей с AI-проверкой для этого урока
Этот урок — часть структурированного курса по LLM.
Мой путь обучения