Видение - это все, что вам нужно: создание интеллектуальной системы поиска документов с использованием визуальных языковых моделей (Vision RAG)

Общее введение

Vision-is-all-you-need - это инновационный демонстрационный проект визуальной системы RAG (Retrieval Augmented Generation), который открывает новые возможности применения моделирования визуального языка (VLM) в области обработки документов. В отличие от традиционных методов разбиения текста на части, система напрямую использует визуальную языковую модель для обработки изображений страниц PDF-файлов, преобразуя их в векторную форму для хранения. В качестве основной модели визуального языка система использует ColPali, векторную базу данных QDrant для эффективного поиска, а также интегрирует GPT4 или GPT4-mini для интеллектуальных вопросов и ответов. Проект полностью реализует весь процесс от импорта PDF-документов, преобразования изображений, векторного хранения до интеллектуального поиска, предоставляет удобный API-интерфейс и дружественный внешний интерфейс, что обеспечивает совершенно новое решение в области интеллектуальной обработки документов.

Vision is All You Need:使用视觉语言模型构建智能文档检索系统(Vision RAG)

Адрес для демонстрации: https://softlandia-ltd-prod--vision-is-all-you-need-web.modal.run/

 

Список функций

  • Встраивание страниц PDF: Преобразует страницы PDF-файла в изображения и вставляет их в виде векторов, используя визуальную языковую модель.
  • Хранение векторной базы данных: Используйте Qdrant в качестве векторной базы данных для хранения векторов встроенных изображений.
  • Поиск запросов: Пользователь может запросить векторы, похожие на встроенное изображение, и получить ответ.
  • Интерфейс API: Предоставление RESTful API-интерфейса для загрузки, запроса и получения файлов.
  • Взаимодействие с внешним миром: через React Внешний интерфейс взаимодействует с API, обеспечивая удобство работы.

 

Использование помощи

Процесс установки

  1. Установка Python 3.11 или более поздней версии::
   pip install modal
modal setup
  1. Настройка переменных среды: Создать .env файл и добавьте следующее:
   OPENAI_API_KEY=your_openai_api_key
HF_TOKEN=your_huggingface_token
  1. пример работы::
   modal serve main.py

Пример использования

  1. Загрузка файлов PDF: Откройте браузер, перейдите по URL-адресу, предоставленному Modal, и добавьте к нему следующее /docs. Нажмите POST /collections выберите Try it out чтобы загрузить PDF-файл и выполнить его.
  2. Запрос похожих страниц: Использование POST /search конечной точки, отправляет изображения страниц и запросы к API OpenAI и возвращает ответ.

внешняя разработка

  1. Установка Node.js::
   cd frontend
npm install
npm run dev
  1. Настройка внешней среды: Модификация .env.development добавьте URL-адрес бэкэнда:
   VITE_BACKEND_URL=your_backend_url
  1. Запуск фронтальной части::
   npm run dev

Подробная процедура работы

  1. Встраивание страниц PDF::
    • пользоваться pypdfium Преобразование страниц PDF в изображения.
    • Передайте изображение в модель визуального языка (например, ColPali), чтобы получить вектор встраивания.
    • Хранит векторы встраивания в базе данных векторов Qdrant.
  2. Поиск запросов::
    • Пользователь вводит запрос, а вектор встраивания запроса получается с помощью визуальной языковой модели.
    • Поиск похожих векторов встраивания в базе данных векторов.
    • Запрос и наиболее подходящее изображение передаются модели (например, GPT4o) для создания ответа.
  3. Использование API::
    • Загрузка файлов PDF: через POST /collections Конечные точки загружают файлы.
    • Запрашивать похожие страницы: by POST /search Конечная точка отправляет запрос и получает ответ.
  4. Взаимодействие с внешним миром::
    • Используйте внешний интерфейс React для взаимодействия с API.
    • Обеспечивает функции загрузки файлов, ввода запросов и отображения результатов.

 

Ссылка на статью: создание RAG? Устали от чурбанов? Возможно, видение - это все, что вам нужно!

Vision is All You Need:使用视觉语言模型构建智能文档检索系统(Vision RAG)

 

В основе большинства современных решений генеративного ИИ (GenAI) лежит нечто, называемое RAG Метод Retrieval-Augmented Generation (RAG) часто называют "RAG" инженеры-программисты в области прикладного ИИ. Инженеры-программисты в области прикладного ИИ часто называют его "RAG". С помощью RAG языковые модели могут отвечать на вопросы на основе собственных данных организации.

Первая буква R в слове RAG означает Retrieve (поиск), относящиеся к процессу поиска. Когда пользователь задает роботу GenAI вопрос, поисковая система в фоновом режиме должна найти именно тот материал, который относится к вопросу, чтобы сгенерировать идеальный ответ без галлюцинаций. A и G означают ввод полученных данных в языковую модель и генерацию окончательного ответа, соответственно.

