包详细信息

@mastra/lance

mastra-ai2.9k0.2.11

Lance provider for Mastra - includes both vector and db storage capabilities

自述文件

Mastra LanceDB Storage & Vector Usage Guide

This guide explains how to use LanceDB as both a storage backend and vector database with Mastra. LanceDB provides a high-performance, open-source, and embeddable vector database built on Lance file format.

Installation

pnpm add @mastra/lance @lancedb/lancedb apache-arrow

Setup & Configuration

Basic Setup

import { LanceStorage } from '@mastra/lance';
import { Mastra } from '@mastra/core/mastra';

// Initialize LanceStorage
const storage = await LanceStorage.create(
  'myApp', // Name for your storage instance
  'path/to/db', // Path to database directory
);

// Configure Mastra with LanceStorage
const mastra = new Mastra({
  storage: storage,
});

Connection Options

LanceStorage supports multiple connection configurations:

// Local database
const localStore = await LanceStorage.create('myApp', '/path/to/db');

// LanceDB Cloud
const cloudStore = await LanceStorage.create('myApp', 'db://host:port');

// S3 bucket
const s3Store = await LanceStorage.create('myApp', 's3://bucket/db', { storageOptions: { timeout: '60s' } });

Basic Operations

Creating Tables

import { TABLE_MESSAGES } from '@mastra/core/storage';
import type { StorageColumn } from '@mastra/core/storage';

// Define schema with appropriate types
const schema: Record<string, StorageColumn> = {
  id: { type: 'uuid', nullable: false },
  threadId: { type: 'uuid', nullable: false },
  content: { type: 'text', nullable: true },
  createdAt: { type: 'timestamp', nullable: false },
  metadata: { type: 'jsonb', nullable: true },
};

// Create table
await storage.createTable({
  tableName: TABLE_MESSAGES,
  schema,
});

Inserting Records

// Insert a single record
await storage.insert({
  tableName: TABLE_MESSAGES,
  record: {
    id: '123e4567-e89b-12d3-a456-426614174000',
    threadId: '123e4567-e89b-12d3-a456-426614174001',
    content: 'Hello, world!',
    createdAt: new Date(),
    metadata: { tags: ['important', 'greeting'] },
  },
});

// Batch insert multiple records
await storage.batchInsert({
  tableName: TABLE_MESSAGES,
  records: [
    {
      id: '123e4567-e89b-12d3-a456-426614174002',
      threadId: '123e4567-e89b-12d3-a456-426614174001',
      content: 'First message',
      createdAt: new Date(),
      metadata: { priority: 'high' },
    },
    {
      id: '123e4567-e89b-12d3-a456-426614174003',
      threadId: '123e4567-e89b-12d3-a456-426614174001',
      content: 'Second message',
      createdAt: new Date(),
      metadata: { priority: 'low' },
    },
  ],
});

Querying Data

// Load a record by id
const message = await storage.load({
  tableName: TABLE_MESSAGES,
  keys: { id: '123e4567-e89b-12d3-a456-426614174000' },
});

// Load messages from a thread
const messages = await storage.getMessages({
  threadId: '123e4567-e89b-12d3-a456-426614174001',
});

Working with Threads & Messages

Creating Threads

import type { StorageThreadType } from '@mastra/core/storage';

// Create a new thread
const thread: StorageThreadType = {
  id: '123e4567-e89b-12d3-a456-426614174010',
  resourceId: 'resource-123',
  title: 'New Discussion',
  createdAt: new Date(),
  metadata: { topic: 'technical-support' },
};

// Save the thread
const savedThread = await storage.saveThread({ thread });

Working with Messages

import type { MessageType } from '@mastra/core/memory';

// Create messages
const messages: MessageType[] = [
  {
    id: 'msg-001',
    threadId: '123e4567-e89b-12d3-a456-426614174010',
    resourceId: 'resource-123',
    role: 'user',
    content: 'How can I use LanceDB with Mastra?',
    createdAt: new Date(),
    type: 'text',
    toolCallIds: [],
    toolCallArgs: [],
    toolNames: [],
  },
  {
    id: 'msg-002',
    threadId: '123e4567-e89b-12d3-a456-426614174010',
    resourceId: 'resource-123',
    role: 'assistant',
    content: 'You can use LanceDB with Mastra by installing @mastra/lance package.',
    createdAt: new Date(),
    type: 'text',
    toolCallIds: [],
    toolCallArgs: [],
    toolNames: [],
  },
];

