Вопрос или проблема
Какие существуют хорошие end-to-end RAG (Retrieval-Augmented Generation) фреймворки для вопросов-ответов с использованием LLM?
Мои требования:
- Низкий/отсутствие кода и простота настройки.
- Чтение и разбор локальных файлов документов (.PDF, .DOCX и т.д.) в базу данных и генерация их векторных эмбеддингов.
- Скрапинг и разбор веб-сайта в базу данных.
- Менее важно: Загрузка и разбор изображений, аудио и видео с помощью преобразования изображения/аудио в текст и/или эмбеддингов.
- Ретриверы, которые запрашивают базу данных через сходство векторных эмбеддингов и/или поиск по ключевым словам.
- Позволить LLM выбрать лучший вариант перефразирования пользовательского запроса для поиска с использованием ретриверов.
- Пересортировать результаты, возвращенные ретриверами, и выбрать наиболее релевантные части.
- Синтезировать ответ для конечного пользователя, используя полученную информацию.
- Предоставить источники результатов, такие как указание точного пути к упомянутым файлам.
- Необязательно, но желательно: агент LLM с памятью, принимающий автономные решения о том, какие запросы выполнять и как перефразировать запрос, если предыдущие результаты неудовлетворительны.
Я понимаю, что может быть трудно найти фреймворк, удовлетворяющий всем требованиям, так что решения, удовлетворяющие большинству требований, будут приемлемы. Я также приму простую комбинацию различных фреймворков. Однако я не планирую сшивать все отдельные компоненты вместе кодом. Мне нормально выбирать, какие парсеры и ретриверы использовать, но они должны быть простыми в подключении и использовании.
Я обнаружил, что RAGFlow может быть хорошим решением в соответствии с требованиями. Кроме того, я также создаю свой собственный агентический RAG фреймворк, используя LlamaIndex, хотя я не приму его как ответ на этот вопрос, так как он требует много кода для объединения компонентов.
NotebookLM — это веб-приложение без необходимости кодирования, которое может считывать/разбирать различные форматы:
Бесплатно для использования.
Оно не скрапит сайты, но если вы действительно хотите скрапить, вы можете попробовать преобразовать сайты в HTML или PDF файлы, для этого существуют различные инструменты.
(дисклеймер: я работаю в той же компании)
Ответ или решение
Рамка RAG (Retrieval-Augmented Generation) представляет собой прогрессивный подход к созданию интеллектуальных систем вопросов и ответов, основанных на моделях машинного обучения. Этот подход объединяет извлечение информации и генерацию текста, предоставляя более точные и релевантные ответы на пользовательские запросы. Для многих специалистов в области ИТ важно не только понимание теоретических основ RAG, но и возможность практического применения готовых решений с минимальными усилиями по установке и настройке. Рассмотрим детали более подробно.
Теория:
Основная идея RAG заключается в использовании внешних источников информации для повышения качества генерации текста. В этом контексте система сначала извлекает релевантные данные из базы данных, а затем использует LLM (Language Model) для генерации текстовых ответов на основе извлеченной информации. Это позволяет системе быть более ресурсосберегающей и производительной, поскольку модель генерирует текст на основе актуальных и актуализированных данных.
Пример:
Предположим, у вас есть база данных из множества локальных документов, таких как PDF и DOCX, а также веб-контент, который необходимо интегрировать в систему вопросов и ответов. Для этого необходимо обеспечить конвертацию документов в эмбеддинги векторного пространства для эффективного поиска. Затем включается поиск информации по извлеченным эмбеддингами, который актуализируется для подготовки точного ответа на запрос пользователя.
Применение:
Для обеспечения вышеперечисленных функций необходимо выбрать RAG-фреймворк, который минимизирует кодирование. Примеры таких фреймворков включают RAGFlow и NotebookLM.
RAGFlow: Этот инструмент предлагает комплексную интеграцию компонентов RAG с возможностью настройки через конфигурации, а не код. Он поддерживает основные функции по извлечению данных из локальных файлов и их конвертацию в эмбеддинги, а также парсинг веб-ресурсов. Однако, для полноты функционала возможно потребуется интеграция дополнительных модулей.
NotebookLM: Данный инструмент предоставляет решение Zero-code, что делает его простым в эксплуатации для специалистов без глубоких навыков программирования. Он поддерживает чтение и парсинг различных форматов документов, но не обеспечивает встроенное скрейпинг веб-сайтов. Тем не менее, для этих целей возможно использовать сторонние решения, такие как конвертация сайтов в HTML или PDF.
Если ваших ожиданий не полностью оправдывают доступные инструменты, можно рассмотреть возможность комбинации нескольких фреймворков или использования специфических плагинов. К примеру, для скрейпинга веб-сайтов можно использовать инструменты, такие как BeautifulSoup или Scrapy, создавая HTML-документы и загружая их в выбранный фреймворк RAG.
Важно также учитывать возможность модернизации системы путем добавления функции LLM-агента, который обладал бы памятью и мог принимать автономные решения о модификации запросов. Это позволит системе адаптироваться к изменяющимся условиям и потребностям пользователей, непрерывно оптимизируя процессы извлечения и генерации. Интеграция такой функции может быть достигнута через использование передовых моделей, таких как GPT (Generative Pre-trained Transformer).
В итоге, при выборе подходящего фреймворка RAG стоит обратить внимание на готовность решений к интеграции без глубокого программирования, гибкость конфигурации, а также возможность расширения функционала при необходимости. Таким образом, можно обеспечить высокое качество работы системы вопросов и ответов с поддержкой современных технологий машинного обучения.