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