// Save messages
await storage.saveMessages({ messages });

// Retrieve messages with context
const retrievedMessages = await storage.getMessages({
  threadId: '123e4567-e89b-12d3-a456-426614174010',
  selectBy: [
    {
      id: 'msg-001',
      withPreviousMessages: 5, // Include up to 5 messages before this one
      withNextMessages: 5, // Include up to 5 messages after this one
    },
  ],
});

Working with Workflows

Mastra's workflow system uses LanceDB to persist workflow state for continuity across runs:

import type { WorkflowRunState } from '@mastra/core/storage';

// Persist a workflow snapshot
await storage.persistWorkflowSnapshot({
  workflowName: 'documentProcessing',
  runId: 'run-123',
  snapshot: {
    context: {
      steps: {
        step1: { status: 'success', payload: { data: 'processed' } },
        step2: { status: 'waiting' },
      },
      triggerData: { documentId: 'doc-123' },
      attempts: { step1: 1, step2: 0 },
    },
  } as WorkflowRunState,
});

// Load a workflow snapshot
const workflowState = await storage.loadWorkflowSnapshot({
  workflowName: 'documentProcessing',
  runId: 'run-123',
});

Using Lance for Vector Storage

The LanceDB integration in Mastra can be used for both traditional storage and vector search:

// Create a schema with vector field
const vectorSchema: Record<string, StorageColumn> = {
  id: { type: 'uuid', nullable: false },
  content: { type: 'text', nullable: true },
  embedding: { type: 'binary', nullable: false }, // Vector embedding
  metadata: { type: 'jsonb', nullable: true },
};

// Create a vector table
await storage.createTable({
  tableName: 'vector_store',
  schema: vectorSchema,
});

// Insert a vector with content and metadata
await storage.insert({
  tableName: 'vector_store',
  record: {
    id: 'vec-001',
    content: 'This is a document about LanceDB and Mastra integration',
    embedding: new Float32Array([0.1, 0.2, 0.3, 0.4]), // Your embedding vector
    metadata: { source: 'documentation', category: 'integration' },
  },
});

Data Management

// Drop a table
await storage.dropTable(TABLE_MESSAGES);

// Clear all records from a table
await storage.clearTable({ tableName: TABLE_MESSAGES });

// Get table schema
const schema = await storage.getTableSchema(TABLE_MESSAGES);

更新日志

@mastra/lance

0.2.11

Patch Changes

  • de3cbc6: Update the package.json file to include additional fields like repository, homepage or files.
  • f0dfcac: updated core peerdep
  • Updated dependencies [ab48c97]
  • Updated dependencies [85ef90b]
  • Updated dependencies [aedbbfa]
  • Updated dependencies [ff89505]
  • Updated dependencies [637f323]
  • Updated dependencies [de3cbc6]
  • Updated dependencies [c19bcf7]
  • Updated dependencies [4474d04]
  • Updated dependencies [183dc95]
  • Updated dependencies [a1111e2]
  • Updated dependencies [b42a961]
  • Updated dependencies [61debef]
  • Updated dependencies [9beaeff]
  • Updated dependencies [29de0e1]
  • Updated dependencies [f643c65]
  • Updated dependencies [00c74e7]
  • Updated dependencies [fef7375]
  • Updated dependencies [e3d8fea]
  • Updated dependencies [45e4d39]
  • Updated dependencies [9eee594]
  • Updated dependencies [7149d8d]
  • Updated dependencies [822c2e8]
  • Updated dependencies [979912c]
  • Updated dependencies [7dcf4c0]
  • Updated dependencies [4106a58]
  • Updated dependencies [ad78bfc]
  • Updated dependencies [0302f50]
  • Updated dependencies [6ac697e]
  • Updated dependencies [74db265]
  • Updated dependencies [0ce418a]
  • Updated dependencies [af90672]
  • Updated dependencies [8387952]
  • Updated dependencies [7f3b8da]
  • Updated dependencies [905352b]
  • Updated dependencies [599d04c]
  • Updated dependencies [56041d0]
  • Updated dependencies [3412597]
  • Updated dependencies [5eca5d2]
  • Updated dependencies [f2cda47]
  • Updated dependencies [5de1555]
  • Updated dependencies [cfd377a]
  • Updated dependencies [1ed5a3e]
    • @mastra/core@0.15.3

0.2.11-alpha.1

