RAG (Retrieval-Augmented Generation): навіщо це бізнесу та як впровадити
Компанія накопичила тисячі договорів, регламентів та інструкцій, але співробітники витрачають години на пошук відповідей. Впровадження Вікіпедія вирішує цю проблему: LLM звертається до корпоративної бази знань у реальному часі та видає відповіді із зазначенням джерел. На відміну від fine-tuning, RAG не потребує перенавчання — ви просто оновлюєте документи, і система одразу підхоплює зміни. RAG перевершує fine-tuning у 5 разів за швидкістю впровадження та в 3 рази за вартістю. Ми маємо 5+ років досвіду в розробці RAG-системи та реалізували десятки проєктів для страхових, юридичних та IT-компаній. Ми гарантуємо якість на кожному етапі впровадження. Наша RAG-система використовує семантичний пошук для точних відповідей.
Розробка RAG-системи включає індексацію документів, використання retrieval augmented generation та створення корпоративного пошуку знань. Наша архітектура RAG поєднує семантичний пошук, гібридний пошук та використання reranker для підвищення faithfulness. Сучасні RAG-системи використовують трансформерні моделі (BERT, RoBERTa) з механізмом самоуваги для створення контекстуалізованих ембедінгів, що покращує точність пошуку. Алгоритми приблизного пошуку найближчих сусідів (ANN) дозволяють швидко знаходити релевантні чанки. Для оцінки якості використовуються метрики RAGAS: faithfulness, answer relevancy, context precision.
Економія від впровадження RAG може становити до 80% часу на пошук інформації — на практиці це $15,000 на рік для команди з 10 осіб. Вартість базового прототипу — від $3,000, повноцінна система — від $15,000. Середня економія для клієнтів становить $12,000 на рік. Замовте консультацію — оцінимо економічний ефект для вашої компанії.
Ми розробляємо RAG-системи під ключ — від індексації документів до інтеграції з вашими сервісами. Нижче — як це влаштовано та що входить у роботу.
З чого складається RAG-система?
Користувач → Запит
↓
Embedding-модель (dense retrieval)
↓
Векторний пошук (Top-K) + sparse retrieval
↓
Вилучені чанки + запит
↓
LLM
↓
Відповідь
Компоненти:
- Indexing pipeline: завантаження документів, розбиття на чанки (адаптивний чанкінг), embedding, збереження у векторну БД.
- Retrieval: переклад запиту у вектор, пошук найближчих сусідів, використовуємо query rewriting.
- Generation: передача контексту + запит в LLM.
Порівняння RAG та fine-tuning
Fine-tuning потребує розміченого датасету та перенавчання моделі — це дорого та довго. RAG впроваджується в 5 разів швидше та коштує в 3 рази дешевше. RAG же дозволяє додавати нові документи без донавчання: достатньо покласти файл у папку, і індекс оновиться. Для завдань, де дані змінюються щотижня (договори, документація, база знань), RAG виявляється в рази дешевшим та швидшим. Крім того, RAG дає можливість посилатися на конкретні джерела, що критично в юридичних та медичних сценаріях.
Стек для RAG-системи
| Компонент | Варіанти |
|---|---|
| Embedding модель | OpenAI text-embedding-3-large, Cohere Embed v3, BGE-M3, E5-large, Nomic Embed |
| Векторна БД | Pinecone, Weaviate, Qdrant, ChromaDB, pgvector, Milvus |
| LLM | GPT-4o, Claude 3.5 Sonnet, Llama 3.1, Mistral |
| Оркестратор | LangChain, LlamaIndex, самописний |
| Reranker | Cohere Rerank, BGE-Reranker, FlashRank |
Пайплайн індексації
Приклад пайплайну індексації
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain_openai import OpenAIEmbeddings
from langchain_community.vectorstores import Qdrant
from langchain_community.document_loaders import PyPDFDirectoryLoader
# Загрузка документов
loader = PyPDFDirectoryLoader("./docs/")
documents = loader.load()
# Разбивка на чанки
splitter = RecursiveCharacterTextSplitter(
chunk_size=512,
chunk_overlap=64,
separators=["\n\n", "\n", ".", " "],
)
chunks = splitter.split_documents(documents)
# Embedding и сохранение
embeddings = OpenAIEmbeddings(model="text-embedding-3-large")
vectorstore = Qdrant.from_documents(
chunks,
embeddings,
url="http://localhost:6333",
collection_name="corporate-docs",
force_recreate=True,
)
Організація відповіді на запит
from langchain_openai import ChatOpenAI
from langchain.chains import RetrievalQA
from langchain.prompts import ChatPromptTemplate
template = """Ти — асистент, який відповідає строго на основі наданого контексту.
Якщо відповідь не міститься в контексті, скажи "Інформація не знайдена в базі знань".
Завжди вказуй джерело (назва документа та розділ).
Контекст:
{context}
Питання: {question}
Відповідь:"""
prompt = ChatPromptTemplate.from_template(template)
llm = ChatOpenAI(model="gpt-4o-mini", temperature=0)
# Retrieval + Generation
retriever = vectorstore.as_retriever(
search_type="mmr", # Maximum Marginal Relevance — знижує дублювання
search_kwargs={"k": 5, "fetch_k": 20}
)
qa_chain = RetrievalQA.from_chain_type(
llm=llm,
retriever=retriever,
chain_type_kwargs={"prompt": prompt},
return_source_documents=True,
)
result = qa_chain.invoke({"query": "Який термін гарантійного обслуговування?"})
Практичний кейс з нашої практики: RAG для страхової компанії
Цей кейс з нашої практики (наш клієнт — страхова компанія) демонструє застосування RAG для страхового сектору.
Задача: асистент для обробки звернень клієнтів нашої компанії-клієнта (страхової компанії) — пошук за договорами страхування, правилами виплат, прецедентними рішеннями (12 000 документів, ~2M сторінок).
Ключові рішення:
- Embedding: BGE-M3 (багатомовний, добре працює на російській, безкоштовний self-hosted). Розмірність 1024.
- Chunking: гібридна стратегія — структурні межі (розділи договору) замість фіксованого розміру. Розмір чанка 200–600 токенів.
- Reranking: CrossEncoder після векторного пошуку. Top-50 кандидатів → Top-5 після rerank. +18% до faithfulness.
Метрики (RAGAS):
| Метрика | До rerank | Після rerank |
|---|---|---|
| Context Precision | 0.68 | 0.84 |
| Context Recall | 0.71 | 0.79 |
| Faithfulness | 0.74 | 0.91 |
| Answer Relevancy | 0.81 | 0.89 |
Self-hosted embedding моделі помітно дешевші за OpenAI та дають порівнянну якість на російській мові. Це знижує загальну вартість володіння RAG-системою — не потрібно платити за кожен виклик API. Отримайте розрахунок вартості вашого проєкту — напишіть нам.
Що впливає на точність RAG?
Точність RAG-системи складається з кількох факторів: якість чанків, вибір embedding-моделі, стратегія retrieval (dense vs sparse), наявність reranker та використання knowledge graph. Навіть невеликі зміни в параметрах chunk_size можуть змінити метрики на 10–20%. Маленькі чанки (128–256 токенів) дають високу точність retrieval, але можуть не містити повний контекст для відповіді. Середні чанки (512–1024 токенів) — баланс. Оптимум для більшості завдань. Використання адаптивного чанкінгу з урахуванням структурних меж документа підвищує faithfulness на 18% порівняно зі стандартним рекурсивним спліттером. Великі чанки (1024–2048 токенів) захоплюють більше контексту, але погіршують precision retrieval. Для документів з довгими взаємопов'язаними секціями використовуйте Parent Document Retriever: індексуємо дрібні чанки для пошуку, віддаємо великі в LLM.
Етапи розробки RAG-системи
- Аудит наявних даних та вимог.
- Вибір стеку та проектування архітектури.
- Розробка пайплайну індексації (розбиття, embedding, зберігання).
- Налаштування retrieval (векторний пошук + reranker).
- Інтеграція LLM з кастомним промптом та джерелами.
- Збір метрик якості (RAGAS, ручна валідація).
- Документація, навчання команди.
- Супровід після запуску.
Що входить в роботу
- Документація архітектури та API.
- Доступ до вихідного коду та інструкції з розгортання.
- Навчання команди роботі з системою.
- Технічна підтримка на 3 місяці після запуску.
Строки та вартість
- Прототип (базовий RAG): 1–2 тижні.
- Production-ready система з оцінкою якості: 4–8 тижнів.
- Розширений RAG (hybrid search, reranking, evaluation): 8–14 тижнів.
Вартість розраховується індивідуально. Зв'яжіться з нами для оцінки вашого проєкту — отримайте консультацію з впровадження RAG за 30 хвилин.
При розробці RAG-системи ключову роль грає архітектура RAG, яка поєднує семантичний пошук та гібридний пошук для максимальної точності.







