Connect with us

Создание агентов LLM для RAG с нуля и далее: всесторонний гид

AGI

Создание агентов LLM для RAG с нуля и далее: всесторонний гид

mm
Building LLM Agents for RAG from Scratch and Beyond: A Comprehensive Guide

LLM, такие как GPT-3, GPT-4, и их открытые аналоги, часто испытывают трудности с получением актуальной информации и могут иногда генерировать неверную или ложную информацию.

Retrieval-Augmented Generation (RAG) – это техника, которая объединяет возможности LLM с внешней информацией. RAG позволяет нам основывать ответы LLM на фактической, актуальной информации, значительно улучшая точность и надежность сгенерированного контента.

В этом блог-посте мы рассмотрим, как создать агенты LLM для RAG с нуля, глубоко погрузившись в архитектуру, детали реализации и продвинутые техники. Мы рассмотрим все, от основ RAG до создания сложных агентов, способных к сложному рассуждению и выполнению задач.

Прежде чем мы начнем создавать наш агент LLM, давайте поймем, что такое RAG и почему он важен.

RAG, или Retrieval-Augmented Generation, – это гибридный подход, который объединяет информационный поиск с генерацией текста. В системе RAG:

  • Запрос используется для извлечения релевантных документов из базы знаний.
  • Эти документы затем передаются в языковую модель вместе с исходным запросом.
  • Модель генерирует ответ на основе как запроса, так и извлеченной информации.
RAG

RAG

Этот подход имеет несколько преимуществ:

  • Улучшенная точность: Основывая ответы на извлеченной информации, RAG снижает количество неверной информации и улучшает фактическую точность.
  • Актуальная информация: База знаний может быть регулярно обновлена, позволяя системе получать актуальную информацию.
  • Прозрачность: Система может предоставлять источники информации, увеличивая доверие и позволяя проверять факты.

Понимание агентов LLM

 

Когда вы сталкиваетесь с проблемой, не имеющей простого ответа, вам часто необходимо выполнить несколько шагов, тщательно подумать и вспомнить, что вы уже пробовали. Агенты LLM предназначены именно для таких ситуаций в приложениях языковых моделей. Они объединяют тщательный анализ данных, стратегическое планирование, извлечение данных и способность учиться на прошлом опыте, чтобы решать сложные проблемы.

Что такое агенты LLM?

Агенты LLM – это продвинутые системы ИИ, предназначенные для создания сложного текста, требующего последовательного рассуждения. Они могут думать вперед, вспоминать прошедшие разговоры и использовать различные инструменты, чтобы скорректировать свои ответы в зависимости от ситуации и стиля.

Рассмотрим вопрос в юридической области, такой как: “Каковы потенциальные юридические последствия нарушения определенного типа контракта в Калифорнии?” Базовый LLM с системой RAG может извлечь необходимую информацию из юридических баз данных.

Для более подробного сценария: “В свете новых законов о защите данных, какие общие юридические проблемы сталкиваются компании, и как суды решали эти проблемы?” Этот вопрос глубже, чем просто поиск фактов. Он связан с пониманием новых правил, их влиянием на различные компании и реакцией судов. Агент LLM разобьет эту задачу на подзадачи, такие как извлечение последних законов, анализ исторических дел, суммирование юридических документов и прогнозирование тенденций на основе закономерностей.

Компоненты агентов LLM

Агенты LLM обычно состоят из четырех компонентов:

  1. Агент/Мозг: Основная языковая модель, которая обрабатывает и понимает язык.
  2. Планирование: Способность рассуждать, разбивать задачи и разрабатывать конкретные планы.
  3. Память: Сохраняет записи прошлых взаимодействий и учится на них.
  4. Использование инструментов: Интегрирует различные ресурсы для выполнения задач.

Агент/Мозг

В основе агента LLM лежит языковая модель, которая обрабатывает и понимает язык на основе огромных объемов данных, на которых она была обучена. Вы начинаете с предоставления ему конкретного запроса, руководя агентом о том, как ответить, какие инструменты использовать и какие цели преследовать. Вы можете настроить агента с персоной, подходящей для конкретных задач или взаимодействий, улучшая его производительность.

Память

Компонент памяти помогает агентам LLM справляться с сложными задачами, сохраняя записи прошлых действий. Существует два основных типа памяти:

  • Краткосрочная память: Действует как блокнот, отслеживая текущие обсуждения.
  • Долгосрочная память: Функционирует как дневник, хранящий информацию из прошлых взаимодействий, чтобы учиться на закономерностях и принимать лучшие решения.

Объединяя эти типы памяти, агент может предлагать более подходящие ответы и запоминать предпочтения пользователей с течением времени, создавая более связанное и релевантное взаимодействие.

