Перейти к содержимому
Обучение аналитика · 27 августа 2026

RAG и базы знаний: как научить AI отвечать по вашим документам

автор web3D.pro чтение 6 мин обновлено 12 сентября 2026 Telegram X
RAG и базы знаний: как научить AI отвечать по вашим документам

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

Проблема без RAG

Обычная языковая модель знает только то, что было в обучающих данных до даты cutoff. Спросите её о внутреннем регламенте вашей компании, актуальных ценах или последнем обновлении продукта: она либо скажет «не знаю», либо начнёт придумывать (галлюцинировать). Традиционные решения: тонкая настройка (fine-tuning, дорого и не обновляется динамически) или добавление всего документа в контекст (ограничено объёмом и дорого при каждом запросе).

RAG решает это элегантно: при каждом запросе ищем релевантные фрагменты документов и добавляем только их в контекст.

Как работает RAG: три компонента

1. Векторная база данных: хранит документы как числовые векторы (embeddings). Каждый документ (или его фрагмент) преобразуется в вектор через embedding модель. Схожие по смыслу документы имеют близкие векторы. Популярные векторные БД: Chroma (локальная, бесплатная), Pinecone (облачная), Weaviate, Qdrant.

2. Retriever (поисковик): при получении вопроса преобразует его в вектор и ищет ближайшие векторы в базе (semantic search). Возвращает топ-K наиболее релевантных фрагментов документов. Ключевое: semantic search понимает смысл, а не ключевые слова. «Как оформить отпуск?» найдёт документы о «порядке предоставления ежегодного отдыха сотрудника» даже без совпадения слов.

3. Generator (генератор): языковая модель (Claude, GPT-4o) получает промпт: исходный вопрос + найденные релевантные фрагменты. Формирует ответ, ссылаясь на предоставленный контекст. При правильной настройке: «Согласно HR-регламенту п.3.2, для оформления отпуска необходимо…»

Простой RAG за 20 строк на Python

from anthropic import Anthropic
import chromadb

client = Anthropic(api_key="sk-ant-...")
chroma = chromadb.Client()
collection = chroma.create_collection("docs")

# Индексируем документы (один раз)
documents = [
    "Порядок оформления отпуска: подать заявление за 2 недели...",
    "Рабочее время: с 9:00 до 18:00, обед с 13:00 до 14:00...",
    "Командировки: возмещение расходов по чекам..."
]
for i, doc in enumerate(documents):
    collection.add(documents=[doc], ids=[str(i)])

def rag_query(question):
    results = collection.query(query_texts=[question], n_results=2)
    context = "n".join(results["documents"][0])
    prompt = f"Контекст из документов:n{context}nnВопрос: {question}nnОтвечай строго по контексту."
    response = client.messages.create(
        model="claude-sonnet-4-5", max_tokens=500,
        messages=[{"role": "user", "content": prompt}]
    )
    return response.content[0].text

print(rag_query("Как оформить командировку?"))

Chunking: разбивка документов на фрагменты

Реальные документы большие: их нужно разбить на фрагменты (chunks) для индексации. Размер чанка критичен: слишком маленький теряет контекст, слишком большой снижает точность поиска. Типичные значения: 256-512 токенов с перекрытием 50-100 токенов между соседними чанками. Overlap нужен чтобы информация на границе двух чанков не терялась.

Готовые RAG-фреймворки

LlamaIndex и LangChain предоставляют готовые компоненты для RAG без написания каждого шага вручную. LlamaIndex особенно прост для документальных RAG: загружаете папку с PDF, получаете чат-интерфейс по этим документам за 10 строк кода. Для продакшн-решений: смотрите в сторону коммерческих сервисов (Anthropic Claude for Enterprise, OpenAI Assistants API).

Области применения RAG

  • Корпоративная база знаний: чат-бот по внутренним регламентам и документации
  • Поддержка клиентов: AI отвечает на основе актуальной документации продукта
  • Юридические исследования: поиск по базе договоров и прецедентов
  • Медицинские справочники: ответы на основе актуальных клинических протоколов
  • Персонализированное обучение: AI-тьютор по вашей учебной программе

