Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про JavaScript: RAG, retrieval augmented generation, vector database, embedding, LLM

Опишите полный пайплайн RAG-архитектуры от входящего запроса до финального ответа модели.

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

Короткий ответ

RAG (Retrieval-Augmented Generation) — это архитектура, которая улучшает ответы языковых моделей, добавляя этап поиска релевантной информации из внешнего источника. Сначала запрос пользователя преобразуется в векторное представление (эмбеддинг). Затем этот вектор используется для поиска похожих документов в векторной базе данных. Найденные документы объединяются с исходным запросом в промпт, который передается LLM для генерации финального ответа. Это позволяет модели отвечать на вопросы, используя актуальные и специфичные данные, не хранящиеся в её весах.

Длинный ответ

Полный пайплайн RAG-архитектуры

RAG (Retrieval-Augmented Generation) решает проблему галлюцинаций и ограниченности знаний LLM, добавляя этап поиска информации из внешнего хранилища. Пайплайн состоит из двух основных фаз: индексации (подготовка базы знаний) и инференса (обработка запроса).

Фаза индексации (офлайн)

  • Загрузка и чанкинг: Документы (PDF, HTML, базы знаний) разбиваются на небольшие фрагменты (чанки) фиксированного размера (например, 512 токенов) с перекрытием для сохранения контекста.
  • Генерация эмбеддингов: Каждый чанк преобразуется в векторное представление (эмбеддинг) с помощью модели эмбеддингов (например, text-embedding-ada-002).
  • Сохранение в векторной БД: Эмбеддинги и соответствующие тексты сохраняются в векторной базе данных (Pinecone, Weaviate, FAISS), которая поддерживает поиск по косинусной близости.

Фаза инференса (онлайн)

  1. Входящий запрос: Пользователь задает вопрос, например: "Какие последние изменения в налоговом кодексе?"
  2. Эмбеддинг запроса: Тот же энкодер преобразует запрос в вектор той же размерности.
  3. Поиск релевантных чанков: Векторная БД выполняет поиск k ближайших соседей (k-NN) и возвращает топ-k наиболее похожих чанков (например, 3-5 фрагментов).
  4. Формирование промпта: Найденные чанки вставляются в шаблон промпта вместе с исходным запросом. Пример:
  5. Контекст: {чанк1} {чанк2} {чанк3}
    Вопрос: {запрос пользователя}
    Ответ:
    1. Генерация ответа: LLM (GPT-4, Llama 2) получает промпт и генерирует ответ, основываясь на предоставленном контексте. Модель не использует свои внутренние знания, а опирается на извлеченные документы.
    2. Постобработка: Ответ может быть дополнительно отфильтрован, проверен на релевантность или дополнен ссылками на источники.

    Пример кода (упрощенный пайплайн на Python)

    from sentence_transformers import SentenceTransformer
    import faiss
    
    # Фаза индексации
    documents = ["Налог на прибыль в 2024 году составляет 20%.", "Изменения в НДС вступили в силу с 1 января."]
    model = SentenceTransformer('all-MiniLM-L6-v2')
    embeddings = model.encode(documents)
    index = faiss.IndexFlatL2(embeddings.shape[1])
    index.add(embeddings)
    
    # Фаза инференса
    query = "Какой налог на прибыль?"
    query_emb = model.encode([query])
    D, I = index.search(query_emb, k=2)
    retrieved = [documents[i] for i in I[0]]
    prompt = f"Контекст: {' '.join(retrieved)}\nВопрос: {query}\nОтвет:"
    # Далее prompt передается в LLM

    Вывод: RAG-архитектура незаменима для создания чат-ботов с доступом к актуальной корпоративной базе знаний, систем вопросов-ответов по документации и любых приложений, где требуется точность и свежесть информации, выходящая за пределы обучающих данных LLM.

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    5

  • Сложность:

    7

Навыки

  • JavaScript

    JavaScript

  • Node.js

    Node.js

Ключевые слова

#RAG

#retrieval augmented generation

#vector database

#embedding

#LLM

Подпишись на Python Developer в телеграм

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.