Нейросеть не знает содержимое вашей базы знаний — только то, что было в обучении. RAG (Retrieval-Augmented Generation) решает это: сначала находим нужные фрагменты документов, потом передаём их модели вместе с вопросом.

Как это работает

  1. Нарезка. Документы делятся на чанки по 500–1000 токенов с небольшим перекрытием.
  2. Эмбеддинги. Каждый чанк превращается в вектор чисел моделью embeddings.
  3. Хранение. Векторы складываются в векторную базу: pgvector, Qdrant, Chroma, Pinecone.
  4. Поиск. Вопрос тоже превращается в вектор, база возвращает 3–10 ближайших чанков.
  5. Ответ. Найденные фрагменты вставляются в промпт, и модель отвечает уже по ним.

Минимальный промпт

Ответь на вопрос, используя только контекст ниже. Если ответа в контексте нет — так и скажи. Контекст: … Вопрос: …

Что чаще всего ломается

  • Слишком крупные чанки — поиск находит «примерно про это», а нужная деталь теряется.
  • Нет перекрытия — смысл разрезается на границе двух кусков.
  • Нет обновления индекса — документы поменялись, а ответы остались старыми.
  • Нет цитат — пользователь не может проверить, откуда взялся ответ.

Когда RAG не нужен

Если база маленькая и помещается в контекст целиком, проще передать её сразу. RAG оправдан, когда документов сотни и они меняются.

Начать можно без векторной базы: десяток текстов, косинусное сходство на PHP или Python и тот же промпт. Главное — проверить, что найденные фрагменты действительно отвечают на вопрос.