Вывод

RAG это стандартный подход для создания корпоративных AI-систем на основе собственных данных. Три компонента (векторная БД, retriever, generator) работают вместе чтобы дать LLM доступ к актуальным документам. Начните с LlamaIndex + Chroma + Claude: за полдня у вас будет рабочий прототип корпоративного Q&A-бота по вашим документам.

Как работает RAG: векторный поиск и LLM

RAG (Retrieval-Augmented Generation) решает главное ограничение LLM: знания заморожены в веса на дату обучения. RAG добавляет динамический поиск по актуальным документам. Компоненты: 1) Indexing: документы разбиваются на чанки, каждый чанк преобразуется в числовой вектор через embedding-модель (например text-embedding-ada-002 от OpenAI), векторы хранятся в векторной БД (Pinecone, Weaviate, Chroma, pgvector). 2) Retrieval: запрос пользователя также превращается в вектор, находятся N наиболее похожих чанков через косинусное сходство. 3) Generation: найденные чанки добавляются в контекст LLM вместе с вопросом пользователя. LLM отвечает, опираясь на предоставленные документы. Качество RAG зависит от качества чанкинга и embedding-модели — это основные точки тюнинга.

Как построить RAG-систему для своих документов

  • Размер чанка: 256-512 токенов с перекрытием (overlap) 50-100 токенов. Перекрытие предотвращает разрыв смысловых связей на границах чанков.
  • Векторная БД для старта: Chroma (бесплатная, локальная) отлично подходит для прототипа. Pinecone (облачная) для продакшна.
  • Metadata фильтрация: сохраняй метаданные чанков (источник, дата, тема). Позволяет фильтровать поиск: «ищи только в документах за 2026».
  • Hybrid search: комбинируй векторный поиск (семантическое сходство) с BM25 (ключевые слова). Лучше работает для запросов с конкретными терминами.
  • LlamaIndex или LangChain: фреймворки для RAG с готовыми компонентами: загрузчики PDF/Word/HTML, чанкеры, интеграции с векторными БД, retrieval стратегии.

Частые вопросы

Когда RAG лучше чем Fine-Tuning?

RAG лучше когда: данные часто обновляются (новые документы еженедельно), нужна ссылка на источник («согласно документу X»), данные конфиденциальны (не хочешь передавать в API для обучения), данных мало (Fine-Tuning требует 500+ примеров). Fine-Tuning лучше когда: нужно изменить стиль/поведение модели, а не знания; данные статичны и не меняются; нужна скорость (без retrieval-шага).

Что такое embedding и зачем он нужен в RAG?

Embedding — преобразование текста в числовой вектор (обычно 1536 чисел для OpenAI ada-002). Семантически похожие тексты дают похожие векторы (малое косинусное расстояние). Это позволяет найти «информацию про налоги» в документе где стоит «фискальные обязательства» — смысловое совпадение без точного совпадения слов.

Сколько документов можно добавить в RAG?

Теоретически — неограниченно (векторная БД масштабируется на миллиарды векторов). Практическое ограничение: качество поиска снижается при очень большой базе без хорошей фильтрации. Для 10 000+ документов нужны: метаданные для фильтрации, re-ranking (дополнительная модель для сортировки результатов), структура корпуса (не всё в одной плоской базе).

Можно ли использовать RAG без кода?

Да. Инструменты без кода: Notion AI (поиск по своей Notion базе), ChatGPT с GPT Store (некоторые GPT работают через RAG по загруженным документам), Perplexity AI (RAG по интернету), LangFlow (visual UI для построения RAG-пайплайнов). Для своей базы документов без кода: Dify.ai, Flowise, Langdock.

Читайте также

Оставить комментарий

© 2026 web3D.pro · все права защищены тема web3D Pro · made with html