Milvus
Zilliz
  • Home
  • Blog
  • Практическое руководство: Создание помощника по работе с документами на основе RAG за 10 минут с помощью Dify и Milvus

Практическое руководство: Создание помощника по работе с документами на основе RAG за 10 минут с помощью Dify и Milvus

  • Tutorials
April 28, 2025
Ruben Winastwan

Что, если бы вы могли превратить всю свою библиотеку документации - тысячи страниц технических спецификаций, внутренних вики и документации по коду - в интеллектуального помощника с искусственным интеллектом, который мгновенно отвечает на конкретные вопросы?

А еще лучше, если бы вы могли создать его за меньшее время, чем требуется для устранения конфликта при слиянии?

Таковы перспективы технологии Retrieval Augmented Generation (RAG) при правильной реализации.

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

В чем проблема? Традиционная реализация RAG выглядит следующим образом:

  • Написание пользовательских конвейеров генерации вложений

  • настройка и развертывание базы данных векторов

  • Разработка сложных шаблонов подсказок

  • Создание логики поиска и порогов сходства

  • Создание удобного интерфейса

Но что, если бы вы могли сразу перейти к результатам?

В этом руководстве мы создадим простое приложение RAG, используя два инструмента, ориентированных на разработчиков:

  • Dify: Платформа с открытым исходным кодом, которая управляет оркестровкой RAG с минимальными настройками.

  • Milvus: молниеносная векторная база данных с открытым исходным кодом, специально созданная для поиска сходства и ИИ-поиска.

К концу этого 10-минутного руководства у вас будет работающий ИИ-помощник, способный отвечать на подробные вопросы о любой коллекции документов, которую вы ему подкинете, и для этого не нужно иметь степень в области машинного обучения.

Что вы создадите

Всего за несколько минут активной работы вы создадите:

  • конвейер обработки документов, который преобразует любой PDF-файл в знания, доступные для запроса

  • Систему векторного поиска, которая находит именно ту информацию, которая нужна.

  • Интерфейс чат-бота, который отвечает на технические вопросы с высокой точностью.

  • Развертываемое решение, которое можно интегрировать с существующими инструментами.

И что самое приятное? Большинство из них настраивается с помощью простого пользовательского интерфейса (UI), а не пользовательского кода.

Что вам понадобится

  • Базовые знания Docker (только уровень docker-compose up -d ).

  • Ключ API OpenAI

  • PDF-документ для экспериментов (мы будем использовать научную статью).

Готовы создать что-то действительно полезное в рекордные сроки? Давайте приступим!

Создание RAG-приложения с помощью Milvus и Dify

В этом разделе мы создадим простое приложение RAG с помощью Dify, в котором мы сможем задавать вопросы об информации, содержащейся в научной статье. В качестве научной статьи вы можете использовать любую статью, однако в данном случае мы воспользуемся знаменитой статьей, познакомившей нас с архитектурой Transformer, "Attention is All You Need".

В качестве векторного хранилища мы будем использовать Milvus, где будут храниться все необходимые контексты. Для модели встраивания и LLM мы будем использовать модели из OpenAI. Поэтому сначала нам нужно настроить API-ключ OpenAI. Подробнее о его настройке вы можете узнать здесь.

Шаг 1: Запуск контейнеров Dify и Milvus

В этом примере мы будем самостоятельно размещать Dify с помощью Docker Compose. Поэтому, прежде чем начать, убедитесь, что Docker установлен на вашей локальной машине. Если он еще не установлен, установите Docker, обратившись к странице его установки.

После установки Docker нам нужно клонировать исходный код Dify на нашу локальную машину с помощью следующей команды:

git clone <<https://github.com/langgenius/dify.git>>

Затем перейдите в каталог docker внутри исходного кода, который вы только что клонировали. Там нужно скопировать файл .env с помощью следующей команды:

cd dify/docker
cp .env.example .env

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

Поскольку мы собираемся использовать Milvus в качестве нашей векторной базы данных, то нам нужно изменить значение переменной VECTOR_STORE в файле .env на milvus. Также нужно изменить значение переменной MILVUS_URI на http://host.docker.internal:19530, чтобы в дальнейшем после развертывания не возникало проблем со связью между Docker-контейнерами.

VECTOR_STORE=milvus
MILVUS_URI=http://host.docker.internal:19530

Теперь мы готовы к запуску контейнеров Docker. Для этого нам нужно лишь выполнить команду docker compose up -d. После ее завершения вы увидите в терминале вывод, аналогичный приведенному ниже:

docker compose up -d

С помощью команды docker compose ps мы можем проверить состояние всех контейнеров и убедиться, что они работают нормально. Если все они здоровы, вы увидите вывод, как показано ниже:

docker compose ps

И наконец, если мы перейдем по адресу http://localhost/install, то увидим целевую страницу Dify, на которой мы можем зарегистрироваться и начать создавать наше RAG-приложение в кратчайшие сроки.

Как только вы зарегистрировались, вы можете просто войти в Dify, используя свои учетные данные.

Шаг 2: Настройка ключа API OpenAI