В этой статье мы сосредоточимся на процессе поиска, поскольку он является наиболее важной, трудоемкой и сложной частью реализации архитектуры RAG. Сначала мы рассмотрим общую концепцию поиска, а затем представим традиционный механизм поиска RAG на основе кусков. Вторая половина статьи посвящена новому подходу RAG, который использует данные изображений для поиска и генерации.

Краткая история информационного поиска

Компания Google и другие крупные поисковые системы уже несколько десятилетий пытаются решить проблему поиска информации - ключевое слово "пытаются". Но поиск информации все еще не так прост, как ожидалось. Одна из причин заключается в том, что люди обрабатывают информацию иначе, чем машины. Перевести естественный язык в разумные поисковые запросы по различным массивам данных не так-то просто. Продвинутые пользователи Google, возможно, знакомы со всеми возможными приемами манипулирования поисковой системой. Но процесс все равно остается громоздким, а результаты поиска могут быть весьма неудовлетворительными.

С развитием языковых моделей информационный поиск внезапно обрел интерфейс на естественном языке. Однако языковые модели плохо справляются с предоставлением информации, основанной на фактах, поскольку их обучающие данные отражают моментальный снимок мира на момент обучения. Кроме того, знания сжимаются в модели, и известная проблема иллюзий неизбежна. В конце концов, языковые модели - это не поисковые системы, а рассуждающие машины.

Преимущество языковой модели в том, что ей можно предоставить образцы данных и инструкции и попросить ответить на основе этих данных. Это ChatGPT и типичные сценарии использования подобных интерфейсов разговорного ИИ. Но люди ленивы, и при тех же усилиях вы могли бы решить эту задачу самостоятельно. Вот почему нам нужен RAG: мы можем просто задавать вопросы прикладным ИИ-решениям и получать ответы, основанные на точной информации. По крайней мере, это идеальная ситуация в мире, где поиск совершенен.

Как работает поиск в традиционном RAG?

Методы поиска в RAG столь же разнообразны, как и сами реализации RAG. Поиск - это всегда проблема оптимизации, и не существует типового решения, которое можно было бы применить ко всем сценариям: архитектура ИИ должна быть адаптирована к каждому конкретному решению, будь то поиск или другая функциональность.

Тем не менее, типичным базовым решением является так называемая техника разбиения на части. В этом подходе информация, хранящаяся в базе данных (обычно это документы), разбивается на небольшие фрагменты, размером примерно с абзац. Затем каждый кусок преобразуется в числовой вектор с помощью модели встраивания, связанной с языковой моделью. Сгенерированные числовые векторы хранятся в специальной базе данных векторов.

Простой поиск в векторной базе данных реализуется следующим образом:

  1. Пользователь задает вопрос.
  2. Сгенерируйте вектор встраивания из задачи.
  3. Выполнение семантического поиска в векторной базе данных.
    1. При семантическом поиске близость между векторами вопросов и векторами в базе данных измеряется математически, с учетом контекста и смысла текстового блока.
  4. Векторный поиск возвращает, например, 10 наиболее подходящих блоков текста.

Затем извлеченный блок текста вставляется в контекст (cue) языковой модели, и модель просят сгенерировать ответ на исходный вопрос. Эти два этапа после извлечения текста являются фазами A и G в RAG.

Методы разбивки на части и другие виды предварительной обработки перед индексированием могут существенно повлиять на качество поиска. Существуют десятки таких методов предварительной обработки, и информация также может быть упорядочена или отфильтрована (так называемое переупорядочивание) после поиска. В дополнение к векторному поиску можно использовать традиционный поиск по ключевым словам или любой другой программный интерфейс для получения структурированной информации. В качестве примера можно привести методы text-to-SQL или text-to-API для генерации новых SQL- или API-запросов на основе вопросов пользователя. Для неструктурированных данных наиболее распространенными методами извлечения информации являются чанкинг и векторный поиск.

Чанкинг не лишен проблем. Работа с различными форматами файлов и данных громоздка, и для каждого формата необходимо писать отдельный код чанкинга. Хотя существуют готовые программные библиотеки, они не идеальны. Кроме того, необходимо учитывать размер фрагментов и перекрывающиеся области. Далее вы сталкиваетесь с проблемой изображений, графиков, таблиц и других данных, где понимание визуальной информации и окружающего контекста (например, заголовков, размера шрифта и других тонких визуальных признаков) является критически важным. И эти подсказки полностью теряются при использовании методов разбивки на части.

А что, если такая разбивка на куски совершенно не нужна и поиск похож на просмотр человеком целой страницы документа?

Изображения сохраняют визуальную информацию

