Современные аналоги ChatGPT (нейросети LLM) могут вмещать в себя немыслимое количество знаний, могут выдавать качественные ответы и поддерживать разговор почти на любую тему. А что, если нужно «запихнуть» в нейросеть дополнительную специфичную информацию? Конечно, можно её дообучить, добавив тонны текстов на заданную тематику. Но это достаточно затратно и рискованно в том плане, что можно потерять («забыть») уже заложенную в неё информацию. Поэтому придумали способ подключать к LLM свою собственную базу знаний, из которой и будет формироваться ответ. Эта техника называется retrieval augmented generation (RAG).
Рассмотрим пример
Есть новый том юридических законов. Ваша LLM не знает о них, потому что этот том не использовался для обучения. Но вы хотите задать вопрос и получить ответ из данной книги. Не просто кусок абзаца, а чёткий ответ на поставленный вопрос:
«Может ли супруга получить налоговый вычет, если квартира была куплена до брака?» — «Нет, в соответствии с законом ... от 2025 года право на налоговый вычет имеет только один из супругов, кто купил квартиру».
Как это работает?
Во-первых, база знаний, представляющая собой набор документов, делится на логические части, например, абзацы. Каждый абзац с помощью retrieval model переводится в смысловой вектор-признак (embedding). Таким образом, вся база знаний становится векторной базой. Далее запрос пользователя тоже векторизуется и используется для поиска по базе, чтобы извлечь наиболее подходящие по смыслу абзацы. Ну и наконец, запрос пользователя, а также некоторое количество релевантных абзацев отправляются в LLM в качестве большого такого промпта, из которого формируется ответ. Чтобы учитывать историю беседы, при формировании промпта также добавляются предыдущие N текстов из вашего чата. Это возможно благодаря современным мощным LLM, которые способны обрабатывать большие промпты.
Преимущества:
🔹 Обновлять базу знаний гораздо проще, чем саму LLM.
🔹 При выдаче ответа есть понимание, на какую информацию ссылалась нейросеть, ведь используются чётко выбранные абзацы для конкретного запроса.
🔹 Снижается вероятность появления галлюцинаций у LLM.
Препятствия
🔹 Не всегда очевидно, на какие части делить документы для извлечения векторов-признаков. Один абзац не всегда содержит ключевую мысль.
🔹 Ошибки на этапе поиска релевантных документов влияют на итоговый ответ.
🔹 Не каждая LLM рассчитана на работу с подобной техникой.
🔹 Сложно настроить баланс между внутренними знаниями LLM и информацией из внешней базы знаний.
Подробнее (1), (2)