科学工具
科学工具让世界更美好
让世界更美好

AI数据平台MindsDB,用自然语言或SQL查询分散在不同地方的数据AI数据平台MindsDB,用自然语言或SQL查询分散在不同地方的数据

MindsDB能让人类、AI、代理和应用在分散的大规模数据源中获得高精度答案,内置MCP服务器,能让MCP应用连接、整合分散的数据——包括数据库、数据仓库和SaaS应用,对相关问题做出回应。

无论是结构化数据还是非结构化数据,无论这些数据分散在SaaS应用、数据库中,还是存放在数据仓库里,MindsDB都能处理。

MindsDB是开源服务器,能部署在任何地方——从笔记本电脑到云端,能随意定制。

MindsDB的架构围绕三个基本能力构建:

连接数据

能连接数百个企业数据源。这些集成功能让MindsDB可以访问任何位置的数据,为其他所有功能奠定基础。

统一数据

连接数据源后,可用完整的SQL方言查询这些数据源,就像它们都是同一个数据库的一部分。MindsDB的联邦查询引擎会转换SQL查询,并在相应的连接数据源上执行。

处理多个数据源时,生成响应前整理和统一数据很重要。MindsDB SQL提供虚拟表(视图、知识库、机器学习模型),让异构数据能像在一个统一的系统中那样被处理。

• 视图:通过创建跨不同来源的统一视图简化数据访问(无需ETL)。

• 知识库:索引和组织非结构化数据,方便检索。

• 机器学习模型:应用AI/ML转换,从数据中获取见解。

可以使用任务自动统一数据。

• 任务:安排同步和转换任务,用于实时处理。

从数据中响应

与数据对话

• 代理:配置内置代理,专门用于在已连接和统一的数据上回答问题。

• MCP:通过MCP(模型上下文协议)连接MindsDB,实现无缝交互。

安装MindsDB

有多种安装方式可供选择:

• 使用Docker Desktop。这是最快且推荐的入门方式,能快速运行所有功能。

• 使用Docker。这种方式也很简单,但能更灵活地定制服务器。

• 使用AWS Marketplace。可以在云端运行MindsDB。

• 使用PyPI。这种方式能参与MindsDB的贡献。

快速入门教程

开始前,先通过Docker或Docker Desktop在本地安装MindsDB。

使用MindsDB只需几个简单步骤:

步骤1:连接数据源

可以在这里查看所有可用的数据源。

使用CREATE DATABASE语句将数据源连接到MindsDB:

CREATE DATABASE mysql_demo_db WITH ENGINE = 'mysql', PARAMETERS = {
    "user": "user",
    "password": "MindsDBUser123!",
    "host": "samples.mindsdb.com",
    "port": "3306",
    "database": "public"
};

以下是后续步骤中使用的输入数据:

SELECT * FROM mysql_demo_db.questions LIMIT 3;

输出如下:

+------------------+--------------------------------------------------------+-------------+
| article_title    | question                                               | true_answer |
+------------------+--------------------------------------------------------+-------------+
| Alessandro_Volta | Was Volta an Italian physicist?                        | yes         |
| Alessandro_Volta | Is Volta buried in the city of Pittsburgh?             | no          |
| Alessandro_Volta | Did Volta have a passion for the study of electricity? | yes         |
+------------------+--------------------------------------------------------+-------------+

步骤2:配置AI引擎

可以在这里查看所有可用的AI引擎。

使用CREATE ML_ENGINE命令配置AI引擎。这里以OpenAI引擎为例:

CREATE ML_ENGINE openai_engine FROM openai USING
    openai_api_key = 'your-openai-api-key';

步骤3:创建和部署AI模型

MindsDB将AI模型抽象为AI表。这一步使用步骤2中配置的AI引擎。

使用CREATE MODEL语句基于步骤2中创建的AI引擎创建、训练和部署AI模型:

CREATE MODEL question_answering_model PREDICT answer USING
    engine = 'openai_engine',
    prompt_template = 'answer the question of text:{{question}} about text:{{article_title}}';

该模型需要{{question}}{{article_title}}作为输入,并生成answer作为输出。

步骤4:查询预测

通过将数据表与AI表连接来获取预测:

SELECT input.article_title, input.question, output.answer
FROM mysql_demo_db.questions AS input
JOIN question_answering_model AS output
LIMIT 3;

输出数据如下:

+------------------+--------------------------------------------------------+--------------------------------------------------------+
| article_title    | question                                               | answer                                                 |
+------------------+--------------------------------------------------------+--------------------------------------------------------+
| Alessandro_Volta | Was Volta an Italian physicist?                        | Yes, Volta was an Italian physicist.                   |
| Alessandro_Volta | Is Volta buried in the city of Pittsburgh?             | No, Volta is not buried in the city of Pittsburgh.     |
| Alessandro_Volta | Did Volta have a passion for the study of electricity? | Yes, Volta had a passion for the study of electricity. |
+------------------+--------------------------------------------------------+--------------------------------------------------------+

步骤5:自动化自定义工作流

使用任务或触发器自动化工作流。

创建一个工作流,使用任务(重新)创建一个包含预测答案的表:

CREATE JOB answer_questions (
    CREATE OR REPLACE TABLE data_source.questions_answers (
        SELECT input.article_title, input.question, output.answer
        FROM mysql_demo_db.questions AS input
        JOIN question_answering_model AS output
    )
) EVERY 1 day;

需要使用CREATE DATABASE语句连接data_source,且连接的数据源用户需有写入权限。

这个任务会在已连接的数据源中创建questions_answers表。表中会填充输入数据表中的问题和AI表生成的答案。如果输入数据表每天都有新问题添加,这个任务会每天执行一次。

可以使用LAST关键字只获取输入数据表中新增的问题。这样就能将新的问答对插入questions_answers表,而不用重新创建表。但要做到这一点,输入数据表必须提供日期/时间列或整数/浮点数列,用于datetime > LAST这样的条件。可以在这里了解更多关于LAST关键字的信息。