Skip to main content

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 → Utf8
  • int, integer → Int32
  • float → Float32
  • jsonb, 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