Patch Changes

0.2.11-alpha.0

Patch Changes

  • #7343 de3cbc6 Thanks @LekoArts! - Update the package.json file to include additional fields like repository, homepage or files.

  • Updated dependencies [85ef90b, de3cbc6]:

    • @mastra/core@0.15.3-alpha.5

0.2.10

Patch Changes

  • c6113ed Thanks @wardpeet! - Fix peerdpes for @mastra/core

  • Updated dependencies []:

    • @mastra/core@0.15.2

0.2.9

Patch Changes

  • 95b2aa9 Thanks @wardpeet! - Fix peerdeps @mastra/core

  • Updated dependencies []:

    • @mastra/core@0.15.1

0.2.8

Patch Changes

0.2.8-alpha.0

Patch Changes

0.2.7

Patch Changes

0.2.7-alpha.0

Patch Changes

0.2.6

Patch Changes

  • 03997ae: Update peerdeps
  • Updated dependencies [227c7e6]
  • Updated dependencies [12cae67]
  • Updated dependencies [fd3a3eb]
  • Updated dependencies [6faaee5]
  • Updated dependencies [4232b14]
  • Updated dependencies [a89de7e]
  • Updated dependencies [5a37d0c]
  • Updated dependencies [4bde0cb]
  • Updated dependencies [cf4f357]
  • Updated dependencies [ad888a2]
  • Updated dependencies [481751d]
  • Updated dependencies [2454423]
  • Updated dependencies [194e395]
  • Updated dependencies [a722c0b]
  • Updated dependencies [c30bca8]
  • Updated dependencies [3b5fec7]
  • Updated dependencies [a8f129d]
    • @mastra/core@0.14.0

0.2.6-alpha.0

Patch Changes

  • 03997ae: Update peerdeps
    • @mastra/core@0.14.0-alpha.7

0.2.5

Patch Changes

  • cc9035c: dependencies updates:
  • b32c50d: Filter scores by source
  • Updated dependencies [d5330bf]
  • Updated dependencies [2e74797]
  • Updated dependencies [8388649]
  • Updated dependencies [a239d41]
  • Updated dependencies [dd94a26]
  • Updated dependencies [3ba6772]
  • Updated dependencies [b5cf2a3]
  • Updated dependencies [2fff911]
  • Updated dependencies [b32c50d]
  • Updated dependencies [63449d0]
  • Updated dependencies [121a3f8]
  • Updated dependencies [ec510e7]
    • @mastra/core@0.13.2

0.2.5-alpha.0

Patch Changes

  • cc9035c: dependencies updates:
  • b32c50d: Filter scores by source
  • Updated dependencies [d5330bf]
  • Updated dependencies [a239d41]
  • Updated dependencies [b32c50d]
  • Updated dependencies [121a3f8]
  • Updated dependencies [ec510e7]
    • @mastra/core@0.13.2-alpha.2

0.2.4

Patch Changes

  • 4a406ec: fixes TypeScript declaration file imports to ensure proper ESM compatibility
  • Updated dependencies [cb36de0]
  • Updated dependencies [d0496e6]
  • Updated dependencies [a82b851]
  • Updated dependencies [ea0c5f2]
  • Updated dependencies [41a0a0e]
  • Updated dependencies [2871020]
  • Updated dependencies [94f4812]
  • Updated dependencies [e202b82]
  • Updated dependencies [e00f6a0]
  • Updated dependencies [4a406ec]
  • Updated dependencies [b0e43c1]
  • Updated dependencies [5d377e5]
  • Updated dependencies [1fb812e]
  • Updated dependencies [35c5798]
    • @mastra/core@0.13.0

0.2.4-alpha.0

Patch Changes

  • 4a406ec: fixes TypeScript declaration file imports to ensure proper ESM compatibility
  • Updated dependencies [cb36de0]
  • Updated dependencies [a82b851]
  • Updated dependencies [41a0a0e]
  • Updated dependencies [2871020]
  • Updated dependencies [4a406ec]
  • Updated dependencies [5d377e5]
    • @mastra/core@0.13.0-alpha.2

0.2.3

