При построении AI-агентов, работающих с пользовательскими данными, Retrieval-Augmented Generation — это одна из основных технологий наряду с LLM, на которых строится разработка Gen-AI приложений.
Тем более важно понимать, как именно использовать данные в RAG-пайплайнах и от чего зависит эффективность их использования.
📌 Ключевой момент — подготовка данных для загрузки в индекс перед их использованием в RAG-системах.
В библиотеках типа Langchain уже реализованы абстракции, которые делают что-то с данными “под капотом“.
Фактически данные — изначально большие куски текста — разбиваются на куски поменьше, так называемые чанки.
И здесь всё становится сложнее и интереснее:
- Можно разбить текст по переносу строки, если превышен фиксированный лимит символов (так делает CharacterSplitter в Langchain)
- Можно применить чуть более сложный Recursive Chunking
🤔 Но как не потерять изначальный контекст при таком делении?
Для решения этой проблемы в индустрии появился Semantic Chunking и его вариации.
По сути, этот метод вычисляет сходство между векторами разных предложений и объединяет их в один чанк либо, наоборот, разделяет на основе некоторого порога сходства.
Таким образом, не теряются семантические связи при делении текста на чанки, и это очень важный момент для эффективного RAG.
⚙️ Технически Semantic Chunking сложнее, особенно при использовании моделей-эмбеддингов.
Можно:
- Обучить такую модель на наших GPU immers.cloud и собственных данных
- Взять готовую с HuggingFace
- Или воспользоваться API OpenAI
@ruslandevlive — мысли о современных AI/ML-технологиях
