---
title: RAG: база знаний для ИИ-агентов своими руками
slug: rag-sistemy
description: RAG-системы: как построить базу знаний для ИИ-агентов своими руками — эмбеддинги, векторы, чанкинг, поиск и интеграция. Пошаговое руководство.
keywords: [rag система, база знаний ии, retrieval augmented generation, rag своими руками, векторная база]
h1: RAG: база знаний для ИИ-агентов своими руками
category: ИИ-агенты
tags: [rag, база знаний, эмбеддинги, векторная база]
date: 2026-08-20
image: /images/articles/rag-sistemy.webp
image_alt: RAG-система — база знаний для ИИ-агентов
reading_time: ~9 мин
author: Refertur
canonical: https://ai-courses.refertur.net/articles/rag-sistemy/
faq:
  - q: Что такое RAG простыми словами?
    a: RAG (Retrieval Augmented Generation — генерация с дополнением из поиска) — это способ дать ИИ-модели доступ к вашим данным: документы разбиваются на части, превращаются в векторы, и при вопросе модель сначала находит релевантные фрагменты, а потом отвечает на их основе.
  - q: Зачем нужна RAG-система?
    a: RAG нужен, чтобы ИИ отвечал на основе ваших документов, а не только своих знаний: актуальные данные, корпоративные документы, базы знаний. Без RAG модель не знает ваш контент; с RAG — отвечает с учётом ваших материалов и ссылается на них.
  - q: Как построить RAG своими руками?
    a: RAG строится в 4 шага: 1) разбейте документы на фрагменты (чанки), 2) создайте эмбеддинги (векторы) через модель эмбеддингов, 3) сохраните в векторную базу (Chroma, Qdrant, PGVector), 4) при вопросе ищите похожие фрагменты и отправляйте модели вместе с вопросом.
  - q: Какие инструменты нужны для RAG?
    a: Для RAG нужны: модель эмбеддингов (OpenAI embeddings, BGE, E5), векторная база (Chroma, Qdrant, Weaviate, PostgreSQL+pgvector) и LLM для ответов. Для простых прототипов достаточно Python + Chroma + openai/llamaindex.
  - q: Какие ошибки допускают при построении RAG?
    a: Частые ошибки: слишком большие или маленькие чанки (теряется контекст), плохие метаданные (нельзя фильтровать), игнорирование обновлений (устаревшие данные), отсутствие гибридного поиска (только векторный без ключевых слов), нет оценки качества ответов.
jsonld: {}
---

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

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

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

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

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

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

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

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

Пример:

```python
from langchain_text_splitters import RecursiveCharacterTextSplitter

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

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

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

```python
from openai import OpenAI

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

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

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

```python
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:

```python
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:

```json
{
  "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 это легко автоматизировать автономным запуском по расписанию.

## Что дальше

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

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "Article",
      "headline": "RAG: база знаний для ИИ-агентов своими руками",
      "description": "RAG-системы: как построить базу знаний для ИИ-агентов своими руками — эмбеддинги, векторы, чанкинг, поиск и интеграция. Пошаговое руководство.",
      "datePublished": "2026-08-20",
      "image": "/images/articles/rag-sistemy.webp",
      "author": {
        "@type": "Organization",
        "name": "Refertur",
        "url": "https://refertur.net",
        "email": "refertur@yandex.ru",
        "sameAs": [
          "https://t.me/realhikaz",
          "https://wa.me/+77054384888"
        ]
      },
      "publisher": {
        "@type": "Organization",
        "name": "Refertur",
        "url": "https://refertur.net",
        "email": "refertur@yandex.ru",
        "sameAs": [
          "https://t.me/realhikaz",
          "https://wa.me/+77054384888"
        ]
      },
      "mainEntityOfPage": "https://ai-courses.refertur.net/articles/rag-sistemy/"
    },
    {
      "@type": "FAQPage",
      "mainEntity": [
        {
          "@type": "Question",
          "name": "Что такое RAG простыми словами?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "RAG (Retrieval Augmented Generation — генерация с дополнением из поиска) — это способ дать ИИ-модели доступ к вашим данным: документы разбиваются на части, превращаются в векторы, и при вопросе модель сначала находит релевантные фрагменты, а потом отвечает на их основе."
          }
        },
        {
          "@type": "Question",
          "name": "Зачем нужна RAG-система?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "RAG нужен, чтобы ИИ отвечал на основе ваших документов, а не только своих знаний: актуальные данные, корпоративные документы, базы знаний. Без RAG модель не знает ваш контент; с RAG — отвечает с учётом ваших материалов и ссылается на них."
          }
        },
        {
          "@type": "Question",
          "name": "Как построить RAG своими руками?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "RAG строится в 4 шага: 1) разбейте документы на фрагменты (чанки), 2) создайте эмбеддинги (векторы) через модель эмбеддингов, 3) сохраните в векторную базу (Chroma, Qdrant, PGVector), 4) при вопросе ищите похожие фрагменты и отправляйте модели вместе с вопросом."
          }
        },
        {
          "@type": "Question",
          "name": "Какие инструменты нужны для RAG?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Для RAG нужны: модель эмбеддингов (OpenAI embeddings, BGE, E5), векторная база (Chroma, Qdrant, Weaviate, PostgreSQL+pgvector) и LLM для ответов. Для простых прототипов достаточно Python + Chroma + openai/llamaindex."
          }
        },
        {
          "@type": "Question",
          "name": "Какие ошибки допускают при построении RAG?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Частые ошибки: слишком большие или маленькие чанки (теряется контекст), плохие метаданные (нельзя фильтровать), игнорирование обновлений (устаревшие данные), отсутствие гибридного поиска (только векторный без ключевых слов), нет оценки качества ответов."
          }
        }
      ]
    },
    {
      "@type": "BreadcrumbList",
      "itemListElement": [
        {
          "@type": "ListItem",
          "position": 1,
          "name": "Главная",
          "item": "https://ai-courses.refertur.net/"
        },
        {
          "@type": "ListItem",
          "position": 2,
          "name": "Статьи",
          "item": "https://ai-courses.refertur.net/articles/"
        },
        {
          "@type": "ListItem",
          "position": 3,
          "name": "RAG: база знаний для ИИ-агентов своими руками",
          "item": "https://ai-courses.refertur.net/articles/rag-sistemy/"
        }
      ]
    }
  ]
}
</script>

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

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

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

## Заключение

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

---

*Отчёт создан: refertur@yandex.ru · [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) — ответим в течение часа.*