← Курс по Mastra · Урок 5
Урок 5 · ~8 минутОдна идея этого урока: RAG – это «умная библиотека» для агента. Вместо того чтобы запихивать все материалы в промпт, агент находит и читает только нужные страницы.
У вашей школы – сотни страниц: уроки, регламенты, ответы на вопросы. Засунуть всё в промпт нельзя: контекст ограничен, дорого, и модель начинает «терять» детали в массе текста. RAG (Retrieval-Augmented Generation) решает это в два этапа:
const doc = MDocument.fromMarkdown(текстКурса)
const chunks = await doc.chunk({ // 1. нарезка
strategy: 'markdown', maxSize: 512,
})
const { embeddings } = await embedMany({ // 2. смысловые отпечатки
model: 'openai/text-embedding-3-small',
values: chunks.map(c => c.text),
})
await vectorStore.upsert({ // 3. в векторную базу
indexName: 'school-knowledge',
vectors: embeddings,
})
Источник: документация Mastra, раздел RAG. Векторной базой может быть ваш PostgreSQL (pgvector) – отдельный сервис не нужен.
А дальше – самое приятное: готовый инструмент createVectorQueryTool отдаёт эту библиотеку агенту. Агент из урока 2 получает «руку», которой сам ищет по базе знаний, когда считает нужным.
| Ситуация | Решение |
|---|---|
| Материалов мало (пара страниц), меняются редко | Просто вложить в промпт |
| Сотни страниц, нужны точные ответы со ссылками на источник | RAG |
| Материалы часто обновляются | RAG: обновили базу – агент сразу отвечает по-новому, промпт трогать не надо |
1. Что такое embedding простыми словами?
2. Обновились цены на курсы. Что нужно сделать при подходе RAG?
💬 Спросите Claude Code: «что из материалов школы стоит положить в RAG-базу первым делом?»