Comments 16
Сказка отлично объясняет базовую архитектуру RAG и баланс между скоростью и точностью.
Можно добавить. Эмбеддинги + векторный поиск. Гибридный поиск, метаданные, иерархические чанки. Ретривер + реранкер. Метрики качества и оценки. Индексы (HNSW, IVF). Мониторинг, обновления данных, права доступа.
В общем, команда сказочных героев пополниться новыми персонажами.
Суть статьи: RAG строится на двух этапах:
Быстрый этап: ANN-индекс (IVF/HNSW) — находит похожие фрагменты среди огромного объема данных (жертвуя точностью ради скорости).
Точный этап: Реранкер (кросс-энкодер) — перепроверяет и сортирует найденное, отбрасывая нерелевантные данные (жертвуя скоростью ради точности на финальном отрезке).
Как раз последнее время пытаюсь сделать как в сказке (точность и скорость), тестирую на локальной модели text-embedding-qodo-embed-1-1.5b. Может подскажете локальные варианты получше (для кодовой базы), если есть?
Если говорить про локальные модели для кода я пробовала Nomic Embed v2 (137M) и Snowflake Arctic Embed S (33M). Обе работают на CPU, качество хорошее, бесплатные, Nomic чуть точнее, Arctic быстрее. Для кода ещё важно не просто эмбеддинг, а гибрид с BM25, иначе имена переменных теряются.У меня в итоге встала связка: Arctic + BM25 + HNSW. А вы на чём сейчас тормозитесь на скорости или на точности?
Я пока ещё в процессе, подтягиваюсь точность. У меня смысл такой, emb модель индексирует репозиторий, поверх неё работает qwen coder instruct раскладывая всё по полочкам, что бы с этими данными можно было работать предметно (запросил какую-то сущность и к примеру её api слой, и мгновенно получил точную выборку) , а python валидирует, пока что результаты качества 0.75 — 0.8. Когда добью до 0.95 хотя бы, буду уже оптимизировать.
Основная цель снизить расход токенов и контекстного окна для всяких Claude, Gpt и так далее. Что бы они не занимались сканированием и чтением сырых данных, а передавали эадачи в локальный инструмент, а на выходе получали сжатую и точную информацию для разработки
Собственно, поэтому и спрашиваю о "лучшей" emb модели, что бы исключить вариант не точности по её причине и сконцентрироваться на тюннинге валидатора
Смотри, из локальных моделей для кода сейчас лучше всего посмотреть на Jina Code Embeddings (версия 0.5B или 1.5B) и BAAI/bge m3. Jina специально обучена на коде и по тестам показывает очень высокую точность, выше многих аналогов. bge m3 чуть тяжелее, зато умеет одновременно плотный и разреженный поиск. Обе подходят, чтобы исключить эмбеддинги из списка проблем и заняться валидатором. Там уже что больше понравиться.
Потерял доступ к акку Хабра, прошел целый квест по восстановлению чтобы поставить плюсик ) Даже не сколько за сам материал (подача классная, интересная, для начинающих самое то), но мне прям дико полезны были ссылки на использованную литературу. Полгода как "вкатываюсь" в ИИ-шечку, как-то не додумался до этого поста читать прям статьи, второй вечер зачитываюсь. Спасибо за наводку!
RAG: как Филин Палыч-реранкер навел порядок в цифровом королевстве