RAG – Retrieval Augmented Generation
RAG – это подход в обработке естественного языка, объединяющий поиск информации в базе знаний с генерацией текста нейронной сетью. Цель такого объединения – значительное повышение точности и релевантности ответов.
Для работы системы необходимо заранее подготовить векторную базу знаний, содержащую релевантные тексты в форме эмбеддингов (векторов, сохраняющих семантические значения текстов).
Работа системы при таком подходе состоит из следующих частей
- Пользователь формулирует вопрос.
- Система переводит вопрос в вектор (эмбеддинг).
Здесь важно, чтобы для векторизации запроса пользователя использовался тот же алгоритм, который использовался при векторизации базы знаний. - Система производит поиск наиболее близких к запросу векторов в базе знаний.
Как правило, поиск производится по метрике евклидова расстояния. Выбираются векторы, наиболее близкие по этой метрике к запросу. - Выбранные векторы становятся частью промта (контекстом).
- Система собирает промт, состоящий из двух частей: контекста и вопроса пользователя.
Контекст – это найденные в базе знаний релевантные запросу пользователя тексты.
Вопрос – это вопрос пользователя в его первоначальной форме. - Большая языковая модель принимает промт и возвращает свой ответ, определяемый контекстом и вопросом пользователя.
В чем польза и удобство RAG систем?
- Считается, что подход приводит к более точным и релевантным ответам больших языковых моделей.
- Снижается риск галлюцинаций больших языковых моделей, так как в промте используется контекст, основанный на реальных документах.
- Система легко расширяется и становится умнее за счет легкости добавления новых документов в базу знаний.
Пример работы системы – Google Colab