RAG: база знаний для ИИ-агентов своими руками

RAG: база знаний для ИИ-агентов своими руками

RAG-система (Retrieval Augmented Generation) позволяет ИИ-агентам отвечать на основе ваших документов: от корпоративной базы знаний до технической документации. В этом руководстве построим RAG своими руками — от чанкинга до векторного поиска.

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


Документы → Чанкинг → Эмбеддинги → Векторная база
                                        ↑
Вопрос пользователя → Эмбеддинг → Поиск похожих фрагментов
                                        ↓
                    LLM = Вопрос + Найденные фрагменты → Ответ

Этапы построения RAG

Этап 1: чанкинг документов

Документы разбиваются на фрагменты. Правила чанкинга:

ПараметрРекомендация
Размер чанка300-800 токенов
Перекрытие10-15% между чанками
ГраницыРазрывать по абзацам/разделам
МетаданныеИсточник, раздел, дата

Пример:


from langchain_text_splitters import RecursiveCharacterTextSplitter

splitter = RecursiveCharacterTextSplitter(
    chunk_size=1000,
    chunk_overlap=150
)
chunks = splitter.split_text(document)

Этап 2: эмбеддинги

Каждый чанк превращается в вектор через модель эмбеддингов:


from openai import OpenAI

client = OpenAI()
vectors = client.embeddings.create(
    model="text-embedding-3-small",
    input=chunks
)

Этап 3: векторная база

Сохраните векторы в хранилище. Простой вариант — Chroma:


import chromadb

client = chromadb.Client()
collection = client.create_collection("docs")
collection.add(
    documents=chunks,
    ids=[f"chunk-{i}" for i in range(len(chunks))],
    metadatas=[{"source": "guide.md"} for _ in chunks]
)

Этап 4: поиск и ответ

При вопросе: эмбеддинг вопроса → поиск ближайших чанков → запрос к LLM:


query_vec = client.embeddings.create(
    model="text-embedding-3-small", input=[question]
)
results = collection.query(
    query_embeddings=query_vec.data[0].embedding,
    n_results=5
)
# отправляем вопрос + найденные фрагменты в LLM

Выбор инструментов

КомпонентВариантыКогда выбирать
ЭмбеддингиOpenAI, BGE, E5, CohereОблако / локально
Векторная базаChroma, Qdrant, Weaviate, pgvectorПрототип / production
LLMGPT, Claude, локальныеКачество / приватность
ФреймворкLangChain, LlamaIndexУскорение разработки

Интеграция с агентами

RAG подключается к ИИ-агентам через MCP-сервер памяти или API: агент получает инструмент «поиск по базе знаний» и использует его при ответах. В OpenCode:


{
  "mcp": {
    "knowledge": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "mcp-server-rag", "--db", "./kb"]
    }
  }
}

Оценка качества RAG

МетрикаЧто проверяет
Retrieval precisionНайденные фрагменты релевантны?
Answer faithfulnessОтвет соответствует фрагментам?
Answer relevanceОтвет отвечает на вопрос?
CoverageВсе нужные данные найдены?

Ошибки и решения

ОшибкаРешение
Контекст теряется между чанкамиПерекрытие, разбивка по разделам
Поиск не находит нужноеГибридный поиск (векторный + ключевой)
Устаревшие данныеПлановое переобновление индекса
Дорого хранить всёФильтры, индексация только важного
Ответы без ссылокВозвращайте метаданные с источниками

Таблица: RAG vs fine-tuning

ПараметрRAGFine-tuning
ДанныеВнешняя базаВ весах модели
ОбновлениеМгновенноПереобучение
СтоимостьНизкаяВысокая
ПрозрачностьЕсть источникиНет
Когда использоватьАктуальные данныеСтиль/формат

Гибридный поиск

Только векторный поиск теряет точные совпадения по ключевым словам. Гибридный поиск объединяет два механизма:

МеханизмНаходит
ВекторныйСемантически похожие фрагменты
Ключевой (BM25)Точные совпадения терминов
Гибрид (RRF)Слияние обоих результатов

В Chroma комбинируйте `query` (текстовый поиск) и `query_embeddings` (векторный), затем объединяйте ранжирование. Это заметно повышает точность на технической документации.

Обновление индекса

База знаний устаревает: добавьте скрипт обновления, который проверяет изменения документов (хэши) и переиндексирует только изменившиеся чанки. В OpenCode это легко автоматизировать автономным запуском по расписанию.

Что дальше

  • [Агентные пайплайны](/articles/agent-pajplajny/)
  • [Промпт-инжиниринг](/articles/prompt-inzhiniring/)
  • [Интеграция API](/articles/api-integracii-ii/)
  • [Документация OpenCode (рус.)](/docs/overview/)
  • Следующие шаги

    Часто задаваемые вопросы

  • Что такое RAG? — Генерация с поиском по вашим документам.
  • Зачем нужен? — Ответы на основе ваших данных с источниками.
  • Как построить? — Чанкинг → эмбеддинги → векторная база → поиск + LLM.
  • Какие инструменты? — OpenAI/BGE, Chroma/Qdrant, LangChain.
  • Какие ошибки? — Чанки, метаданные, обновления, гибридный поиск.
  • Заключение

    RAG-система своими руками — это 4 простых этапа, которые дают ИИ-агенту вашу базу знаний. Начните с прототипа на Chroma и OpenAI, затем добавьте гибридный поиск и обновления. Соберём базу знаний для вашего бизнеса.


    *Отчёт создан: [email protected] · [refertur.net](https://refertur.net) · [t.me/realhikaz](https://t.me/realhikaz) · [WhatsApp](https://wa.me/+77054384888)*

    *SEO, продвижение, разработка, сайты, веб-приложения, сервисы, калькуляторы, контент-маркетинг, каталоги, отчёты, аудиты — на заказ. Напишите нам в [WhatsApp](https://wa.me/+77054384888?text=%D0%97%D0%B4%D1%80%D0%B0%D0%B2%D1%81%D1%82%D0%B2%D1%83%D0%B9%D1%82%D0%B5%2C%20%D1%85%D0%BE%D1%87%D1%83%20%D0%B7%D0%B0%D0%BA%D0%B0%D0%B7%D0%B0%D1%82%D1%8C%20%D1%81%D0%B5%D0%BE) — ответим в течение часа.*

    Нужен аудит, SEO или разработка?

    Сделаем продвижение, сайт, сервис или калькулятор под вашу задачу — ответим в течение часа.

    Написать в WhatsAppTelegram