Building Embodied AI Memory: How moteDB Stores Vector, Time-Series, and State Together
A robot operating in a warehouse needs to store multiple types of data simultaneously: camera embeddings for scene recognition, LIDAR time-series for navigation, and structured state for task configuration. Traditionally, this means running three different databases. With moteDB, you get one.
The Three Data Types of Embodied AI
1. Vector Embeddings
When your robot perceives the world through cameras, each frame gets converted to a vector embedding. Over time, you want to search: "has the robot seen something similar before?" moteDB provides HNSW and IVF indexes for approximate nearest-neighbor search at scale.
2. Time-Series Data
LIDAR readings, IMU data, motor telemetry — these are sequences of timestamped measurements. moteDB's time-series engine handles high-throughput ingestion with automatic downsampling and compression.
3. Structured State
Robot configuration, task definitions, learned parameters — this is structured relational data. moteDB provides CRUD operations with indexes and queries.
A Practical Example
use motedb::{Database, Store};
let db = Database::new("warehouse_robot.db")?;
// Store perception embedding
db.insert_vector("vision", &[0.1f32; 384], "frame_001")?;
// Store LIDAR time-series
for reading in lidar_data {
db.insert_timeseries("lidar", reading.timestamp, reading.distance)?;
}
// Store structured state
db.insert("robot_config", &RobotConfig { mode: "exploring", battery: 0.85 })?;
// Query: find similar past frames
let matches = db.search("vision", current_embedding, 5)?;
// Query: last 10 minutes of LIDAR
let recent = db.query_timeseries("lidar").after(timestamp - 600).exec()?;
Why Not Three Separate Databases?
Three databases means three maintenance burdens, three failure points, and three network round-trips per perception cycle. For an embedded robot, every millisecond matters. moteDB runs in-process with zero network overhead.
Get Started
cargo add motedb
GitHub: github.com/motedb/motedb
Top comments (0)