Методы поиска по изображениям стали возможны благодаря развитию передовых мультимодальных моделей. Примером ИИ, основанного на данных изображений, является решение Tesla для самостоятельного вождения, которое полностью опирается на камеры. Идея подхода заключается в том, что человек воспринимает окружающее пространство в основном с помощью зрения.

Та же концепция применима и к реализации RAG. В отличие от разбиения на части, целые страницы индексируются непосредственно как изображения, т. е. в том же формате, в котором их мог бы увидеть человек. Например, каждая страница PDF-документа поступает в специальную модель искусственного интеллекта в виде изображения (например. ColPali), модель создает векторные представления на основе визуального контента и текста. Затем эти векторы добавляются в базу данных векторов. Мы можем называть эту новую архитектуру RAG Визуальный поиск Улучшенная генерация(Vision Retrieval-Augmented Generation, или V-RAG).

Преимуществом такого подхода может быть более высокая точность поиска по сравнению с традиционными методами, поскольку мультимодальная модель генерирует векторное представление, учитывающее как текстовые, так и визуальные элементы. Результатом поиска будут все страницы документа, которые затем в виде изображений поступают в мощную мультимодальную модель, такую как GPT-4. Модель может напрямую ссылаться на информацию в графиках или таблицах.

V-RAG избавляет от необходимости сначала извлекать сложные структуры (например, диаграммы или таблицы) в текст, затем перестраивать этот текст в новый формат, хранить его в векторной базе данных, извлекать, переупорядочивать для формирования связных подсказок и в конечном итоге генерировать ответы. Это значительное преимущество при работе со старыми руководствами, документами с большим количеством таблиц и любыми документами, ориентированными на человека, где содержимое представляет собой нечто большее, чем обычный текст. Индексирование также происходит гораздо быстрее, чем традиционные процессы распознавания макетов и OCR.

Vision is All You Need:使用视觉语言模型构建智能文档检索系统(Vision RAG)

Статистика скорости индексирования в ColPali Papers

Тем не менее, извлечение текста из документов по-прежнему ценно и может помочь при поиске по изображениям. Однако в скором времени чанкинг станет одним из многих вариантов реализации поисковой системы с искусственным интеллектом.

Vision-RAG на практике: Paligemma, ColPali и векторные базы данных

В отличие от традиционного текстового RAG, реализация V-RAG по-прежнему требует доступа к специализированным моделям и вычислениям на GPU. Лучшей реализацией V-RAG является использование моделей, разработанных специально для этой цели ColPali.

В основе ColPali лежит многовекторный подход к поиску, представленный моделью ColBERT и мультимодальной языковой моделью Paligemma от Google. ColPali - это мультимодальная модель поиска, что означает, что она понимает не только текстовое содержание, но и визуальные элементы документа. Фактически, разработчики ColPali расширили текстовый подход к поиску ColBERT, чтобы охватить визуальную область, используя Paligemma.

При создании вставки ColPali делит каждое изображение на сетку 32 x 32, при этом каждое изображение имеет примерно 1024 чанка, каждый из которых представлен 128-мерным вектором. Общее количество чанков составляет 1030, поскольку к каждому изображению также прикрепляется токен команды "описать изображение".

Текстовый запрос пользователя преобразуется в то же пространство вкраплений, чтобы в процессе поиска сравнивать фрагменты с частью запроса. Сам процесс поиска основан на так называемом методе MaxSim в эта статья Он подробно описан в статье. Этот метод поиска был реализован во многих векторных базах данных, поддерживающих многовекторный поиск.

Видение - это все, что вам нужно - демонстрация и код V-RAG

Мы создали демо-версию V-RAG, и код доступен в репозитории GitHub компании Softlandia! vision-is-all-you-need Найти в. Вы также можете найти другие демо-версии Applied AI в нашем аккаунте!

Для запуска ColPali требуется GPU с большим объемом памяти, поэтому проще всего запустить его на облачной платформе, позволяющей использовать GPU. По этой причине мы выбрали отличную платформу Modal, которая делает бессерверное использование GPU простым и доступным.

В отличие от большинства академических онлайн-презентаций Jupyter Notebook, наша Видение - это все, что вам нужно Демонстрация предоставляет уникальный практический опыт. Вы можете клонировать репозиторий, самостоятельно развернуть его и запустить полный конвейер на облачных GPU за считанные минуты бесплатно. Этот пример сквозной разработки искусственного интеллекта для приложений выделяется тем, что обеспечивает реальный опыт, с которым не может сравниться большинство других демонстраций.

В этой демонстрации мы также использовали Qdrant Версия Qdrant для работы с памятью. Обратите внимание, что при запуске демо-версии индексированные данные исчезают после того, как базовый контейнер прекращает свое существование.Qdrant поддерживает многовекторный поиск начиная с версии 1.10.0. Демонстрация поддерживает только PDF-файлы, страницы которых преобразуются в изображения с помощью библиотеки pypdfium2. Кроме того, мы использовали библиотеку transformers и colpali-engine, созданную разработчиками ColPali, для запуска модели ColPali. Также используются и другие библиотеки, например opencv-python-headless (кстати, это моя работа).