Patch Changes

  • f42c4c2: update peer deps for packages to latest core range
  • Updated dependencies [510e2c8]
  • Updated dependencies [2f72fb2]
  • Updated dependencies [27cc97a]
  • Updated dependencies [3f89307]
  • Updated dependencies [9eda7d4]
  • Updated dependencies [9d49408]
  • Updated dependencies [41daa63]
  • Updated dependencies [ad0a58b]
  • Updated dependencies [254a36b]
  • Updated dependencies [2ecf658]
  • Updated dependencies [7a7754f]
  • Updated dependencies [fc92d80]
  • Updated dependencies [e0f73c6]
  • Updated dependencies [0b89602]
  • Updated dependencies [4d37822]
  • Updated dependencies [23a6a7c]
  • Updated dependencies [cda801d]
  • Updated dependencies [a77c823]
  • Updated dependencies [ff9c125]
  • Updated dependencies [09bca64]
  • Updated dependencies [b8efbb9]
  • Updated dependencies [71466e7]
  • Updated dependencies [0c99fbe]
    • @mastra/core@0.12.0

0.2.3-alpha.0

Patch Changes

  • f42c4c2: update peer deps for packages to latest core range
    • @mastra/core@0.12.0-alpha.5

0.2.2

Patch Changes

  • ce088f5: Update all peerdeps to latest core
    • @mastra/core@0.11.1

0.2.1

Patch Changes

  • 7ba91fa: Throw mastra errors methods not implemented yet
  • 5889a31: implement scorers api for lance db
  • Updated dependencies [f248d53]
  • Updated dependencies [2affc57]
  • Updated dependencies [66e13e3]
  • Updated dependencies [edd9482]
  • Updated dependencies [18344d7]
  • Updated dependencies [9d372c2]
  • Updated dependencies [40c2525]
  • Updated dependencies [e473f27]
  • Updated dependencies [032cb66]
  • Updated dependencies [703ac71]
  • Updated dependencies [a723d69]
  • Updated dependencies [7827943]
  • Updated dependencies [5889a31]
  • Updated dependencies [bf1e7e7]
  • Updated dependencies [65e3395]
  • Updated dependencies [4933192]
  • Updated dependencies [d1c77a4]
  • Updated dependencies [bea9dd1]
  • Updated dependencies [dcd4802]
  • Updated dependencies [cbddd18]
  • Updated dependencies [7ba91fa]
    • @mastra/core@0.11.0

0.2.1-alpha.0

Patch Changes

  • 7ba91fa: Throw mastra errors methods not implemented yet
  • 5889a31: implement scorers api for lance db
  • Updated dependencies [f248d53]
  • Updated dependencies [2affc57]
  • Updated dependencies [66e13e3]
  • Updated dependencies [edd9482]
  • Updated dependencies [18344d7]
  • Updated dependencies [9d372c2]
  • Updated dependencies [40c2525]
  • Updated dependencies [e473f27]
  • Updated dependencies [032cb66]
  • Updated dependencies [703ac71]
  • Updated dependencies [a723d69]
  • Updated dependencies [5889a31]
  • Updated dependencies [65e3395]
  • Updated dependencies [4933192]
  • Updated dependencies [d1c77a4]
  • Updated dependencies [bea9dd1]
  • Updated dependencies [dcd4802]
  • Updated dependencies [7ba91fa]
    • @mastra/core@0.11.0-alpha.2

0.2.0

Minor Changes

  • 8a3bfd2: Update peerdeps to latest core

Patch Changes

  • d8f2d19: Add updateMessages API to storage classes (only support for PG and LibSQL for now) and to memory class. Additionally allow for metadata to be saved in the content field of a message.
  • 0fb9d64: [MASTRA-4018] Update saveMessages in storage adapters to upsert messages
  • 2097952: [MASTRA-4021] Fix PG getMessages and update messageLimit for all storage adapters
  • 144eb0b: [MASTRA-3669] Metadata Filter Types
  • 0e17048: Throw mastra errors in storage packages
  • Updated dependencies [15e9d26]
  • Updated dependencies [d1baedb]
  • Updated dependencies [d8f2d19]
  • Updated dependencies [4d21bf2]
  • Updated dependencies [07d6d88]
  • Updated dependencies [9d52b17]
  • Updated dependencies [2097952]
  • Updated dependencies [792c4c0]
  • Updated dependencies [5d74aab]
  • Updated dependencies [a8b194f]
  • Updated dependencies [4fb0cc2]
  • Updated dependencies [d2a7a31]
  • Updated dependencies [502fe05]
  • Updated dependencies [144eb0b]
  • Updated dependencies [8ba1b51]
  • Updated dependencies [4efcfa0]
  • Updated dependencies [0e17048]
    • @mastra/core@0.10.7

