Gönderi içeriği
База собесов про LLM - RAG 😎 Продолжение рубрики с прохождением собесов, на очереди одна из самых частых тем в моей работе - RAG. 1️⃣Как работает RAG? RAG (Retrieval-Augmented Generation) — это метод, позволяющий большим языковым моделям (LLM) улучшать качество ответов за счет использования актуальной информации из внешних источников, таких как базы данных, документы или API. Этот подход снижает вероятность ошибок модели (галлюцинаций) и обеспечивает более точные и контекстуально обоснованные ответы, даже если сама модель обучалась на устаревших данных. Концептуально можно выделить несколько ключевых компонентов и этапов, которые обеспечивают работу RAGа: 1. Ввод пользовательского запроса. 2. Запрос преобразуется в векторное представление (эмбеддинг), которое математически описывает смысл запроса. Обычно используется предобученная модель для генерации эмбеддингов. 3. Далее вектор запроса сравнивается с хранящимися в базе векторами для поиска наиболее релевантных данных. В качестве баз для хранения часто используют Qdrant, Pinecone или Weaviate. 4. Из базы данных извлекаются фрагменты текста или документов, которые лучше всего соответствуют запросу. Эти данные формируют контекст для ответа. 5. LLM получает извлеченный контекст и запрос. Из этих данных она генерирует ответ, который после возвращается пользователю. 2️⃣В чём преимущества использования системы RAG? Главное преимущество использования RAG - скорость поиска, так как ни регулярки, ни LLM не решает этот вопрос лучше. Но придется тестить много разных моделей для эмбеддингов, и четко оценивать различные метрики расстояния между запросом и документом. 3️⃣Когда лучше использовать Fine-tuning вместо RAG? Базовый ответ на этот вопрос, когда не нужен никакой сильный поиск, потому что зачастую после использования RAG системы все равно нужен запрос в LLM для нормального(человечного) ответа. Все равно RAG требует некоторых вычислительных мощностей, поэтому если можно сократить путь, то всего это делайте. 4️⃣Типы RAG систем Sparse Retrieval (BM25, TF-IDF) BM25 основан на методе оценки ключевых слов TF-IDF(Term-Frequency Inverse-Document Frequency), используя модель двоичной независимости из расчета IDF и добавляя штраф за нормализацию, который взвешивает длину документа относительно средней длины всех документов в базе данных. Чаще всего этот метод используют для реализации быстрых решений, так как он прост в реализации, имеет хорошую скорость и также можно точно настроить под задачу. Но дальше выходят основные ограничения метода: не учитываются семантические свящи между словами и плохая восприимчивость к синонимии и контексту. Ноутбук для использования Dense Retrieval(vector embeddings + ANN) Dense Retrieval сочетает в себе два ключевых компонента: 1. Векторные эмбеддинги для представления запросов и документов в едином векторном пространстве 2. ANN - алгоритмы приближенного поиска ближайших соседей для выборки ближайших векторов Плотные вектора подходят намного больше для поиска по контексту, но у них возникают проблемы с ключевыми словами. Поэтому финальным решением чаще всего становится Hybrid Retrieval. Hybrid Retrieval (комбинация sparse + dense) Хотя dense ретриверы, основанные на сложных моделях встраивания, хорошо понимают семантические связи и намерения пользователя, они иногда могут промахиваться по запросам, требующим точных лексических совпадений. Например, модель может уловить общую тему запроса, но не отдать приоритет документам, содержащим очень конкретный, но менее распространенный код продукта или технический термин, упомянутый пользователем. Напротив, традиционные sparse ретриверы, такие как BM25, отлично находят эти точные термины, но им не хватает более широкого контекстного понимания для поиска семантически похожего, но лексически разного контента. Они работают с ключевыми словами, которые, несмотря на точность, могут быть нестабильны при работе с синонимами, парафразами или сложными запросами на естественном языке. Сочетание плотных и разреженных методов поиска обеспечивает ряд преимуществ для вашей системы RAG Ноутбук с примером