Files
mindsdb--mindsdb/docs/quickstart-tutorial.mdx
2025-07-28 12:59:03 +02:00

189 lines
5.3 KiB
Plaintext

---
title: Tutorial to Get Started with MindsDB
sidebarTitle: Quickstart
icon: "play"
---
Before we start, install MindsDB locally via [Docker](/setup/self-hosted/docker) or [Docker Desktop](/setup/self-hosted/docker-desktop).
Get started with MindsDB in a few simple steps:
<Steps>
<Step title="Connect">
Connect one or more data sources. Explore all available [data sources here](/integrations/data-overview).
</Step>
<Step title="Unify">
Unify your data with [knowledge bases](/mindsdb_sql/knowledge_bases/overview).
</Step>
<Step title="Respond">
Respond to questions over your data with [AI agents](/mindsdb_sql/agents/agent).
</Step>
</Steps>
## Step 1. Connect
MindsDB enables connecting data from various data sources and operating on data without moving it from its source. Learn more [here](/mindsdb-connect).
* **Connecting Structured Data**
Use the [`CREATE DATABASE`](/mindsdb_sql/sql/create/database) statement to connect a data source to MindsDB.
```sql
CREATE DATABASE mysql_demo_db
WITH ENGINE = 'mysql',
PARAMETERS = {
"user": "user",
"password": "MindsDBUser123!",
"host": "samples.mindsdb.com",
"port": "3306",
"database": "public"
};
```
This is the input data used in the following steps:
```sql
SELECT *
FROM mysql_demo_db.home_rentals
LIMIT 3;
```
The sample contains contains information about properties for rent.
* **Connecting Unstructured Data**
Extract data from webpages using the [web crawler](/integrations/app-integrations/web-crawler) or [upload files](/integrations/files/csv-xlsx-xls) to MindsDB.
In this example, we fetch data from MindsDB Documentation webpage using the web crawler.
```sql
CREATE DATABASE my_web
WITH ENGINE = 'web';
SELECT url, text_content
FROM my_web.crawler
WHERE url = 'https://docs.mindsdb.com/'
```
Now we save this data into a view which is saved in the default `mindsdb` project.
```sql
CREATE VIEW mindsdb_docs (
SELECT url, text_content
FROM my_web.crawler
WHERE url = 'https://docs.mindsdb.com/'
);
SELECT *
FROM mindsdb.mindsdb_docs;
```
## Step 2. Unify
MindsDB enables unifying data from structured and unstructured data sources into a single, queryable interface. This unified view allows seamless querying and model-building across all data without consolidation into one system. Learn more [here](/mindsdb-unify).
Create a knowledge base to store all your data in a single location. Learn more about [knowledge bases here](/mindsdb_sql/knowledge_bases/overview).
```sql
CREATE KNOWLEDGE_BASE my_kb
USING
embedding_model = {
"provider": "openai",
"model_name" : "text-embedding-3-large",
"api_key": "your-openai-api-key"
},
reranking_model = {
"provider": "openai",
"model_name": "gpt-4o",
"api_key": "your-openai-api-key"
},
content_columns = ['content'];
```
[Insert data](/mindsdb_sql/knowledge_bases/insert_data) from Step 1 into the knowledge base.
```sql
INSERT INTO my_kb
SELECT
'number_of_rooms: ' || number_of_rooms || ', ' ||
'number_of_bathrooms' || number_of_bathrooms || ', ' ||
'sqft' || sqft || ', ' ||
'location' || location || ', ' ||
'days_on_market' || days_on_market || ', ' ||
'neighborhood' || neighborhood || ', ' ||
'rental_price' || rental_price
AS content
FROM mysql_demo_db.home_rentals;
INSERT INTO my_kb
SELECT text_content AS content
FROM mindsdb.mindsdb_docs;
```
[Query the knowledge base](/mindsdb_sql/knowledge_bases/query) to search your data.
```sql
SELECT *
FROM my_kb
WHERE content = 'what is MindsDB';
SELECT *
FROM my_kb
WHERE content = 'rental price lower than 2000';
```
<Tip>
In order to keep the knowledge base up-to-date with your data, use [jobs](/mindsdb_sql/sql/create/jobs) to automate data inserts every time your data is modified.
```sql
CREATE JOB update_kb (
INSERT INTO my_kb
SELECT
'number_of_rooms: ' || number_of_rooms || ', ' ||
'number_of_bathrooms' || number_of_bathrooms || ', ' ||
'sqft' || sqft || ', ' ||
'location' || location || ', ' ||
'days_on_market' || days_on_market || ', ' ||
'neighborhood' || neighborhood || ', ' ||
'rental_price' || rental_price
AS content
FROM mysql_demo_db.home_rentals
WHERE created_at > LATEST
)
EVERY 1 day;
```
</Tip>
## Step 3. Respond
MindsDB enables generating insightful and accurate responses from unified data using natural language. Learn more [here](/mindsdb-respond).
Create an [agent](https://docs.mindsdb.com/mindsdb_sql/agents/agent) that can answer questions over your unified data from Step 2.
```sql
CREATE AGENT my_agent
USING
model = {
"provider": "openai",
"model_name" : "gpt-4o",
"api_key": "your-openai-api-key"
},
data = {
"knowledge_bases": ["mindsdb.my_kb"],
"tables": ["mysql_demo_db.home_rentals"]
},
prompt_template = 'mindsdb.my_kb stores data about mindsdb and home rentals,
mysql_demo_db.home_rentals stores data about home rentals';
```
Now you can ask questions over your data.
```sql
SELECT *
FROM my_agent
WHERE question = 'what is MindsDB?';
```
Visit the [Respond tab in the MindsDB Editor](/mindsdb_sql/agents/agent_gui) to chat with an agent.