Планирование

Планирование позволяет агентам LLM рассуждать, разбивать задачи на управляемые части и корректировать планы по мере развития задач. Планирование включает в себя два основных этапа:

  • Формулирование плана: Разбиение задачи на более мелкие подзадачи.
  • Отражение плана: Просмотр и оценка эффективности плана, включение обратной связи для уточнения стратегий.

Методы, такие как Chain of Thought (CoT) и Tree of Thought (ToT), помогают в этом процессе разбиения, позволяя агентам исследовать различные пути решения проблемы.

Чтобы глубже погрузиться в мир агентов ИИ, включая их текущие возможности и потенциал, рассмотрите возможность прочитать “Auto-GPT & GPT-Engineer: всесторонний гид по ведущим агентам ИИ сегодня”

Настройка среды

Чтобы создать наш агент RAG, нам необходимо настроить среду разработки. Мы будем использовать Python и несколько ключевых библиотек:

  • LangChain: Для оркестровки нашего LLM и компонентов извлечения.
  • Chroma: Как наш векторный магазин для вложений документов.
  • Модели GPT от OpenAI: Как наш базовый LLM (вы можете заменить это на открытую модель, если предпочитаете).
  • FastAPI: Для создания простого API для взаимодействия с нашим агентом.

Давайте начнем с настройки нашей среды:


# Создайте новую виртуальную среду
python -m venv rag_agent_env
source rag_agent_env/bin/activate # На Windows используйте `rag_agent_env\Scripts\activate`

# Установите необходимые пакеты
pip install langchain chromadb openai fastapi uvicorn

Теперь давайте создадим новый файл Python под названием rag_agent.py и импортируем необходимые библиотеки:


from langchain.embeddings import OpenAIEmbeddings
from langchain.vectorstores import Chroma
from langchain.text_splitter import CharacterTextSplitter
from langchain.llms import OpenAI
from langchain.chains import RetrievalQA
from langchain.document_loaders import TextLoader
import os

# Установите ключ API OpenAI
os.environ["OPENAI_API_KEY"] = "ваш-api-ключ-здесь";

Создание простой системы RAG

Теперь, когда у нас настроена среда, давайте создадим базовую систему RAG. Мы начнем с создания базы знаний из набора документов, а затем используем это для ответов на запросы.

Шаг 1: Подготовка документов

Сначала нам нужно загрузить и подготовить наши документы. Для этого примера давайте предположим, что у нас есть текстовый файл под названием knowledge_base.txt с некоторой информацией об ИИ и машинном обучении.


# Загрузите документ
loader = TextLoader("knowledge_base.txt")
documents = loader.load()

# Разбейте документы на части
text_splitter = CharacterTextSplitter(chunk_size=1000, chunk_overlap=0)
texts = text_splitter.split_documents(documents)

# Создайте вложения
embeddings = OpenAIEmbeddings()

# Создайте векторный магазин
vectorstore = Chroma.from_documents(texts, embeddings)

Шаг 2: Создание цепочки QA на основе извлечения

Теперь, когда у нас есть векторный магазин, мы можем создать цепочку QA на основе извлечения:


# Создайте цепочку QA на основе извлечения
qa = RetrievalQA.from_chain_type(llm=OpenAI(), chain_type="stuff", retriever=vectorstore.as_retriever())

Шаг 3: Запрос системы

Мы можем теперь запросить нашу систему RAG:


query = "Каковы основные применения машинного обучения?"
result = qa.run(query)
print(result)

Шаг 4: Создание агента LLM

Хотя наша простая система RAG полезна, она довольно ограничена. Давайте улучшим ее, создав агент LLM, который может выполнять более сложные задачи и рассуждать об извлеченной информации.

Агент LLM – это система ИИ, которая может использовать инструменты и принимать решения о действиях. Мы создадим агента, который может не только отвечать на вопросы, но и выполнять поисковые запросы и базовые вычисления.

Сначала давайте определим некоторые инструменты для нашего агента:

from langchain.agents import Tool
from langchain.tools import DuckDuckGoSearchRun
from langchain.tools import BaseTool
from langchain.agents import initialize_agent
from langchain.agents import AgentType

# Определите инструмент калькулятора
class CalculatorTool(BaseTool):
name = “Калькулятор”
description = “Полезен, когда вам нужно ответить на вопросы о математике”

def _run(self, query: str)

Я провел последние пять лет, погружаясь в увлекательный мир Machine Learning и Deep Learning. Моя страсть и экспертиза привели меня к участию в более чем 50 различных проектах по разработке программного обеспечения, с особым акцентом на AI/ML. Мое непрекращающееся любопытство также привело меня к Natural Language Processing, области, которую я с нетерпением жду возможности изучить более подробно.