Блокнот, борщ та безмежні знання: як Dockling робить ваші дані зрозумілими для ШІ
Привіт, друзі! Ліла Харт на зв’язку. Зараз ми зануримося в щось неймовірно захопливе, що може докорінно змінити ваш підхід до роботи зі штучним інтелектом. Останнім часом я активно спілкуюся з фахівцями різних напрямів – від розробників, які створюють передові диплернінг-моделі, до маркетологів, які намагаються зрозуміти, як ШІ може їм допомогти. І знаєте, яка проблема виникає найчастіше?
“Наші великі мовні моделі (LLM) – вони дуже розумні, майже всесильні… але знання їхні надто загальні. А нам потрібно, щоб вони розуміли специфіку НАШОГО бізнесу, НАШИХ документів, НАШИХ зустрічей!”
І ось тут стає найцікавіше. Звісно, можна постійно “згодовувати” купу документів ChatGPT, сподіваючись, що він там щось вихопить. Але, відверто кажучи, це як намагатися випити море ложкою. Такий підхід – неефективний, нудний і, швидше за все, не працює для серйозних завдань.
Саме тому тема Retrieval Augmented Generation (RAG), або, простіше кажучи, “генерації з доповненим пошуком”, стала такою популярною. Уявіть, що ви можете зробити зі свого штучного інтелекту справжнього експерта. Експерта саме у ВАШИХ даних. Будь то нотатки з робочих зустрічей, складні бізнес-процеси чи навіть сімейна історія, записана на старих аудіокасетах. Робити ШІ експертом – це те, на що спрямований RAG.
Але, як це часто буває, диявол криється в деталях. І головна “пекельна” деталь у RAG – це підготовка даних. Це той етап, коли ми витягуємо інформацію з наших документів, чистимо її, структуруємо і, зрештою, запихаємо у векторну базу даних, щоб наш ШІ міг нею користуватися. І знаєте що? Цей етап може бути ТРЕШ! Особливо, коли у вас не просто акуратні файли в Markdown, а купа різношерстих документів: PDF-файли, які ніхто не може нормально прочитати, Word-документи з таблицями та діаграмами, аудіо, відео… Як з усього цього витягти “чистий” текст, щоб він був зрозумілим для LLM?
“Ось проблема, яку ми сьогодні розв’яжемо. Ну, точніше, розв’яжемо її разом з одним чудовим інструментом.”
І цей інструмент – Dockling. Так, так, без зайвого пафосу – це безкоштовний інструмент з відкритим кодом, який може стати вашою паличкою-виручалочкою [Dockling]. Він допомагає працювати зі складними типами даних, готуючи їх для RAG-пайплайнів, незалежно від того, наскільки вони заплутані. Це означає, що ми зможемо працювати з таблицями, діаграмами, розірваними між сторінками текстами – з усім, що перетворює ваші документи на щось більше, ніж “сирий текст”.
Сьогодні буде насичений день:
- Ми розберемося, як Dockling працює і як його легко налаштувати.
- Подивимося, як він справляється з різними типами файлів.
- А на десерт – я покажу вам повноцінного RAG AI-агента, якого я зібрала, використовуючи Dockling. Він, до речі, доступний вам як шаблон.
Тож, сідайте зручніше, наливайте собі кави (чи чогось міцнішого, якщо тема здається складною ), і поїхали!
Розділ 1: Перше знайомство з Dockling: Коли PDF стає другом, а не ворогом
Знаєте, моя перша асоціація з PDF-документами – це нудні наукові статті, які доводилося читати в університеті, або договори, які важко розібрати. Але сучасні LLM потребують не просто тексту, а структурованої інформації. І ось тут Dockling робить справжній магічний трюк: він здатен витягати не лише текст, а й таблиці, діаграми, і все це – розумно.
Цікаво знати: Раніше, щоб витягти дані з PDF, доводилося писати сотні рядків коду, боротися з форматуванням, перевіряти, чи не “з’їхала” таблиця. Це було справжнє пекло для розробника.
Dockling перетворює це на кілька простих кроків. По суті, це Python-пакет. Встановити його – як двічі два [pip install dockling]:
bash pip install dockling
І все! Далі є чудовий файлик readme і документація, де все детально описано. Але ми ж любимо історії, тому давайте зануримося в реальні приклади.
Перший крок – це базове вилучення тексту та таблиць з PDF. Уявіть, що у вас є PDF з кодом, діаграмами, таблицями. Як його перетворити на щось, що зрозуміє ШІ?
Ось простий приклад коду:
“`python
from dockling import DocConverter
Шлях до вашого PDF-файлу
pdf_path = “path/to/your/complex_document.pdf”
Створюємо конвертер
converter = DocConverter()
Конвертуємо документ. Dockling сам визначить тип файлу.
document = converter.convert(pdf_path)
Тепер ми можемо експортувати його в різні формати.
Markdown – найкращий варіант для LLM.
document.export_to_markdown(“output.md”)
“`
І це все! Кілька рядків коду, а на виході – чистий, структурований .md файл. Я дивилася на цей приклад, і це просто неймовірно! Уявіть собі PDF, який виглядає як лабіринт з форматування, а Dockling витягує звідти текст, таблиці, ніби художник малює портрет.
Не робіть те, що я колись робила: Коли ви працюєте з PDF, особливо з тими, що мають багато зображень чи складний дизайн, ви можете захотіти витягти все, включаючи картинки. Не захоплюйтесь одразу! Спочатку зосередьтеся на тексті та таблицях, а вже потім додавайте складніші елементи. Dockling це вміє, але почніть з простого.
Найкраще в цьому те, що Dockling працює з OCR (Optical Character Recognition – оптичне розпізнавання символів) “під капотом”. Тобто, навіть якщо ваш PDF – це просто зображення тексту (зроблений, наприклад, сканом), Dockling все одно спробує витягти текст. Це як коли ти дивишся на старий бабусин рецепт, написаний від руки, і намагаєшся його розшифрувати – тільки тут це робить машина, і робить це доволі швидко.
Після такої обробки, ви отримаєте файл, готовий стати частиною вашої векторної бази даних. Це вже не просто “сухий” текст, а інформація, що зберегла свою структуру. Це перший, але дуже важливий крок до створення справді розумного ШІ-помічника.
Розділ 2: Мультиформатний балет: Як Dockling танцює з різними файлами
Ми звикли думати, що найкращий друг LLM – це чистий текст. Але в реальному житті наші дані – це справжня поліглотська вечірка! PDF, Word, Markdown, аудіо, відео… Як все це зібрати докупи?
Dockling бере на себе і цей виклик. Його краса в тому, що він автоматично розпізнає тип файлу за його розширенням і застосовує потрібну логіку. Вам не потрібно писати окремий код для кожного типу файлу. Просто даєте йому список, і він робить свою магію.
Уявіть собі: у вас є папка з документами:
- Кілька PDF-ів з презентаціями.
- Word-документ з нотатками з останньої зустрічі.
- Файл Markdown, де вже є структурований опис проєкту.
- Навіть старий аудіозапис, який треба перетворити на текст.
Як це працює з Dockling? Дуже просто.
“`python
from dockling import DocConverter
Список файлів, з якими ми хочемо працювати
file_list = [
“docs/presentation1.pdf”,
“docs/meeting_notes.docx”,
“docs/project_description.md”,
“audio/recording.mp3”
]
converter = DocConverter()
for file_path in file_list:
# Перетворюємо кожен документ
document = converter.convert(file_path)
# Експортуємо в Markdown (або будь-який інший формат)
output_filename = f”output/{document.name}.md”
document.export_to_markdown(output_filename)
print(f”Processed and exported: {output_filename}”)
“`
Інколи здається, що це детективна історія: “знайди всі документи, розшифруй їх, перетвори на зрозумілу мову”. Але Dockling робить це настільки елегантно, що ти просто відчуваєш себе спостерігачем.
“Ми створюємо DocConverter, а потім просто проходимося по списку файлів. Dockling розуміє: Ага, це PDF – треба робити OCR і витягувати таблиці. Це DOCX – акуратно витягти текст і форматування. Це MP3 – ага, тут треба викликати транскрипцію!”
Найцікавіше – це робота з аудіо. Щоб перетворити мову на текст, Dockling використовує такі інструменти, як OpenAI Whisper [OpenAI Whisper]. Це open-source модель, яка працює локально, що дуже важливо для безпеки та конфіденційності даних. Потрібно буде встановити кілька додаткових залежностей, наприклад, FFmpeg [FFmpeg], але це теж доволі стандартні речі.
“`python
Приклад роботи з аудіо (спрощено)
audio_path = “audio/my_voice_memo.mp3”
converter = DocConverter()
document = converter.convert(audio_path) # Dockling зрозуміє, що це аудіо
document.export_to_markdown(“audio_transcript.md”)
“`
І ось – магія! Ваш аудіофайл перетворюється на текстовий документ, який можна додати до загальної бази знань. І що найприємніше – Dockling може додати часові мітки до кожної фрази. Це для RAG-систем справжній подарунок, бо дозволяє більш точно пов’язувати відповіді з джерелом.
“Це як порівняти бабусин борщ, який ти їв у дитинстві, з магазинним напівфабрикатом. Одне – живе, ароматне, з душею, інше – просто їжа. Dockling додає “душу” нашим даним.”
У результаті, всі ці різноформатні файли опиняються в одній папці, всьому у форматі Markdown. Це така собі “ідеальна” база даних для LLM, до якої ми прагнемо.
Розділ 3: “Нарізаємо” знання: Як Dockling готує дані для швидкого сприйняття
Ми вже вміємо витягувати дані з різних файлів і перетворювати їх на Markdown. Здавалося б, це вже половина справи. Але ні! Навіть якщо у вас є чудовий, чистий текст, просто “закинути” його цілком у векторну базу даних – як намагатися запхати слона у шкарпетку. Це не працює.
LLM, особливо в рамках RAG, потребують даних, розділених на невеликі, але змістовні “шматочки” – чанки. Це як порції для обіду: ви не з’їдаєте цілу курку одразу, а розбираєте її на частини. Ці чанки мають бути достатньо малими, щоб LLM могла їх обробляти, але при цьому містити достатньо контексту для відповіді на запитання.
“Знаєте, це як у готуванні. Якщо ви хочете зробити ідеальний коктейль, ви додаєте інгредієнти по черзі, правильно їх змішуючи. Якщо ж просто залєте їх всі одразу – вийде якась гидота.”
Але як визначити “правильні” межі для цих чанків? Де саме розділяти текст, щоб не розірвати речення, параграф чи список? Це технічно складне завдання. І знову ж таки, Dockling приходить на допомогу.
Він пропонує кілька стратегій для чанкингу, але одна з них – гібридний чанкинг – просто вражає.
Уявіть, що ви використовуєте модель, яка розуміє семантичну схожість – тобто, наскільки близькі за значенням різні речення чи параграфи. Гібридний чанкинг використовує цю модель, щоб знаходити в документі такі точки розриву, де можна розділити текст, зберігаючи при цьому основні ідеї в кожному шматочку.
“Це як коли ви слухаєте пісню і чуєте, де має закінчитися куплет і початися приспів. Або де зробити паузу, щоб підкреслити важливу фразу.”
Як це реалізується на практиці? Ви створюєте спеціальний об’єкт HybridChunked і застосовуєте його до документа, який вже опрацював Dockling.
“`python
from dockling import DocConverter
from dockling.chunking import HybridChunker
pdf_path = “path/to/your/document.pdf”
converter = DocConverter()
document = converter.convert(pdf_path)
Створюємо гібридний чанкер
Можна налаштовувати параметри, але за замовчуванням працює чудово
chunker = HybridChunker()
Застосовуємо чанкинг до документа
result_chunks – це список готових чанків
result_chunks = chunker.chunk(document)
Тепер ці чанки готові до завантаження у векторну базу даних
for chunk in result_chunks:
print(f”Chunk text: {chunk.text}”)
print(f”Metadata: {chunk.metadata}”)
print(“-” * 20)
“`
Згадайте, як ми працювали з PDF раніше? Ми отримували один великий Markdown-файл. Тепер, використовуючи HybridChunker, ми отримуємо список маленьких, але змістовних шматочків тексту. Кожен шматочок – це потенційна відповідь на запитання користувача.
“Це як коли ви готуєте великий торт. Ви спочатку печете коржі, потім крем, а вже потім все збираєте. Dockling робить саме ці “коржі”.”
Зазвичай, у таких чанках зберігається інформація про їхній розмір (у токенах), щоб можна було контролювати, наскільки великими вони будуть. Dockling дозволяє це налаштувати, але головне – він робить це розумно, намагаючись зберегти цілісність інформації.
Після такого чанкингу, ці шматочки стають ідеальними кандидатами для завантаження у векторну базу даних. І це вже не просто текст, а структурована база знань, готова для пошуку та генерації відповідей.
Розділ 4: AI-агент, що говорить вашою мовою: Як Dockling стає серцем RAG-системи
Ми пройшли довгий шлях: від загальних знань LLM до специфічної інформації у ваших файлах, пройшовши крізь потужний фільтр Dockling. Тепер настає момент істини: як усе це поєднати в один живий, розумний AI-агент?
Уявіть собі: у вас є колекція документів – PDF, Word, аудіо – все це оброблено Dockling, чанки готово. Ці чанки тепер зберігаються у векторній базі даних. Найчастіше для цього використовують PostgreSQL з розширенням pgvector [pgvector], але можна й інші, як Pinecone [Pinecone] чи Quadrant [Quadrant].
Саме ці чанки є “знаннями” для вашого агента. Коли користувач ставить запитання, відбувається таке:
- Запит користувача перетворюється на вектор (миттєве представлення значення запиту).
- Цей вектор шукає найближчі (найбільш схожі за змістом) вектори у базі. Це і є пошук релевантних чанків.
- Знайдені чанки (тобто, найбільш підходящі шматочки інформації) разом з оригінальним запитом користувача подаються у велику мовну модель (LLM).
- LLM, маючи цей додатковий контекст, генерує точну, релевантну відповідь.
“Це як коли ваш друг-експерт не просто вам щось розповідає, а ще й показує фото, цитує документи, грає відповідний аудіозапис. Він дає вам повну картину.”
Я створила для вас такого AI-агента як шаблон. Це проєкт на GitHub [шаблон], який ви можете взяти і розвивати. Він поєднує в собі всі ті елементи, про які ми говорили:
- Парсинг з Dockling: Обробка PDF, DOCX, MP3 файлів.
- Гібридний чанкинг: Розумне розділення даних на змістовні шматочки.
- Векторна база даних: Зберігання цих чанків.
- Python-бібліотека для AI-агентів (наприклад, LangChain або Pydantic AI): Оркестрація всього процесу.
Ось як це виглядає в коді (спрощено):
“`python
Приклад логіки агента
from agent_tools import SearchKnowledgeBaseTool
from pydantic_ai import AI
Ініціалізуємо інструмент для пошуку в базі даних
search_tool = inject(SearchKnowledgeBaseTool) # Тут завантажуємо чанки з БД
Створюємо AI-агента
agent = AI(
tools=[search_tool],
system_prompt=”You are an AI assistant that answers questions based on the provided documents.”
)
Отримуємо запит користувача
user_query = “What was the ROI mentioned in Global Finance audio file?”
Агент використовує інструмент пошуку, щоб знайти відповідь
response = agent.run(user_query)
print(response)
“`
У цьому шаблоні ви побачите, як Dockling використовується на етапі підготовки даних. Він бере файли (ми тут використовували PDF, Word, MP3), витягує з них інформацію, робить гібридний чанкинг, і все це записує у базу даних. Потім агент використовує цю базу для відповіді на запитання.
“Я спеціально зробила так, щоб ви могли запитати, наприклад, про ROI (Return on Investment) з аудіофайлу. І агент, завдяки Dockling, знайде цю інформацію. Це був один з моїх тестів – чи зможемо ми дістати цифри з аудіо?”
І знаєте що? Це працює! Агент видає правильну відповідь, навіть роблячи посилання на те, з якого типу даних була отримана інформація.
“Я справді пишаюся цим проєктом. Це не просто демонстрація Dockling, це цілісний приклад того, як будувати потужні RAG-системи, які можуть працювати з реально складними даними.”
Звісно, це лише початок. Dockling має ще багато можливостей, наприклад, він може навіть малювати рамки навколо зображень у PDF, звідки він отримав інформацію. Це вже майже як наукова фантастика!
Висновок: Ваш особистий генератор знань – вже в дії
Ми з вами пройшли шлях від загального розуміння LLM до конкретних інструментів, які роблять ці моделі по-справжньому корисними. Запам’ятайте: проблема не в тому, що ШІ недостатньо розумний, а в тому, що йому бракує ваших специфічних знань.
І саме тут на сцену виходить Dockling. Це не просто черговий інструмент. Це міст між вашими складними, різноформатними даними та потужністю великих мовних моделей. Dockling розв’язує головну проблему RAG – підготовку даних. Він здатен витягувати інформацію з PDF, Word, аудіо, робити розумне розділення тексту на чанки, і все це – легко, швидко і без зайвого клопоту.
Підсумовуючи все вищесказане, якщо ви хочете будувати власні AI-агенти, створювати системи, які розуміють вашу компанію, свої документи, свої процеси, тоді Dockling – це те, що вам обов’язково потрібно мати у своєму арсеналі. Разом з іншими помічниками, як-от Crawl for AI (для веб-даних) [Crawl for AI], Dockling покриває 99% потреб щодо вилучення даних для RAG.
У підсумку маємо:
- Проблема: LLM потребують специфічних знань, які часто зберігаються у складних форматах.
- Рішення: RAG-системи збирають ці знання з ваших документів.
- Виклик: Підготовка даних для RAG – важка справа.
- Відповідь: Dockling – це безкоштовний open-source інструмент, який робить підготовку даних (парсинг, чанкинг) надзвичайно простою.
- Результат: Потужні AI-агенти, які розуміють ваш контекст.
Що далі?
- Спробуйте Dockling самостійно! Загляньте в репозиторій на GitHub [Dockling], подивіться приклади. Навіть для простих завдань він може бути неймовірно корисним.
- Скористайтесь шаблоном AI-агента, який я залишила у описі. Це чудовий старт для вашого власного проєкту.
- Не бійтеся експериментувати. Можливо, ви виявите нові, неочікувані способи використання Dockling.
Технології штучного інтелекту розвиваються шаленими темпами. Але найголовніше – це не сама технологія, а те, як ми її застосовуємо. З Dockling ви отримуєте потужний інструмент, щоб зробити ваш ШІ не просто розумним, а ще й по-справжньому корисним саме для вас.
Якщо вам сподобався цей матеріал, і ви хочете більше подібного – ставте лайк, підписуйтесь на мій канал. Це мотивує мене створювати ще більше цікавого контенту.
До зустрічі в наступному пості! Залишайтеся на зв’язку і будьте в курсі технологічних трендів!







