LanceDB Storage
The LanceDB storage implementation provides a high-performance storage solution using the LanceDB database system, which excels at handling both traditional data storage and vector operations.
Installation
npm install @mastra/lance
Usage
Basic Storage Usage
import { LanceStorage } from "@mastra/lance";
// Connect to a local database
const storage = await LanceStorage.create("my-storage", "/path/to/db");
// Connect to a LanceDB cloud database
const storage = await LanceStorage.create("my-storage", "db://host:port");
// Connect to a cloud database with custom options
const storage = await LanceStorage.create("my-storage", "s3://bucket/db", {
storageOptions: { timeout: "60s" },
});
Parameters
LanceStorage.create()
name:
string
Name identifier for the storage instance
uri:
string
URI to connect to the LanceDB database. Can be a local path, cloud DB URL, or S3 bucket URL
options?:
ConnectionOptions
Connection options for LanceDB, such as timeout settings, authentication, etc.
Additional Notes
Schema Management
The LanceStorage implementation automatically handles schema creation and updates. It maps Mastra’s schema types to Apache Arrow data types, which are used by LanceDB internally:
text
,uuid
→ Utf8int
,integer
→ Int32float
→ Float32jsonb
,json
→ Utf8 (serialized)binary
→ Binary
Deployment Options
LanceDB storage can be configured for different deployment scenarios:
- Local Development: Use a local file path for development and testing
/path/to/db
- Cloud Deployment: Connect to a hosted LanceDB instance
db://host:port
- S3 Storage: Use Amazon S3 for scalable cloud storage
s3://bucket/db
Table Management
LanceStorage provides methods for managing tables:
- Create tables with custom schemas
- Drop tables
- Clear tables (delete all records)
- Load records by key
- Insert single and batch records