Демонстрация предоставляет HTTP-интерфейс для индексирования и задавания вопросов. Кроме того, мы создали простой пользовательский интерфейс с помощью React. Пользовательский интерфейс также визуализирует каждый Токен карта внимания, позволяющая легко просматривать те части изображения, которые модель ColPali считает важными.

Vision is All You Need:使用视觉语言模型构建智能文档检索系统(Vision RAG)

Скриншоты демо-версии игры Vision is All You Need

Действительно ли видение - это то, что вам нужно?

Несмотря на название демонстрации, поисковые модели типа ColPali еще недостаточно хороши, особенно для многоязычных данных. Такие модели обычно обучаются на ограниченном количестве примеров, которые почти всегда представляют собой PDF-файлы определенного типа. В результате демо-версия поддерживает только PDF-файлы.

Другой проблемой является размер данных изображений и вычисляемых на их основе вкраплений. Эти данные занимают значительное пространство, и поиск в больших массивах данных потребляет гораздо больше вычислительной мощности, чем традиционный поиск по одномерным векторам. Эта проблема может быть частично решена путем квантования вкраплений в более мелкие формы (вплоть до двоичных). Однако это приводит к потере информации и незначительному снижению точности поиска. В нашей демонстрации квантование пока не реализовано, так как оптимизация для нее не важна. Кроме того, важно отметить, что Qdrant пока не поддерживает бинарные векторы напрямую.Но он может Обеспечение квантификации в QdrantQdrant будет оптимизировать векторы внутренним образом. Однако MaxSim, основанный на расстоянии Хэмминга, пока не поддерживается.

По этой причине все же рекомендуется проводить первоначальную фильтрацию в сочетании с традиционным поиском по ключевым словам, прежде чем использовать ColPali для окончательного поиска страниц.

Мультимодальные модели поиска будут развиваться, как и модели встраивания, которые традиционно генерируют текстовые вставки. Я уверен, что OpenAI или другая подобная организация вскоре выпустит модель встраивания, подобную ColPali-модели, которая поднимет точность поиска на новый уровень. Однако это поставит крест на всех существующих системах, построенных на чанкинге и традиционных методах векторного поиска.

Без гибкой архитектуры ИИ вы отстанете от жизни

Языковые модели, методы поиска и другие инновации появляются в сфере ИИ ускоренными темпами. Важнее самих инноваций - способность быстро их внедрять, что дает значительное конкурентное преимущество тем компаниям, которые опережают своих конкурентов.

Поэтому архитектура ИИ вашего программного обеспечения, включая функцию поиска, должна быть гибкой и масштабируемой, чтобы она могла быстро адаптироваться к последним технологическим инновациям. По мере ускорения развития очень важно, чтобы архитектура вашей системы не ограничивалась одним решением, а поддерживала разнообразные методы поиска - будь то традиционный текстовый поиск, мультимодальный поиск по изображениям или даже совершенно новые модели поиска.

ColPali - это лишь вершина айсберга будущего. RAG-решения будущего будут сочетать в себе множество источников данных и технологий поиска, и только гибкая и настраиваемая архитектура обеспечит их бесшовную интеграцию.

Чтобы решить эту проблему, мы предлагаем следующие услуги:

  • Оцените состояние существующей архитектуры искусственного интеллекта
    • Глубокое погружение в технологии искусственного интеллекта с вашими техническими руководителями и разработчиками, включая детали на уровне кода
    • Мы изучаем методы поиска, масштабируемость, гибкость архитектуры, безопасность, а также то, используется ли (генеративный) ИИ в соответствии с лучшими практиками.
    • Предлагает улучшения и перечисляет конкретные дальнейшие шаги по развитию
  • Внедрение возможностей искусственного интеллекта или платформы искусственного интеллекта в вашей команде
    • Выделенные инженеры по прикладным ИИ гарантируют, что ваши проекты по ИИ не будут отставать от других задач разработки.
  • Разработка продуктов искусственного интеллекта в качестве аутсорсинговой команды по разработке продуктов
    • Мы предоставляем комплексные решения на основе ИИ от начала и до конца

Мы помогаем нашим клиентам получить значительное конкурентное преимущество, ускоряя внедрение ИИ и обеспечивая его беспрепятственную интеграцию. Если вы хотите узнать больше, свяжитесь с нами, чтобы обсудить, как мы можем помочь вашей компании оставаться на переднем крае развития ИИ.

© заявление об авторских правах

Похожие статьи

Нет комментариев

Вы должны войти в систему, чтобы участвовать в комментариях!
Войти сейчас
нет
Нет комментариев...