Загрузка урока...
Самая большая проблема LLM — они не знают ничего о вашем внутреннем коде или закрытой документации. Мы не будем переобучать модель (это дорого и долго), мы научим её пользоваться поиском. Разбираем архитектуру Retrieval-Augmented Generation (RAG): от превращения текста в векторы до формирования контекста, который «не лезет за границы токенов».
Представьте, что у вас легаси-проект на 15 лет. Никакая GPT-4 не знает, как работает ваш самописный фреймворк для БД. Вы можете скопировать код в чат, но что делать, если кода — гигабайты? Для этого существует RAG (Retrieval-Augmented Generation). Вместо того чтобы пытаться запихнуть всё в память модели, мы создаем для неё «внешнюю библиотеку».
RAG — это трехшаговый процесс:
Retrieval (Поиск): Находим в вашей базе знаний куски текста, релевантные вопросу пользователя.
Augmentation (Обогащение): Добавляем эти куски в промпт как «справочный материал».
Generation (Генерация): Просим модель ответить на вопрос, опираясь только на предоставленный текст.
Чтобы поиск работал быстро, мы не используем LIKE %query%. Мы переводим текст в смысловые векторы (эмбеддинги).
Эмбеддинг — это массив чисел, отражающий смысл фразы. У фраз «Как поднять сервер?» и «Инструкция по деплою» векторы будут находиться рядом в многомерном пространстве.
Векторная БД (Pinecone, ChromaDB, Weaviate): Хранилище, которое умеет находить ближайшие векторы по косинусному сходству.
Вы не можете засунуть 100-страничный PDF в один эмбеддинг — смысл размоется. Текст нужно резать на куски (чанки).
Fixed-size: Просто по 500 символов. (Плохо: режет слова на середине).
Recursive Character: Режет по абзацам, потом по предложениям.
Semantic: Режет там, где меняется тема.
Совет инженера: Делайте «нахлест» (overlap) между чанками (например, 10-15%). Это нужно, чтобы контекст на границах разреза не терялся.
# Логика вашего бэкенда
query = "Как настроить CI/CD для модуля Auth?"
relevant_chunks = vector_db.search(query, top_k=3)
context = "\n---\n".join(relevant_chunks)
prompt = f"""
Используй только предоставленный контекст для ответа на вопрос.
Если в контексте нет ответа, напиши "Я не знаю".
КОНТЕКСТ:
{context}
ВОПРОС:
{query}
"""
У вас есть текстовый файл с инструкцией к вашему проекту.
Разделите его вручную на 3 логических чанка.
Составьте системный промпт, который запрещает модели использовать любые знания, кроме этих чанков.
Попробуйте задать вопрос, на который в инструкции нет ответа. Если модель начала придумывать — ваш промпт недостаточно «суров».
RAG дешевле и точнее, чем Fine-tuning, для работы со знаниями.
Качество поиска (Retrieval) определяет качество ответа. Если нашли не тот кусок текста — ИИ не поможет.
Chunking + Overlap — база. Правильная нарезка документации экономит недели отладки.
В этом материале нет файлов для просмотра.