Нейросеть не знает содержимое вашей базы знаний — только то, что было в обучении. RAG (Retrieval-Augmented Generation) решает это: сначала находим нужные фрагменты документов, потом передаём их модели вместе с вопросом.
Как это работает
- Нарезка. Документы делятся на чанки по 500–1000 токенов с небольшим перекрытием.
- Эмбеддинги. Каждый чанк превращается в вектор чисел моделью embeddings.
- Хранение. Векторы складываются в векторную базу: pgvector, Qdrant, Chroma, Pinecone.
- Поиск. Вопрос тоже превращается в вектор, база возвращает 3–10 ближайших чанков.
- Ответ. Найденные фрагменты вставляются в промпт, и модель отвечает уже по ним.
Минимальный промпт
Ответь на вопрос, используя только контекст ниже. Если ответа в контексте нет — так и скажи. Контекст: … Вопрос: …
Что чаще всего ломается
- Слишком крупные чанки — поиск находит «примерно про это», а нужная деталь теряется.
- Нет перекрытия — смысл разрезается на границе двух кусков.
- Нет обновления индекса — документы поменялись, а ответы остались старыми.
- Нет цитат — пользователь не может проверить, откуда взялся ответ.
Когда RAG не нужен
Если база маленькая и помещается в контекст целиком, проще передать её сразу. RAG оправдан, когда документов сотни и они меняются.
Начать можно без векторной базы: десяток текстов, косинусное сходство на PHP или Python и тот же промпт. Главное — проверить, что найденные фрагменты действительно отвечают на вопрос.