Первое, что нам нужно сделать после регистрации в Dify, - это настроить наши API-ключи, которые мы будем использовать для вызова модели встраивания, а также LLM. Поскольку мы собираемся использовать модели от OpenAI, нам нужно вставить наш API-ключ OpenAI в наш профиль. Для этого перейдите в раздел "Настройки", наведя курсор на свой профиль в правой верхней части пользовательского интерфейса, как показано на скриншоте ниже:

Далее перейдите в раздел "Model Provider", наведите курсор на OpenAI, а затем нажмите "Setup". Появится всплывающее окно, в котором вам будет предложено ввести ключ API OpenAI. После этого мы готовы использовать модели из OpenAI в качестве нашей модели вставки и LLM.

Шаг 3: Вставка документов в базу знаний

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

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

Поэтому перед тем, как поместить статью в базу знаний, необходимо выполнить как минимум два шага. Во-первых, нам нужно разделить статью на фрагменты текста, а затем преобразовать каждый фрагмент во вставку с помощью модели вставки. Наконец, мы можем сохранить эти вкрапления в Milvus в качестве нашей векторной базы данных.

Dify позволяет нам легко разделить текст статьи на фрагменты и превратить их в эмбеддинги. Все, что нам нужно сделать, - это загрузить PDF-файл статьи, задать длину фрагмента и выбрать модель встраивания с помощью ползунка. Чтобы выполнить все эти действия, перейдите в раздел "Знания", а затем нажмите "Создать знания". Далее вам будет предложено загрузить PDF-файл с вашего локального компьютера. Поэтому лучше сначала скачать статью с ArXiv и сохранить ее на своем компьютере.

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

В области "Настройка чанка" вы можете выбрать любое число в качестве максимальной длины чанка (в нашем случае мы установим ее на 100). Далее, в разделе "Метод индексации" нам нужно выбрать опцию "Высокое качество", так как это позволит нам выполнять поиск по сходству, чтобы найти релевантные контексты. Для "Модели встраивания" вы можете выбрать любую модель встраивания из OpenAI, но в данном примере мы будем использовать модель text-embedding-3-small. Наконец, для "Retrieval Setting" нам нужно выбрать "Vector Search", так как мы хотим выполнять поиск по сходству, чтобы найти наиболее релевантные контексты.

Если вы нажмете на кнопку "Сохранить и обработать" и все пройдет успешно, вы увидите зеленую галочку, как показано на следующем скриншоте:

Шаг 4: Создание приложения RAG

До этого момента мы успешно создали базу знаний и сохранили ее в базе данных Milvus. Теперь мы готовы к созданию приложения RAG.

Создание приложения RAG в Dify очень простое. Нам нужно перейти в "Студию", а не в "Знания", как раньше, а затем нажать на "Создать из пустого места". Далее выберите "Чатбот" в качестве типа приложения и дайте своему приложению имя в соответствующем поле. Как только вы закончите, нажмите "Создать". Теперь вы увидите следующую страницу:

В поле "Инструкция" мы можем написать системную подсказку, например "Кратко ответить на вопрос пользователя". Далее в поле "Контекст" нам нужно нажать на символ "Добавить", а затем добавить базу знаний, которую мы только что создали. Таким образом, наше приложение RAG будет извлекать возможные контексты из этой базы знаний для ответа на запрос пользователя.

Теперь, когда мы добавили базу знаний в наше приложение RAG, нам осталось выбрать LLM из OpenAI. Для этого вы можете нажать на список моделей, доступный в правом верхнем углу, как вы можете видеть на скриншоте ниже:

И теперь мы готовы опубликовать наше RAG-приложение! В правом верхнем углу нажмите "Опубликовать", и там вы найдете множество способов опубликовать наше приложение RAG: мы можем просто запустить его в браузере, встроить его на наш сайт или получить доступ к приложению через API. В этом примере мы просто запустим наше приложение в браузере, поэтому мы можем нажать на "Run App".

Вот и все! Теперь вы можете задать LLM любой вопрос, связанный со статьей "Внимание - это все, что вам нужно" или любыми документами, включенными в нашу базу знаний.

Заключение

Теперь вы создали работающее RAG-приложение с помощью Dify и Milvus с минимальным количеством кода и настроек. Такой подход делает сложную архитектуру RAG доступной для разработчиков, не требуя глубоких знаний в области векторных баз данных или интеграции LLM. Основные выводы:

  1. Низкие затраты на настройку: Использование Docker Compose упрощает развертывание.
  2. Оркестровка без кода и с низким уровнем кода: Dify обрабатывает большую часть конвейера RAG
  3. Готовая к производству векторная база данных: Milvus обеспечивает эффективное хранение и поиск встраивания.
  4. Расширяемая архитектура: Легко добавлять документы или настраивать параметры При развертывании на производстве следует учесть следующее:
  • Настройку аутентификации для вашего приложения
  • Настройка правильного масштабирования Milvus (особенно для больших коллекций документов)
  • Внедрение мониторинга для экземпляров Dify и Milvus
  • Тонкая настройка параметров поиска для достижения оптимальной производительности Сочетание Dify и Milvus позволяет быстро разрабатывать приложения RAG, которые могут эффективно использовать внутренние знания вашей организации с помощью современных больших языковых моделей (LLM). Удачного создания!

Дополнительные ресурсы

    Try Managed Milvus for Free

    Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

    Get Started

    Like the article? Spread the word

    Продолжить чтение