0.2.0-alpha.3

Minor Changes

  • 8a3bfd2: Update peerdeps to latest core

Patch Changes

  • Updated dependencies [792c4c0]
  • Updated dependencies [502fe05]
  • Updated dependencies [4efcfa0]
    • @mastra/core@0.10.7-alpha.3

0.1.3-alpha.2

Patch Changes

  • 0fb9d64: [MASTRA-4018] Update saveMessages in storage adapters to upsert messages
  • 144eb0b: [MASTRA-3669] Metadata Filter Types
  • Updated dependencies [15e9d26]
  • Updated dependencies [07d6d88]
  • Updated dependencies [5d74aab]
  • Updated dependencies [144eb0b]
    • @mastra/core@0.10.7-alpha.2

0.1.3-alpha.1

Patch Changes

  • 2097952: [MASTRA-4021] Fix PG getMessages and update messageLimit for all storage adapters
  • 0e17048: Throw mastra errors in storage packages
  • Updated dependencies [d1baedb]
  • Updated dependencies [4d21bf2]
  • Updated dependencies [2097952]
  • Updated dependencies [4fb0cc2]
  • Updated dependencies [d2a7a31]
  • Updated dependencies [0e17048]
    • @mastra/core@0.10.7-alpha.1

0.1.3-alpha.0

Patch Changes

  • d8f2d19: Add updateMessages API to storage classes (only support for PG and LibSQL for now) and to memory class. Additionally allow for metadata to be saved in the content field of a message.
  • Updated dependencies [d8f2d19]
  • Updated dependencies [9d52b17]
  • Updated dependencies [8ba1b51]
    • @mastra/core@0.10.7-alpha.0

0.1.2

Patch Changes

  • 63f6b7d: dependencies updates:
  • Updated dependencies [63f6b7d]
  • Updated dependencies [12a95fc]
  • Updated dependencies [4b0f8a6]
  • Updated dependencies [51264a5]
  • Updated dependencies [8e6f677]
  • Updated dependencies [d70c420]
  • Updated dependencies [ee9af57]
  • Updated dependencies [36f1c36]
  • Updated dependencies [2a16996]
  • Updated dependencies [10d352e]
  • Updated dependencies [9589624]
  • Updated dependencies [53d3c37]
  • Updated dependencies [751c894]
  • Updated dependencies [577ce3a]
  • Updated dependencies [9260b3a]
    • @mastra/core@0.10.6

0.1.2-alpha.0

Patch Changes

  • 63f6b7d: dependencies updates:
  • Updated dependencies [63f6b7d]
  • Updated dependencies [36f1c36]
  • Updated dependencies [10d352e]
  • Updated dependencies [53d3c37]
    • @mastra/core@0.10.6-alpha.0

0.1.1

Patch Changes

  • dffb67b: updated stores to add alter table and change tests
  • 925ab94: added paginated functions to base class and added boilerplate and updated imports
  • f7f8293: Added LanceDB implementations for MastraVector and MastraStorage
  • 66f4424: Update peerdeps
  • Updated dependencies [d1ed912]
  • Updated dependencies [f6fd25f]
  • Updated dependencies [dffb67b]
  • Updated dependencies [f1f1f1b]
  • Updated dependencies [925ab94]
  • Updated dependencies [f9816ae]
  • Updated dependencies [82090c1]
  • Updated dependencies [1b443fd]
  • Updated dependencies [ce97900]
  • Updated dependencies [f1309d3]
  • Updated dependencies [14a2566]
  • Updated dependencies [f7f8293]
  • Updated dependencies [48eddb9]
    • @mastra/core@0.10.4

0.1.1-alpha.2

Patch Changes

  • 66f4424: Update peerdeps

0.1.1-alpha.1

Patch Changes

  • 925ab94: added paginated functions to base class and added boilerplate and updated imports
  • Updated dependencies [925ab94]
    • @mastra/core@0.10.4-alpha.3

0.1.1-alpha.0

Patch Changes

  • dffb67b: updated stores to add alter table and change tests
  • f7f8293: Added LanceDB implementations for MastraVector and MastraStorage
  • Updated dependencies [f6fd25f]
  • Updated dependencies [dffb67b]
  • Updated dependencies [f1309d3]
  • Updated dependencies [f7f8293]
    • @mastra/core@0.10.4-alpha.1