AI Agents · Урок

Создание цепочки RAG от начала до конца

Соедините всё вместе: загрузчик -> разделитель -> эмбеддинги -> векторное хранилище -> поисковый модуль -> промпт -> модель.

Урок 4 из 415 шагов

«Создание цепочки RAG от начала до конца» — бесплатный урок AI Agents на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения AI Agents, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс AI Agents содержит 4 уроков всего.

Части этого урока еще не переведены и отображаются на английском.

Цель проекта

Объедините загрузчики, разделители, векторные хранилища и LCEL в полноценную цепочку RAG, подготовленную по образцу производственной системы.

Step 1: Load and Chunk

from langchain_community.document_loaders import PyPDFLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter

loader = PyPDFLoader('handbook.pdf')
docs = loader.load()
splitter = RecursiveCharacterTextSplitter(chunk_size=800, chunk_overlap=100)
chunks = splitter.split_documents(docs)
print(f'{len(chunks)} chunks loaded')

Step 2: Embed and Store

from langchain_openai import OpenAIEmbeddings
from langchain_community.vectorstores import Chroma

embeddings = OpenAIEmbeddings(model='text-embedding-3-small')
store = Chroma.from_documents(
    chunks,
    embeddings,
    persist_directory='./handbook_db'
)

Step 3: Set Up Retriever

retriever = store.as_retriever(
    search_type='similarity',
    search_kwargs={'k': 4}
)

Step 4: Define the Prompt

from langchain.prompts import ChatPromptTemplate

rag_prompt = ChatPromptTemplate.from_template('''
You are a helpful assistant. Use the context below to answer.
If the answer is not in the context, say you do not know.
Cite sources like [1], [2].

Context:
{context}

Question: {question}

Answer:
''')

Step 5: Format Documents Helper

def format_docs(docs):
    return '\n\n'.join(
        f'[{i+1}] (source: {d.metadata.get("source", "?")}, page {d.metadata.get("page", "?")})\n{d.page_content}'
        for i, d in enumerate(docs)
    )

from types import SimpleNamespace
docs = [
    SimpleNamespace(metadata={'source': 'handbook.pdf', 'page': 3}, page_content='Vacation policy details.'),
    SimpleNamespace(metadata={'source': 'handbook.pdf', 'page': 5}, page_content='Sick leave details.'),
]
print(format_docs(docs))

Step 6: Assemble the LCEL Chain

from langchain_core.runnables import RunnablePassthrough
from langchain.schema.output_parser import StrOutputParser
from langchain_openai import ChatOpenAI

model = ChatOpenAI(model='gpt-4o-mini', temperature=0)

rag_chain = (
    {'context': retriever | format_docs, 'question': RunnablePassthrough()}
    | rag_prompt
    | model
    | StrOutputParser()
)

Step 7: Invoke

answer = rag_chain.invoke('What is our refund policy?')
print(answer)

Step 8: Stream the Answer

for chunk in rag_chain.stream('What is our refund policy?'):
    print(chunk, end='', flush=True)

Шаг 9: отдельный возврат источников

Иногда в выводе нужно получить и ответ, И извлечённые документы:

from langchain_core.runnables import RunnableParallel

rag_with_sources = RunnableParallel(
    context=retriever,
    answer=rag_chain
)

result = rag_with_sources.invoke('What is our refund policy?')
print(result['answer'])
for doc in result['context']:
    print(doc.metadata)

Шаг 10: диалоговый RAG

Добавьте извлечение с учётом истории — перед извлечением переписывайте уточняющие вопросы в самостоятельную форму:

from langchain.chains import create_history_aware_retriever
# 'And what about XL sizes?' -> 'What is the refund policy for XL sizes?'

Шаг 11: оценка цепочки

Интеграция с LangSmith фиксирует каждый вызов цепочки. Вы можете создавать наборы данных на основе реального использования и запускать оценки.

Особенности производственной эксплуатации

  • Фиксируйте версии моделей
  • Задавайте max_tokens
  • Добавляйте отслеживание использования токенов
  • Реализуйте повторные попытки с резервной моделью
  • Кэшируйте векторные представления (в OpenAI они уже детерминированы)
  • Добавляйте Langfuse/LangSmith для трассировки

Назначение format_docs

Зачем нужна вспомогательная функция format_docs между ретривером и промптом?

Итоги

Вы создали полноценную цепочку RAG с помощью LCEL. Благодаря указанным выше дополнениям этот каркас можно масштабировать для производственной эксплуатации.

Можно начать бесплатно

Изучай AI Agents с ИИ-репетитором — бесплатно

Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.

Курсы
60
Уроки
239

Часто задаваемые вопросы

Урок «Создание цепочки RAG от начала до конца» бесплатный?

Да — полный текст урока «Создание цепочки RAG от начала до конца» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс AI Agents, подпишись на CoddyKit PRO. Курс AI Agents содержит 4 уроков всего.

Чему я научусь в уроке «Создание цепочки RAG от начала до конца»?

Соедините всё вместе: загрузчик -> разделитель -> эмбеддинги -> векторное хранилище -> поисковый модуль -> промпт -> модель. Ты практикуешь AI Agents с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать AI Agents?

Предыдущий опыт не требуется. AI Agents на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.

Сколько времени занимает урок «Создание цепочки RAG от начала до конца»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке AI Agents?

Да. Каждый урок AI Agents включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Архитектура LangChain: модели, промпты, цепочки
  2. Загрузчики, разделители и векторные хранилища
  3. LCEL (язык выражений LangChain)
  4. Создание цепочки RAG от начала до конца
← Назад к AI Agents