Привет! На связи Валерия Елпатьевская, ментор курса «Инженер данных» 👋🏻
Думаете, дата-инженер — это человек, который просто переливает данные из одной базы в другую?
Это всё ещё является частью работы дата-инженера, но со временем начали появляться новые задачи. Сегодня всё больше задач связано с AI и RAG-системами. Данные всё ещё нужно «переливать», но только уже в векторные базы, при этом не ломая индекс. При этом желательно подумать об эффективности пайплайна и не делать одно и то же дважды.
Представьте: вчера вы проиндексировали 100 тысяч документов, а сегодня несколько из них изменились. Что делать?
Удалить всё и векторизовать заново? Долго и дорого. К тому же в продовой среде приведёт к временной недоступности документов.
Просто добавить новые векторы? Получим дубликаты.
Здесь на помощь приходит Record Manager из LangChain. Его задача — отслеживать, какие документы уже были проиндексированы, и понимать, что с ними произошло при следующем запуске пайплайна.
Самый простой вариант (для тестов) —
InMemoryRecordManager:record_manager = InMemoryRecordManager(
namespace="documents"
)
record_manager.create_schema()
В реальных проектах, конечно, используют record manager, который пишет информацию в базу данных, например, в SQLRecordManager. Но принцип работы у них один.
При индексации каждому документу задаётся уникальный идентификатор, например путь к файлу или ID записи в базе данных. Дальше достаточно передать этот ключ в функцию индексации с помощью
source_id_key="source".Самое интересное под капотом! После разбиения документа на чанки RecordManager вычисляет хэш для каждого чанка и сохраняет его вместе с информацией об источнике. При следующем запуске он снова вычисляет хэш и сравнивает с уже сохранённым.
Если хэш совпадает, значит, чанк не изменился и повторно считать эмбеддинг не нужно. А если хэш изменился, то чанк удаляется из векторной базы, а на его место записывается новый.
Получается, что одна небольшая настройка избавляет сразу от множества проблем: дубликатов, устаревших данных и лишних вычислений.
Именно такие детали редко обсуждают, когда говорят про RAG. А ведь именно они являются залогом надёжной системы, которую можно безопасно запускать в продакшене.
Такие детали — не сломать индекс, не задублировать чанки и не пересчитывать эмбеддинги зря — мы разбираем на курсе «Инженер данных». Если хотите строить RAG-пайплайны, которые выдерживают продакшен, а не разваливаются на втором запуске, — приходите: 26 июля завершается набор!
✅ Записаться на курс: simulative.ru/data-engineer
📈 Симулейтив | 📱 ВК | 📱 YouTube | 📱 Канал о DS