Dify + TiDB Vector, быстро создайте своего ИИ-агента
Dify + TiDB Vector, быстро создайте своего ИИ-агента

Введение

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

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

В этой статье рассказывается, как быстро создать полнофункциональный агент искусственного интеллекта с помощью двух инструментов Dify и TiDB Vector.

*Эта статья имеет множество внешних ссылок и может быть объединена со «справочными материалами» в конце статьи для облегчения чтения.

о Dify:Dify это простой в использовании LLMOps Платформа призвана позволить большему количеству людей создавать устойчивые операционные системы. AI Приложения обеспечивают визуальную оркестровку нескольких типов приложений. Приложения можно использовать в готовом виде или в качестве серверной части в качестве службы. API Предоставлять услуги.

картина
картина

В настоящее время запущена функция TiDB Vector, tidb-vector-python [1] имеет открытый исходный код и поддерживается в двух движках AI Agent. Подробности см. в документах LangChain [2] и LlamaIndex [3]. ].

Однако на самом деле эти две платформы с открытым исходным кодом все еще немного сложны и дорогостоящи для неразработчиков. В этой статье рассказывается, как быстро использовать TiDB Vector для создания AI Agent с помощью Dify.

картина
картина

Создать вектор TiDB

В настоящее время, если вы хотите использовать функцию TiDB Vector, вам все равно необходимо подать заявку, и ожидается, что она скоро будет опубликована. Адрес приложения — https://tidb.cloud/ai [4]

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

Сначала давайте создадим экземпляр TiDB Vector:

  1. Авторизоваться TiDB Cloud 并создавать cluster
  2. Выберите «Бессерверный» и установите «Регион» на «Франкфурт» (eu-central-1).
  3. Запустите векторный поиск и задайте имя кластера.
  4. создаватькластер
картина
картина

После создания кластера вам необходимо создать схему и выполнить следующий оператор:

Язык кода:javascript
копировать
create schema dify;

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

картина
картина

Развертывание Dify

Для начала давайте поговорим о том, что такое Dify? Dify — это платформа разработки приложений LLM с открытым исходным кодом. Через простой интерфейс пользователи могут управлять моделями, создавать RAG и агенты и т. д. Кроме того, Dify также предоставляет наблюдаемые функции. Подробности см. в официальной документации [5].

Если вы хотите использовать Dify индивидуально, есть два способа: облачный сервис и самостоятельная версия сообщества.

База данных векторов по умолчанию, используемая в облачном сервисе Dify, — это weaviate [6], поэтому, если вы хотите переключить векторную библиотеку на TiDB Vector, вам необходимо использовать версию с открытым исходным кодом сообщества для самостоятельного размещения.

В настоящее время Dify v6.0.11 официально поддерживает TiDB Vector, вы можете следить за выпуском GIthub [7]

Рекомендуется здесь Docker Compose Приходить Развертывание Dify, официальную документацию можно найти здесь[8].

Файл yaml Docker Compose можно найти в базе открытого исходного кода [9].

Чтобы использовать TiDB Vector, нам нужно изменить переменные среды API и рабочей среды в Docker Compose:

Язык кода:javascript
копировать
# Воля VECTOR_STORE Изменитьдля tidb_vector, значение по умолчанию в файле: weaviate
VECTOR_STORE: tidb_vector

# Воля измените следующую конфигурацию для сохранения соединения из TiDB Конфигурация
TIDB_VECTOR_HOST: xxx.eu-central-1.prod.aws.tidbcloud.com
TIDB_VECTOR_PORT: 4000
TIDB_VECTOR_USER: xxx.root
TIDB_VECTOR_PASSWORD: xxxxxx
TIDB_VECTOR_DATABASE: dify

После завершения модификации выполните команду запуска:

Язык кода:javascript
копировать
docker compose up -d

После успешного развертывания введите http://localhost в браузере, чтобы получить доступ к Dify.

картина
картина

Давайте сначала рассмотрим процесс дополнения больших моделей (RAG) векторными библиотеками:

картина
картина

Изображение выше в основном разделено на две части: левую и правую части:

Левая половина — это когда пользователи загружают документы в библиотеку векторов. Правая половина — когда пользователи используют данные из библиотеки векторов для расширения возможностей больших моделей. Пользователи задают вопросы и передают вопросы пользователям. Embedding Векторизация модели использует векторизацию задачи в качестве узла запроса для выполнения библиотеки векторов. ANN Запрос, возврат TopK соседние узлы будут вопросы пользователей и TopK Данные узла передаются в Reranker Измените порядок модели и выберите переставленную TopN (N < К) Объедините задачу с TopN Содержимое узла склеено в prompt Назовите большую модель контекстом большой модели.

Модель Reranker не является обязательной и в основном используется для улучшения RAG. Даже если он недоступен, это не влияет на использование. Просто вставьте TopK после запроса ANN векторной библиотеки в контекст подсказки.

база знаний

В ходе вышеуказанной подготовки мы настроили TiDB Vector, так как же настроить модели Embedding и Reranker в Dify?

доступ http://localhost ,выбиратьбаза знания, загружать файлы и создавать. Затем Вхождениебаза настройки знаний.

картина
картина

В ходе вышеуказанной подготовки мы настроили TiDB Vector, так как же настроить модели Embedding и Reranker в Dify?

доступ http://localhost ,выбиратьбаза знания, загружать файлы и создавать. Затем Вхождениебаза настройки знаний.

картина
картина

Как вы можете видеть здесь, поиск векторных библиотек в Dify в основном разделен на 3 режима:

  • векторный поиск:на основе ANN Поиск запросов, Реранкер Модель не является обязательной
  • Полнотекстовый поиск:на основе BM25 Поиск, Реранкер Модель не является обязательной(в настоящий момент TiDB Vector Тип не поддерживается)
  • Гибрид (векторный + полный текст):ANN + BM25 Поиск, Реранкер Требуется модель

в использовании Embedding и Reranker когда необходимо пройти token Авторизация. Встраивание Модели могут попробовать Tongyi Qianwen[10], MINIMAX[11], JINA[12] Подождите; Модели можно попробовать JINA[13]、Cohere[14] ждать.

Агент

Конфигурациябаза После того, как знания настроены и файлы загружены, мы можем создать Agent .

Выберите создание пустого приложения в «Студии» и выберите Agent и установите значок、имяи Описание информации。

картина
картина

Входить Agent После подробностей добавьте в контексте то, что мы только что создалиизбаза. знаний。Кромебаза Помимо знаний, мы также можем настроить большие модели персонажей, инструменты и т. д. Эта часть операции не будет подробно описываться. документация[15]Писатьиз Очень полный。

картина
картина

После выполнения вышеперечисленных операций мы создали Агент на основе TiDB Vector.

Если вы хотите использовать его на других платформах или веб-сайтах, вы можете нажать «Опубликовать» в правом верхнем углу. В настоящее время Dify поддерживает использование агента через вызовы интерфейса скрипта, iframe или API.

картина
картина

Вышеупомянутое в основном говорит о рабочем процессе, а следующее в основном представляет его. Dify Доступ TiDB Vector Назад из структуры таблицы и SQL сценарий. Я не буду давать подробное описание добавления, удаления, изменения и запроса, а главным образом рассмотрю структуру таблицы и операторы запроса.

Сначала давайте взглянем на структуру таблицы, созданную Dify:

Язык кода:javascript
копировать
CREATE TABLE IF NOT EXISTS ${collection_name} (
      # id: здесьизид находится в Dify созданный в uuid
id CHAR(36) PRIMARY KEY,  

# text: Текстовый контент после фрагментации
      text TEXT NOT NULL, 

      # meta: Метаданные, идентификатор набора данных записи, документид, база знания и т. д., используемые для условного запроса
      meta JSON NOT NULL, 
      
      # vector: Вектор фрагмента, вам нужно установить размерность вектора.
      vector VECTOR<FLOAT>(${dimension}) NOT NULL COMMENT "hnsw(distance=${distance_func})",
  
      create_time DATETIME DEFAULT CURRENT_TIMESTAMP,
      update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
  • ${dimension} представляет размерность вектора, которая зависит от выбранной модели внедрения.
  • ${distance_func} Указывает метод измерения расстояния, установленный пользователем. В настоящее время поддерживаются значения косинуса. и l2 , в настоящее время поддерживает только косинус.

После того, как пользователь вводит вопрос, SQL для запроса векторной библиотеки TiDB выглядит следующим образом:

Язык кода:javascript
копировать
SELECT meta, text FROM (
SELECT meta, text, ${tidb_func}(vector, "${query_vector}")  as distance 
FROM ${collection_name} 
ORDER BY distance
LIMIT ${top_k}
) t WHERE distance < ${distance};
  • ${query_vector} представляет вектор запроса, который является векторизованным результатом вопроса пользователя.
  • ${tidb_func} выражать TiDB Vector Поддерживается предотвращение измерения векторного расстояния. В настоящее время поддерживаются следующие методы: Vec_Cosine_Distance и Vec_l2_Distance
  • ${top_k} выражать结果 TopK Конкретное количество
  • ${distance} Расстояние между узлом из в библиотеке векторов выражения и узлом запроса из, Dify база знания могут устанавливать пороговые значения расстояния/оценки
картина
картина

Vector Search Indexes in TiDB[16]

Документация Dify на китайском языке[17]

LangChain — векторный документ TiDB[18]

LlamaIndex — документация по хранилищу векторов TiDB[19]

исходный код tidb-vector-python [20]

Исходный код Dify[21]

langchain — исходный код tidb_vector[22]

исходный код llama-index-vector-stores-tidbvector[23]

Ссылки

[1]tidb-vector-python: https://github.com/pingcap/tidb-vector-python [2]LangChain: https://python.langchain.com/v0.1/docs/integrations/vectorstores/tidb_vector/ [3]LlamaIndex: https://docs.llamaindex.ai/en/stable/examples/vector_stores/TiDBVector/ [4]TiDB Cloud: https://www.notion.so/TiDB-Vector-Dify-AI-Agent-06b03cc8eaff434fa3064d3a320f3440?pvs=21 [5]Официальная документация: https://github.com/langgenius/dify/blob/main/README_CN.md [6]weaviate: https://weaviate.io/ [7]GIthub Release: https://github.com/langgenius/dify/releases [8]здесь: https://docs.dify.ai/v/zh-hans/getting-started/install-self-hosted/docker-compose [9]База с открытым исходным кодом:https://github.com/langgenius/dify/blob/main/docker/docker-compose.yaml [10]Тонги Цяньвэнь: https://help.aliyun.com/zh/dashscope/developer-reference/generic-text-vector/?spm=a2c4g.11186623.0.0.2b31696bUwAwpF [11]MINIMAX: https://platform.minimaxi.com/document/guides/Embeddings [12]JINA: https://help.aliyun.com/zh/dashscope/developer-reference/generic-text-vector/?spm=a2c4g.11186623.0.0.2b31696bUwAwpF [13]JINA: https://jina.ai/reranker [14]Cohere: https://docs.cohere.com/docs/rerank-2 [15]Официальная документация: https://docs.dify.ai/v/zh-hans/guides/knowledge-base/integrate_knowledge_within_application [16]документ: Vector Search Indexes in TiDB: https://docs.google.com/document/d/15eAO0xrvEd6_tTxW_zEko4CECwnnSwQg8GGrqK1Caiw/edit [17]Dify 中文документ: https://docs.dify.ai/v/zh-hans [18]LangChain - TiDB Vector документ: https://python.langchain.com/v0.1/docs/integrations/vectorstores/tidb_vector/ [19]LlamaIndex - TiDB Vector Store документ: https://docs.llamaindex.ai/en/stable/examples/vector_stores/TiDBVector/ [20]исходный код tidb-vector-python: https://github.com/pingcap/tidb-vector-python [21]Исходный код Dify: https://github.com/langgenius/dify [22]langchain — исходный код tidb_vector: https://github.com/langchain-ai/langchain/blob/master/libs/community/langchain_community/vectorstores/tidb_vector.py [23]исходный код llama-index-vector-stores-tidbvector: https://github.com/run-llama/llama_index/tree/main/llama-index-integrations/vector_stores/llama-index-vector-stores-tidbvector

boy illustration
Учебное пособие по Jetpack Compose для начинающих, базовые элементы управления и макет
boy illustration
Код js веб-страницы, фон частицы, код спецэффектов
boy illustration
【новый! Суперподробное】Полное руководство по свойствам компонентов Figma.
boy illustration
🎉Обязательно к прочтению новичкам: полное руководство по написанию мини-программ WeChat с использованием программного обеспечения Cursor.
boy illustration
[Забавный проект Docker] VoceChat — еще одно приложение для мгновенного чата (IM)! Может быть встроен в любую веб-страницу!
boy illustration
Как реализовать переход по странице в HTML (html переходит на указанную страницу)
boy illustration
Как решить проблему зависания и низкой скорости при установке зависимостей с помощью npm. Существуют ли доступные источники npm, которые могут решить эту проблему?
boy illustration
Серия From Zero to Fun: Uni-App WeChat Payment Practice WeChat авторизует вход в систему и украшает страницу заказа, создает интерфейс заказа и инициирует запрос заказа
boy illustration
Серия uni-app: uni.navigateЧтобы передать скачок значения
boy illustration
Апплет WeChat настраивает верхнюю панель навигации и адаптируется к различным моделям.
boy illustration
JS-время конвертации
boy illustration
Обеспечьте бесперебойную работу ChromeDriver 125: советы по решению проблемы chromedriver.exe не найдены
boy illustration
Поле комментария, щелчок мышью, специальные эффекты, js-код
boy illustration
Объект массива перемещения объекта JS
boy illustration
Как открыть разрешение на позиционирование апплета WeChat_Как использовать WeChat для определения местонахождения друзей
boy illustration
Я даю вам два набора из 18 простых в использовании фонов холста Power BI, так что вам больше не придется возиться с цветами!
boy illustration
Получить текущее время в js_Как динамически отображать дату и время в js
boy illustration
Вам необходимо изучить сочетания клавиш vsCode для форматирования и организации кода, чтобы вам больше не приходилось настраивать формат вручную.
boy illustration
У ChatGPT большое обновление. Всего за 45 минут пресс-конференция показывает, что OpenAI сделал еще один шаг вперед.
boy illustration
Copilot облачной разработки — упрощение разработки
boy illustration
Микросборка xChatGPT с низким кодом, создание апплета чат-бота с искусственным интеллектом за пять шагов
boy illustration
CUDA Out of Memory: идеальное решение проблемы нехватки памяти CUDA
boy illustration
Анализ кластеризации отдельных ячеек, который должен освоить каждый&MarkerгенетическийВизуализация
boy illustration
vLLM: мощный инструмент для ускорения вывода ИИ
boy illustration
CodeGeeX: мощный инструмент генерации кода искусственного интеллекта, который можно использовать бесплатно в дополнение к второму пилоту.
boy illustration
Машинное обучение Реальный бой LightGBM + настройка параметров случайного поиска: точность 96,67%
boy illustration
Бесшовная интеграция, мгновенный интеллект [1]: платформа больших моделей Dify-LLM, интеграция без кодирования и встраивание в сторонние системы, более 42 тысяч звезд, чтобы стать свидетелями эксклюзивных интеллектуальных решений.
boy illustration
LM Studio для создания локальных больших моделей
boy illustration
Как определить количество слоев и нейронов скрытых слоев нейронной сети?
boy illustration
[Отслеживание целей] Подробное объяснение ByteTrack и детали кода