Создание системы вопросов и ответов RAG от начала до конца
Цепочка RetrievalQA, пользовательские промпты, указание источников, оценка RAG с помощью RAGAS
«Создание системы вопросов и ответов RAG от начала до конца» — бесплатный урок Learn AI with Python на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Learn AI with Python, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Learn AI with Python содержит 4 уроков всего.
Что такое RAG?
Генерация с дополнением контекста позволяет LLM опираться на ваши собственные данные. Во время обработки запроса вы находите релевантные фрагменты в векторном хранилище и добавляете их в промпт, чтобы модель отвечала на основе фактов, а не строила догадки.
Поток RAG
Каждый запрос RAG проходит четыре шага: (1) преобразовать вопрос в вектор, (2) найти похожие фрагменты, (3) добавить их в промпт как контекст, (4) LLM создаёт ответ на основе этого контекста.
Преобразование хранилища в средство поиска
Преобразуйте векторное хранилище в средство поиска с помощью as_retriever. Словарь search_kwargs управляет поиском; важнейший параметр — k, количество фрагментов, извлекаемых для каждого вопроса.
retriever = db.as_retriever(
search_kwargs={"k": 4}
)Настройка search_kwargs
С помощью search_kwargs также можно задать порог оценки или параметры MMR. Начните с k=4: увеличьте значение, если в ответах не хватает контекста, или уменьшите его, чтобы сократить стоимость токенов и количество лишних данных.
retriever = db.as_retriever(
search_type="similarity_score_threshold",
search_kwargs={"k": 6, "score_threshold": 0.5}
)Цепочка RetrievalQA
Цепочка RetrievalQA объединяет поиск и генерацию. Создайте её с помощью from_chain_type, передав свои llm и retriever. Теперь один вызов позволяет отвечать на вопросы по вашим документам.
from langchain.chains import RetrievalQA
from langchain_openai import ChatOpenAI
qa = RetrievalQA.from_chain_type(
llm=ChatOpenAI(model="gpt-4o"),
retriever=retriever
)chain_type: объединение контекста
chain_type определяет, как найденные фрагменты добавляются в промпт. Значение "stuff" (по умолчанию) помещает все фрагменты в один промпт; это простой и лучший вариант, когда они помещаются в окно контекста. Другие типы, например "map_reduce", подходят для обработки множества больших фрагментов.
qa = RetrievalQA.from_chain_type(
llm=llm,
chain_type="stuff",
retriever=retriever
)Задание вопроса
Запустите цепочку с помощью invoke, передав вопрос под ключом query. Цепочка выполнит поиск, создаст промпт и вернёт ответ, основанный на найденных данных.
response = qa.invoke({"query": "What is the refund window?"})
print(response["result"])Возврат исходных документов
Установите return_source_documents=True, чтобы получить фрагменты, использованные для ответа. Это позволяет добавлять ссылки на источники и даёт пользователям возможность проверить происхождение каждого факта, что крайне важно для доверия.
qa = RetrievalQA.from_chain_type(
llm=llm,
retriever=retriever,
return_source_documents=True
)
resp = qa.invoke({"query": "Refund window?"})
for d in resp["source_documents"]:
print(d.metadata)Зачем оценивать RAG?
RAG может работать неправильно по двум причинам: поиск возвращает неверные фрагменты или генерация создаёт выдуманные сведения, несмотря на хорошие фрагменты. Вам нужны метрики, чтобы понять, какую часть следует исправить. Проверка ответов вручную не масштабируется.
Метрики RAGAS
RAGAS — библиотека для оценки качества RAG. Основные метрики: faithfulness (ответ подтверждается контекстом), answer_relevancy (ответ относится к вопросу) и context_precision (найденные фрагменты релевантны).
pip install ragas
from ragas.metrics import faithfulness, answer_relevancy, context_precisionПроведение оценки
Создайте набор данных с вопросами, сгенерированными ответами, найденными контекстами и эталонными ответами, затем вызовите evaluate. Оценки покажут, что именно следует улучшить: разбиение на фрагменты, параметр k поиска или промпт.
from ragas import evaluate
result = evaluate(
dataset,
metrics=[faithfulness, answer_relevancy, context_precision]
)
print(result)Быстрая проверка
Проверьте свои знания о RAG.
Повторение: RAG от начала до конца
Вы создали полноценный конвейер RAG: db.as_retriever с search_kwargs, цепочку RetrievalQA.from_chain_type на основе ваших llm и средства поиска, а также return_source_documents=True для добавления ссылок на источники. Вы также научились измерять качество с помощью метрик RAGAS, таких как достоверность и точность контекста.
Часто задаваемые вопросы
Урок «Создание системы вопросов и ответов RAG от начала до конца» бесплатный?
Да — полный текст урока «Создание системы вопросов и ответов RAG от начала до конца» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Learn AI with Python, подпишись на CoddyKit PRO. Курс Learn AI with Python содержит 4 уроков всего.
Чему я научусь в уроке «Создание системы вопросов и ответов RAG от начала до конца»?
Цепочка RetrievalQA, пользовательские промпты, указание источников, оценка RAG с помощью RAGAS Ты практикуешь Learn AI with Python с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Learn AI with Python?
Предыдущий опыт не требуется. Learn AI with Python на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.
Сколько времени занимает урок «Создание системы вопросов и ответов RAG от начала до конца»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Learn AI with Python?
Да. Каждый урок Learn AI with Python включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Архитектура LangChain и LCEL
- Загрузка, разбиение и эмбеддинг документов
- Векторные хранилища: Chroma и FAISS
- Создание системы вопросов и ответов RAG от начала до конца