RAG: Ответы на основе поиска в базе знаний

RAG (Retrieval-Augmented Generation) — это подход, при котором большая языковая модель (LLM) получает не только сам вопрос, но и дополнительную информацию из базы знаний. Модель не «вспоминает» ответ из своей памяти, а «читает» найденный текст и отвечает на основе него.


Зачем нужен RAG

LLM не знает ничего о ваших внутренних документах, продуктах или инструкциях. Она может галлюцинировать — выдумывать ответы.

RAG позволяет использовать актуальные и точные данные:

  • Вы передаёте в модель текст, найденный по запросу
  • Модель отвечает с опорой на этот текст

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

  1. Получаем вопрос от пользователя
  2. Кодируем его в вектор (эмбеддинг)
  3. Ищем похожие документы в базе (векторный поиск)
  4. Склеиваем найденные тексты и добавляем к вопросу
  5. Передаём всё это в LLM как prompt
  6. Модель отвечает

Что нужно для RAG

  • Модель для эмбеддингов — например, sentence-transformers
  • Векторное хранилище — например, faiss, qdrant, weaviate, pinecone
  • LLM — любая модель генерации, например Mistral, LLaMA, GPT

Пример на Python (faiss + sentence-transformers)

from sentence_transformers import SentenceTransformer
import faiss
import numpy as np

# База документов
docs = [
    "Товар добавляется через Личный кабинет в разделе Каталог.",
    "Оптовые цены указываются отдельно от розничных.",
    "Поддержка работает с 10:00 до 18:00 по будням."
]

# Эмбеддер
model = SentenceTransformer("all-MiniLM-L6-v2")
embeddings = model.encode(docs)

# Векторный индекс
index = faiss.IndexFlatL2(embeddings[0].shape[0])
index.add(np.array(embeddings))

# Запрос
query = "Как задать оптовую цену?"
query_embedding = model.encode([query])
_, I = index.search(query_embedding, k=1)

# Результат
context = docs[I[0][0]]
print("Контекст:", context)

Теперь можно собрать prompt:

prompt = f"Инструкция: {context}\n\nВопрос: {query}\nОтвет:"

Передаём этот prompt в LLM (через transformers, vllm, OpenAI API и т. д.)


Преимущества RAG

  • Актуальность — ответы можно обновлять без переобучения модели
  • Контроль — вы точно знаете, откуда берётся информация
  • Гибкость — можно подключить любые источники: статьи, документы, БД

Вывод

RAG — мощный способ комбинировать знания вашей системы с генеративной силой LLM. Это основа умных ассистентов, корпоративных поисковиков и сервисов поддержки, которые действительно отвечают по делу.