Оптимизация эмбеддингов: как ускорить RAG в 10 раз без потери качества
Эмбеддинги — основа семантического поиска. Но они же узкое место: медленные, дорогие, неточные. Разбираем как это исправить.
Что такое эмбеддинг?
Это вектор — набор чисел, который представляет смысл текста. «Кот» и «кошка» имеют похожие векторы, «автомобиль» — далёкий. Математика ищет ближайших соседей.
Проблема №1: Неправильный чанкинг
Режем текст на куски — получаем мусор на стыках. Решение: используй parent document retrieval. Большой документ разбивай на смысловые части, но храни ссылку на оригинал.
Проблема №2: Не тот размерность
768 измерений — стандарт, но часто избыточно. Для простых задач хватит 256. Экспериментируй с dimensionality reduction (PCA, UMAP) после обучения.
Проблема №3: Выбор модели
• paraphrase-MiniLM-L6-v2 — быстро, 384dim, бесплатно
• BGE — точнее, но медленнее
• Cohere — платно, но лучший баланс
Тестируй на своих данных, не на бенчмарках.
Проблема №4: Кэширование
Один и тот же запрос не нужно векторизовать каждый раз. Redis или простой dict — кэшируй результаты. Скорость +50-70%.
Пошаговый план оптимизации:
1. Замерь текущую скорость и точность
2. Попробуй smaller model (MiniLM вместо BERT)
3. Настрой размер чанка (256-512 токенов — золотая середина)
4. Добавь кэш
5. Если всё ещё медленно — переходи на GPU или оптимизированный inference (vLLM, Ollama)
Результат: от 200ms до 20ms на запрос. Проверено.
#RAG #Эмбеддинги #Оптимизация
Post #84
204

- ❤ 2