MindsDB能让人类、AI、代理和应用在分散的大规模数据源中获得高精度答案,内置MCP服务器,能让MCP应用连接、整合分散的数据——包括数据库、数据仓库和SaaS应用,对相关问题做出回应。
无论是结构化数据还是非结构化数据,无论这些数据分散在SaaS应用、数据库中,还是存放在数据仓库里,MindsDB都能处理。
MindsDB是开源服务器,能部署在任何地方——从笔记本电脑到云端,能随意定制。
MindsDB的架构围绕三个基本能力构建:
能连接数百个企业数据源。这些集成功能让MindsDB可以访问任何位置的数据,为其他所有功能奠定基础。
连接数据源后,可用完整的SQL方言查询这些数据源,就像它们都是同一个数据库的一部分。MindsDB的联邦查询引擎会转换SQL查询,并在相应的连接数据源上执行。
处理多个数据源时,生成响应前整理和统一数据很重要。MindsDB SQL提供虚拟表(视图、知识库、机器学习模型),让异构数据能像在一个统一的系统中那样被处理。
• 视图:通过创建跨不同来源的统一视图简化数据访问(无需ETL)。
• 知识库:索引和组织非结构化数据,方便检索。
• 机器学习模型:应用AI/ML转换,从数据中获取见解。
可以使用任务自动统一数据。
• 任务:安排同步和转换任务,用于实时处理。
• 代理:配置内置代理,专门用于在已连接和统一的数据上回答问题。
• MCP:通过MCP(模型上下文协议)连接MindsDB,实现无缝交互。
有多种安装方式可供选择:
• 使用Docker Desktop。这是最快且推荐的入门方式,能快速运行所有功能。
• 使用Docker。这种方式也很简单,但能更灵活地定制服务器。
• 使用AWS Marketplace。可以在云端运行MindsDB。
• 使用PyPI。这种方式能参与MindsDB的贡献。
开始前,先通过Docker或Docker Desktop在本地安装MindsDB。
使用MindsDB只需几个简单步骤:
可以在这里查看所有可用的数据源。
使用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 |
+------------------+--------------------------------------------------------+-------------+
可以在这里查看所有可用的AI引擎。
使用CREATE ML_ENGINE
命令配置AI引擎。这里以OpenAI引擎为例:
CREATE ML_ENGINE openai_engine FROM openai USING
openai_api_key = 'your-openai-api-key';
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
作为输出。
通过将数据表与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. |
+------------------+--------------------------------------------------------+--------------------------------------------------------+
使用任务或触发器自动化工作流。
创建一个工作流,使用任务(重新)创建一个包含预测答案的表:
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
关键字的信息。