Перейти к содержимому
19 / 28

Как собрать конвейер загрузки документов в RAG: разбор форматов, нормализация, эмбеддинги пачками и обновление только изменившихся документов?

Загрузка корпуса (corpus ingestion) — конвейер разбор файла → нормализация → [нарезка на фрагменты](/ru/knowledge/ai-rag/question/ce640eaa9db6c714922754808) → [эмбеддинги](/ru/knowledge/ai-rag/question/ce4f78600d3d6b878a3abc0bc) → запись в базу. Он должен быть идемпотентным — повторный запуск не плодит дубли (сверяем хеш содержимого и делаем upsert, то есть «вставить или обновить»), и инкрементальным — пересчитываем только изменившиеся документы (по метке времени последнего изменения или по потоку событий об изменениях). Разбор файлов: Unstructured.io, PyMuPDF, Apache Tika, загрузчики LangChain, AWS Textract / Reducto для распознавания сканов (OCR). Нормализация: определить кодировку (chardet) и язык (fasttext/langdetect), убрать дубликаты по sha256(содержимое). Эмбеддинги: пачками по 100–512 текстов, с повтором и растущей паузой при упоре в лимит запросов (rate limit). Оркестрация: Airflow / Dagster / Prefect для графов задач (DAG), или просто cron + очередь (BullMQ / RQ) для небольших корпусов.

Как собрать конвейер загрузки документов в RAG: разбор форматов, нормализация, эмбеддинги пачками и обновление только изменившихся документов? | JScriptiser