Идея RAG: сначала найти, потом ответить
Модель знает не всё и иногда выдумывает. Идея RAG (ответ с поиском): сначала ищется фрагмент документа, подходящий к вопросу, затем он добавляется в запрос, и модели говорят: «отвечай только по этому тексту». Это снижает число ошибок, но не убирает их полностью: источник и ответ всё равно нужно проверять.
В настоящих системах для поиска применяют, например, эмбеддинги. Мы упростим: посчитаем общие слова вопроса и документа. set — множество без повторов, а & даёт общую часть двух множеств.
a = "python dasturlash tili"
b = "python nima"
umumiy = set(a.split()) & set(b.split())
print(len(umumiy))Результат1Следующий шаг: вставить найденный текст в шаблон промпта. Шаблон чётко отделяет для модели источник и вопрос. Поиск в этом уроке очень простой: в жизни качественный поиск — отдельная работа.
Запомните
- RAG: сначала поиск, затем ответ по найденному тексту.
- Это снижает число ошибок, но не убирает их: продолжайте проверять.
- Шаблон промпта отделяет источник от вопроса.
Упражнение
Для чего служит подход RAG?
Ответ и пояснение
- Чтобы опереть ответ модели на найденный текст-источник и снизить риск выдумки. (верный ответ)перед ответом в запрос добавляется подходящий текст.
- Чтобы сделать модель полностью безошибочной.гарантии нет: источник может быть неверным, а поиск плохим.
- Чтобы запускать программу без интернета.RAG от интернета не зависит, это другое.
Упражнения с кодом
- Функция
eng_mos(savol, hujjatlar)возвращает документ, у которого больше всего общих слов с вопросом. Используйте готовуюumumiy(a, b); при равенстве остаётся первый.
Подсказка: Начните с первого документа как лучшего и в цикле заменяйте его, еслиumumiyбольше. - Функция
rag_prompt(savol, hujjat)возвращает текст из трёх строк:Faqat quyidagi matn asosida javob ber.,Matn: ...,Savol: ....
Подсказка: Между строками поставьте\nи используйте f-строку.
Выполните упражнение в приложении.
Практическое задание
Напишите 3 коротких текста и вручную определите, какой из них лучше подходит к двум разным вопросам; затем сравните с результатом функции.
- Написал 3 текста
- Определил вручную
- Сравнил с функцией
Словарь
Интерактивный режим: поиск, прогресс и упражнения на Python.
