Генерация с расширенным поиском
Поисковая дополненная генерация ( RAG ) — это тип генеративного искусственного интеллекта , обладающий возможностями поиска информации . Он изменяет взаимодействие с большой языковой моделью (LLM) так, что модель отвечает на запросы пользователей со ссылкой на указанный набор документов, используя эту информацию вместо информации, полученной из ее собственных обширных статических обучающих данных . Это позволяет LLM использовать специфичную для предметной области и/или обновленную информацию. [ 1 ] Варианты использования включают предоставление чат-боту доступа к внутренним данным компании или предоставление фактической информации только из авторитетного источника. [ 2 ]
Процесс
[ редактировать ]Процесс RAG состоит из четырех ключевых этапов. Во-первых, все данные должны быть подготовлены и проиндексированы для использования LLM. После этого каждый запрос состоит из фазы поиска, дополнения и генерации. [ 1 ]
Индексирование
[ редактировать ]Данные, на которые можно ссылаться, сначала должны быть преобразованы в вложения LLM , числовые представления в форме больших векторов. RAG можно использовать для неструктурированных (обычно текстовых), полуструктурированных или структурированных данных (например, графов знаний ). [ 1 ] Эти вложения затем сохраняются в базе данных векторов, что позволяет осуществлять поиск документов .

