Создание RAG-цепочки
Теперь соберём все компоненты RAG-процесса вместе! Вы подготовили документы и загрузили их в базу данных Chroma для последующего извлечения. Также вы создали шаблон подсказки, который использует извлечённые фрагменты научной статьи для ответа на вопросы.
Шаблон подсказки из предыдущего упражнения доступен как prompt_template, модель OpenAI инициализирована как llm, а код для воссоздания retriever уже включён в скрипт.
Это упражнение является частью курса
Разработка LLM-приложений с помощью LangChain
Инструкции к упражнению
- Создайте LCEL-цепочку с помощью оператора pipe (
|), последовательно соединивretriever,prompt_templateиllm. - Цепочка должна сопоставлять ретривер с
"context", а пользовательский ввод — с"question". - Вызовите цепочку методом
.invoke(), передав в него указанный вопрос.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
vectorstore = Chroma.from_documents(
docs,
embedding=OpenAIEmbeddings(api_key='', model='text-embedding-3-small'),
persist_directory=os.getcwd()
)
retriever = vectorstore.as_retriever(
search_type="similarity",
search_kwargs={"k": 3}
)
# Create a chain to link retriever, prompt_template, and llm
rag_chain = ({"context": ____, "question": ____}
| prompt_template
| llm)
# Invoke the chain
response = rag_chain.____("Which popular LLMs were considered in the paper?")
print(response.content)