Введение
С бурным развитием технологий искусственного интеллекта агенты ИИ больше не являются эксклюзивной собственностью технологических гигантов. Сегодня каждый может стать создателем и пользователем ИИ.
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:
После создания кластера вам необходимо создать схему и выполнить следующий оператор:
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:
# Воля 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
После завершения модификации выполните команду запуска:
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 режима:
в использовании 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:
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
);
После того, как пользователь вводит вопрос, SQL для запроса векторной библиотеки TiDB выглядит следующим образом:
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};
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