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
LLM GPT, 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

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

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

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

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

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

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

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

Что дальше

Следующие шаги

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

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

Заключение

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


Отчёт создан: [email protected] · refertur.net · t.me/realhikaz · WhatsApp SEO, продвижение, разработка, сайты, веб-приложения, сервисы, калькуляторы, контент-маркетинг, каталоги, отчёты, аудиты — на заказ. Напишите нам в WhatsApp — ответим в течение часа.

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

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

Написать в WhatsAppTelegram