Джина Советы
Исполнители внутри исполнителей. О боже!
Возьмите существующий Executor и просто заставьте его делать немного больше.
Недавно я создавал поисковую систему PDF с помощью Jina и начал сталкиваться с некоторыми проблемами, когда хотел выполнять более сложные операции. Вот как я ее решил, пройдя полную Исполнительную концепцию по проблеме.
Так в чем проблема?
Учитывая PDF, я хочу разбить его на изображения и предложения и сохранить их как куски:
Что я хочу
Но для этого и нужен PDFSegmenter, верно? Неправильный! PDFSegmenter разбивает PDF-файлы на изображения и любые фрагменты текста, которые он может найти. Эти капли могут быть довольно длинными и не обязательно являются предложениями.
Что мне дает PDFSegmenter
Как решить эту проблему?
Мы начнем с потока, который делает одну вещь — использует PDFSegmenter для разбиения нашего PDF на изображения и большие текстовые блоки:
После этого мы добавим новый Executor для обработки каждого фрагмента сегментированного PDF-файла:
Наш новый Исполнитель будет:
- Посмотрите на каждый фрагмент (назовем их фрагментами уровня 1) и проигнорируйте его, если это изображение.
- Если это текстовый фрагмент, загрузите Sentencizer Executor из Jina Hub, чтобы разбить его на предложения (назовем их фрагментами уровня 2).
- Скопируйте фрагменты уровня 2 на уровень 1.
Вот полный код:
Почему бы не сделать это прямо в потоке?
Поток отлично подходит, если вам просто нужно, чтобы данные передавались напрямую, и вам не нужно делать такие вещи, как проверка типов фрагментов. Если бы мы просто запустили это как:
Тогда Sentencizer захлебнулся бы изображениями, так как ожидает ввода только текста.
А вы?
Вы строили что-нибудь с Исполнителями внутри Исполнителей (внутри Исполнителей, внутри…)? Дайте нам знать через наше Slack-сообщество!