Модель не знает документов твоей компании. Отправлять их целиком каждый раз дорого и медленно. RAG (Retrieval-Augmented Generation) предлагает другой путь: сначала находим части, связанные с вопросом, а затем передаём модели только их.
Шаг 1: раздели документы на части
Документ делится на небольшие части (chunk). Если часть слишком большая, поиск теряет точность; если слишком маленькая, теряется контекст. К каждой части запиши источник: название документа и страница понадобятся для ссылки в ответе.
Шаг 2: embeddings
Embedding превращает текст в вектор из чисел: у близких по смыслу текстов близкие векторы. Векторы храним в базе, например в pgvector.
Шаг 3: поиск и ответ
// Превращаем вопрос в вектор const vector = await embed(question); // Находим в базе 5 ближайших частей const chunks = await db.query( "SELECT text, source FROM chunks ORDER BY embedding <=> $1 LIMIT 5", [toSql(vector)], ); // Передаём модели вопрос вместе с контекстом const answer = await ask(question, chunks);
Как измерить качество
- Подготовь набор тестов из реальных вопросов
- Проверь, находится ли нужная часть
- Измерь соответствие ответа источнику
- Запускай тесты после каждого изменения
В программе AI Software Developer RAG — отдельный модуль: ты создаёшь чат-бота по документам со ссылками на источники на азербайджанском и русском языках.