Поиск
[ редактировать ]По запросу пользователя сначала вызывается средство извлечения документов, чтобы выбрать наиболее релевантные документы, которые будут использоваться для дополнения запроса. [ 3 ] Это сравнение может быть выполнено с использованием различных методов, которые частично зависят от типа используемого индексирования. [ 1 ]
Увеличение
[ редактировать ]Модель передает эту соответствующую полученную информацию в LLM посредством быстрого проектирования исходного запроса пользователя. [ 2 ] Новые реализации (по состоянию на 2023 г. [update]) также может включать специальные модули расширения с такими возможностями, как расширение запросов на несколько доменов, а также использование памяти и самосовершенствование для обучения на предыдущих извлечениях. [ 1 ]
Поколение
[ редактировать ]Наконец, LLM может генерировать выходные данные на основе как запроса, так и полученных документов. [ 4 ] Некоторые модели включают дополнительные шаги для улучшения результатов, такие как изменение ранжирования полученной информации, выбор контекста и точная настройка. [ 1 ]
Улучшения
[ редактировать ]Улучшения базового процесса, описанного выше, могут применяться на разных этапах процесса RAG.
Кодер
[ редактировать ]Эти методы основаны на кодировании текста как плотных, так и разреженных векторов. Разреженные векторы, используемые для кодирования идентичности слова, обычно имеют словарную длину. [ нужны разъяснения ] и содержат почти все нули. Плотные векторы, используемые для кодирования значения, намного меньше и содержат гораздо меньше нулей. Можно внести некоторые усовершенствования в способ расчета сходства в векторных хранилищах (базах данных).
- Производительность можно повысить за счет более быстрого скалярного произведения, поиска приближенных ближайших соседей или поиска центроидов. [ 5 ]
- Точность можно повысить с помощью поздних взаимодействий. [ нужны разъяснения ] [ 6 ]
- Гибридные векторы: плотные векторные представления можно комбинировать с разреженными горячими векторами, чтобы использовать более быстрые разреженные скалярные произведения, а не более медленные плотные. [ 7 ] Другой [ нужны разъяснения ] методы могут сочетать разреженные методы (BM25, SPLADE) с плотными, такими как DRAGON.
Ретривер-ориентированные методы
[ редактировать ]Эти методы направлены на улучшение качества попаданий из векторной базы данных:
- предварительно обучите ретривера, используя обратную задачу закрытия. [ 8 ]
- прогрессивное увеличение данных. Метод Дракона отбирает сложные негативы для обучения ретривера плотных векторов. [ 9 ]
- Под присмотром обучайте ретривера работе с заданным генератором. Получив подсказку и желаемый ответ, извлеките первые k векторов и подайте эти векторы в генератор, чтобы получить оценку недоумения для правильного ответа. Затем минимизируйте KL-расхождение между наблюдаемой вероятностью извлеченных векторов и вероятностью LM, чтобы настроить ретривер. [ 10 ]
- используйте рерангирование для тренировки ретривера. [ 11 ]
Языковая модель
[ редактировать ]Перепроектировав языковую модель с учетом ретривера, сеть в 25 раз меньшего размера может столкнуться с такими же затруднениями, как и ее гораздо более крупные аналоги. [ 12 ] Поскольку обучение проводится с нуля, этот метод (ретро) требует больших затрат на обучение, которых можно было избежать в исходной схеме RAG. Гипотеза состоит в том, что, предоставляя знания предметной области во время обучения, Retro требует меньше внимания к предметной области и может уделять меньше внимания только семантике языка. Переработанная языковая модель показана здесь.
Сообщалось, что Retro не воспроизводится, поэтому были внесены изменения, чтобы сделать это так. Более воспроизводимая версия называется Retro++ и включает контекстный RAG. [ 13 ]
Разбивка на части
[ редактировать ]Преобразование данных предметной области в векторы должно выполняться продуманно. Наивно преобразовывать весь документ в один вектор и ожидать, что программа поиска найдет детали в этом документе в ответ на запрос. Существуют различные стратегии разделения данных. Это называется Чанкинг.
Три типа стратегий фрагментации:
- Фиксированная длина с перекрытием. Это быстро и легко. Перекрытие последовательных фрагментов помогает поддерживать семантический контекст между фрагментами.
- Части, основанные на синтаксисе, могут разбивать документ на предложения. Также могут помочь такие библиотеки, как spaCy или NLTK.
- Разбиение на части по формату файла. Некоторые типы файлов имеют встроенные естественные фрагменты, и лучше их уважать. Например, файлы кода лучше всего разбивать на фрагменты и векторизовать как целые функции или классы. В файлах HTML следует оставлять элементы <table> или <img> в кодировке Base64 нетронутыми. Аналогичные соображения следует принять и для файлов PDF. В этом методе могут помочь такие библиотеки, как Unstructured или Langchain.
Проблемы
[ редактировать ]Если внешний источник данных большой, извлечение может быть медленным. Использование RAG не устраняет полностью общие проблемы, с которыми сталкиваются LLM, включая галлюцинации. [ 3 ]
Ссылки
[ редактировать ]- ^ Перейти обратно: а б с д и ж Гао, Юньфан; Гао, Синьюй; Пан, Цзиньлю; Дай, И; Языковые модели: обзор». arXiv : 2312.10997 [ cs.CL ].
- ^ Перейти обратно: а б «Что такое RAG? — Объяснение искусственного интеллекта с расширенным поиском — AWS» . Amazon Веб-сервисы, Inc. Проверено 16 июля 2024 г.
- ^ Перейти обратно: а б «Модели большого языка следующего поколения: Справочник по расширенному поиску (RAG)» . freeCodeCamp.org . 11 июня 2024 г. Проверено 16 июля 2024 г.
- ^ Льюис, Патрик; Перес, Итан; Пиктус, Александра; Петрони, Фабио; Карпухин Владимир; Гоял, Наман; Кюттлер, Генрих; Льюис, Майк; Йи, Вен-тау; Роктешель, Тим; Ридель, Себастьян; Киела, Доуве (2020). «Расширенная поисковая генерация для наукоемких задач НЛП» . Достижения в области нейронных систем обработки информации . 33 . Curran Associates, Inc.: 9459–9474. arXiv : 2005.11401 .
- ^ "файс" . Гитхаб .
- ^ Хаттаб, Омар; Захария, Матей (2020). " "ColBERT: эффективный и действенный поиск проходов посредством контекстуализированного позднего взаимодействия через BERT" " . дои : 10.1145/3397271.3401075 .
- ^ Формальный, Тибо; Лассанс, Карлос; Пивоварски, Бенджамин; Клиншан, Стефан (2021). " "SPLADE v2: Разреженная лексика и модель расширения для поиска информации" " . Арксив . S2CID 237581550 .
- ^ Ли, Кентон; Чанг, Мин-Вэй; Тутанова, Кристина (2019). « Скрытый поиск для ответов на вопросы открытого домена со слабым контролем» ( PDF) .
- ^ Линь, Шэн-Чье; Асаи, Акари (2023). « Как приручить ДРАКОНА: разнообразные дополнения к обобщенному плотному извлечению» » (PDF) .
- ^ Ши, Вейцзя; Мин, Севон (2024). «REPLUG: языковые модели черного ящика с расширенным поиском» . «REPLUG: языковые модели черного ящика с расширенным поиском» . стр. 8371–8384. arXiv : 2301.12652 . doi : 10.18653/v1/2024.naacl-long.463 .
- ^ Рам, Ори; Левин, Йоав; Далмедигос, Италия; Мюльгай, Дор; Шашуа, Амнон; Лейтон-Браун, Кевин; Шохам, Йоав (2023). " "Языковые модели с расширенным поиском в контексте" " . Труды Ассоциации компьютерной лингвистики . 11 : 1316–1331. дои : 10.1162/tacl_a_00605 .
- ^ Боржо, Себастьян; Менш, Артур (2021). " "Улучшение языковых моделей путем извлечения из триллионов токенов" " ( PDF) .
- ^ Ван, Боксин; Пин, Вэй (2023). « Должны ли мы предварительно обучить авторегрессионные языковые модели поиску? Комплексное исследование» » (PDF) .