Впитывая хаос: MLOps Behind Handling Unstructured Data Reliably at Scale for RAG
Данные генерируются быстрее, чем когда-либо прежде, во всех мыслимых формах. Эти данные - бензин, на котором будет работать новая волна приложений искусственного интеллекта, но эти двигатели повышения производительности нуждаются в помощи при заглатывании этого топлива. Широкий спектр сценариев и крайних случаев, связанных с неструктурированными данными, затрудняет их использование в производственных системах искусственного интеллекта.
Прежде всего, существует огромное количество источников данных. Они экспортируют данные в различные форматы файлов, каждый из которых имеет свои особенности. Например, способ обработки PDF-файла сильно зависит от того, откуда он был получен. При обработке PDF-файла для судебного дела о ценных бумагах, скорее всего, будут использоваться текстовые данные. В отличие от этого, спецификация системного дизайна для инженера-ракетчика будет полна диаграмм, требующих визуальной обработки. Отсутствие определенной схемы в неструктурированных данных еще больше усложняет задачу. Даже если проблема обработки данных решена, остается проблема их масштабного ввода. Файлы могут значительно отличаться по размеру, что меняет способ их обработки. Вы можете быстро обработать загрузку 1 МБ через API по HTTP, но чтение десятков гигабайт из одного файла требует потоковой передачи и специального рабочего.
Преодоление этих традиционных проблем, связанных с разработкой данных, является основной задачей при подключении необработанных данных к LLM с помощью векторных баз данных, таких как Milvus. Однако новые сценарии использования, такие как поиск семантического сходства с помощью векторной базы данных, требуют новых этапов обработки, таких как разбивка исходных данных, организация метаданных для гибридного поиска, выбор подходящей модели встраивания векторов и настройка параметров поиска для определения того, какие данные следует подавать в LLM. Эти рабочие процессы настолько новы, что для разработчиков не существует устоявшихся лучших практик, которым они могли бы следовать. Вместо этого им приходится экспериментировать, чтобы найти правильную конфигурацию и сценарий использования данных. Чтобы ускорить этот процесс, неоценимую помощь оказывает использование конвейера встраивания векторов для обработки данных, поступающих в векторную базу данных.
Конвейер встраивания векторов, такой как VectorFlow, соединит ваши необработанные данные с векторной базой данных, включая чанкинг, оркестровку метаданных, встраивание и загрузку. VectorFlow позволяет инженерным командам сосредоточиться на основной логике приложения, экспериментируя с различными параметрами поиска, генерируемыми моделью встраивания, стратегией разбивки на части, полями метаданных и аспектами поиска, чтобы увидеть, что работает лучше всего.
В своей работе, помогая инженерным командам продвигать свои системы расширенного поиска (RAG) от прототипа к производству, мы заметили, что следующий подход является успешным при тестировании различных параметров поискового конвейера RAG:
- Используйте небольшой набор данных, с которым вы знакомы для скорости итераций, например несколько PDF-файлов, в которых есть фрагменты, соответствующие поисковым запросам.
- Составьте стандартный набор вопросов и ответов по этому подмножеству данных. Например, после прочтения PDF-файлов составьте список вопросов и попросите команду согласовать ответы.
- Создайте автоматизированную систему оценки, которая оценивает, как поиск справляется с каждым вопросом. Один из способов сделать это - взять ответ из системы RAG и прогнать его через LLM с подсказкой, которая спрашивает, отвечает ли этот результат RAG на заданный вопрос правильно. Это должен быть ответ "да" или "нет". Например, если в ваших документах 25 вопросов, а система отвечает на 20, вы можете использовать этот результат для сравнения с другими подходами.
- Убедитесь, что для оценки используется другой LLM, чем для кодирования векторных вкраплений, хранящихся в базе данных. В качестве оценочного LLM обычно используется декодер типа модели GPT-4. Следует помнить о стоимости таких оценок при многократном выполнении. Модели с открытым исходным кодом, такие как Llama2 70B или Deci AI LLM 6B, которые могут работать на одном, более компактном GPU, имеют примерно такую же производительность при меньших затратах.
- Проведите каждый тест несколько раз и усредните результаты, чтобы сгладить стохастичность LLM.
Если оставить все параметры постоянными, кроме одного, можно быстро определить, какие из них лучше всего подходят для вашего случая. Конвейер встраивания векторов, такой как VectorFlow, особенно облегчает эту задачу на стороне встраивания, где вы можете быстро опробовать различные стратегии чанкинга, длину чанков, перекрытие чанков и модели встраивания из открытых источников, чтобы увидеть, что приводит к наилучшим результатам. Это особенно полезно, если набор данных содержит различные типы файлов и источники данных, требующие индивидуальной логики.
После того как команда определит, что подходит для конкретного случая, конвейер встраивания векторов позволит ей быстро перейти к производству без необходимости перепроектировать систему с учетом таких факторов, как надежность и мониторинг. Благодаря таким технологиям, как VectorFlow и Milvus, которые имеют открытый исходный код и не зависят от платформы, команда может эффективно тестировать различные среды, соблюдая при этом требования конфиденциальности и безопасности.
Try Managed Milvus for Free
Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.
Get StartedLike the article? Spread the word