AI Ustoz UZ: изучайте искусственный интеллект на узбекском языке

Идея RAG: сначала найти, потом ответить

Продвинутый уровень · урок 3 · около 15 мин

Модель знает не всё и иногда выдумывает. Идея RAG (ответ с поиском): сначала ищется фрагмент документа, подходящий к вопросу, затем он добавляется в запрос, и модели говорят: «отвечай только по этому тексту». Это снижает число ошибок, но не убирает их полностью: источник и ответ всё равно нужно проверять.

В настоящих системах для поиска применяют, например, эмбеддинги. Мы упростим: посчитаем общие слова вопроса и документа. set — множество без повторов, а & даёт общую часть двух множеств.

a = "python dasturlash tili"
b = "python nima"
umumiy = set(a.split()) & set(b.split())
print(len(umumiy))
Результат1

Следующий шаг: вставить найденный текст в шаблон промпта. Шаблон чётко отделяет для модели источник и вопрос. Поиск в этом уроке очень простой: в жизни качественный поиск — отдельная работа.

Запомните

  • RAG: сначала поиск, затем ответ по найденному тексту.
  • Это снижает число ошибок, но не убирает их: продолжайте проверять.
  • Шаблон промпта отделяет источник от вопроса.

Упражнение

Для чего служит подход RAG?

Ответ и пояснение
  1. Чтобы опереть ответ модели на найденный текст-источник и снизить риск выдумки. (верный ответ)перед ответом в запрос добавляется подходящий текст.
  2. Чтобы сделать модель полностью безошибочной.гарантии нет: источник может быть неверным, а поиск плохим.
  3. Чтобы запускать программу без интернета.RAG от интернета не зависит, это другое.

Упражнения с кодом

  1. Функция eng_mos(savol, hujjatlar) возвращает документ, у которого больше всего общих слов с вопросом. Используйте готовую umumiy(a, b); при равенстве остаётся первый.
    Подсказка: Начните с первого документа как лучшего и в цикле заменяйте его, если umumiy больше.
  2. Функция rag_prompt(savol, hujjat) возвращает текст из трёх строк: Faqat quyidagi matn asosida javob ber., Matn: ..., Savol: ....
    Подсказка: Между строками поставьте \n и используйте f-строку.

Выполните упражнение в приложении.

Практическое задание

Напишите 3 коротких текста и вручную определите, какой из них лучше подходит к двум разным вопросам; затем сравните с результатом функции.

  • Написал 3 текста
  • Определил вручную
  • Сравнил с функцией

Словарь

Интерактивный режим: поиск, прогресс и упражнения на Python.