GitHub概要

lancedb/lancedb

Developer-friendly, embedded retrieval engine for multimodal AI. Search More; Manage Less.

スター7,182
ウォッチ36
フォーク559
作成日:2023年2月28日
言語:Python
ライセンス:Apache License 2.0

トピックス

approximate-nearest-neighbor-searchimage-searchnearest-neighbor-searchrecommender-systemsearch-enginesemantic-searchsimilarity-searchvector-database

スター履歴

lancedb/lancedb Star History
データ取得日時: 2025/7/30 03:04

LanceDBとは

LanceDBは、「Search More; Manage Less」の哲学を掲げる開発者フレンドリーなマルチモーダル検索エンジンです。AIアプリケーション向けに設計されたオープンソースのベクトルデータベースで、大規模なマルチモーダルデータでの埋め込み管理、クエリ、検索を提供します。組み込み版とサーバーレス版の両方を提供し、さまざまな規模とアーキテクチャに対応します。

主な特徴

柔軟なデプロイメント

  • 組み込みモード(OSS): インプロセスで動作し、低遅延アクセスとセルフホスト簡素化を実現
  • サーバーレスクラウド: ストレージとコンピュートを分離したSaaSソリューション(最大100倍のコスト削減)
  • サーバーなし・管理なし: 運用の手間を最小限に抑制

マルチモーダル対応

  • 実際のデータ保存: 埋め込みとメタデータだけでなく、画像、動画、テキスト、音声ファイルなども保存
  • Lance形式: 自動データバージョニングと高速検索・フィルタリングを提供
  • 統合管理: 複数の種類のデータを一元管理し、複雑なデータパイプラインを簡素化

高性能アーキテクチャ

  • Rust製コア: Lance列指向データ形式上に構築され、パフォーマンスMLワークロードと高速ランダムアクセスに最適化
  • ゼロコピーアクセス: Apache Arrow統合により共有メモリでの真のゼロコピーアクセス
  • SIMD・GPU加速: 最新のハードウェア機能を活用した高速化

包括的検索機能

  • ベクトル類似検索: 数十億ベクトルをミリ秒で検索する最先端インデックス
  • フルテキスト検索: テキストベースの検索機能
  • ハイブリッド検索: ベクトルとテキストを組み合わせた検索
  • SQLクエリ: DataFusionによるSQL インターフェース

最新機能(2025年)

  • LanceDBクラウド: 2025年6月1日にローンチされたサーバーレスクラウドサービス
  • 自動データバージョニング: 追加インフラなしでデータバージョン管理
  • GPU支援: ベクトルインデックス構築のためのGPUサポート(Python SDK)

メリット・デメリット

メリット

  • パフォーマンスMLワークロード向けに最適化された設計
  • マルチモーダルデータの統合管理
  • 組み込みからクラウドまで柔軟なデプロイメント
  • Apache Arrowエコシステムとの緊密な統合
  • ランダムアクセスでParquetの1000倍高速
  • 自動データバージョニング機能

デメリット

  • 比較的新しいプロジェクトで実績が少ない
  • 学習リソースが他のベクトルDBより限定的
  • エンタープライズ機能は有償版が必要な場合がある

主要リンク

インストール方法

Python

pip install lancedb

JavaScript/TypeScript

npm install @lancedb/lancedb

Rust

[dependencies]
lancedb = "0.11.0"

使用例

基本的な使用方法(Python)

import lancedb
import numpy as np

# データベース接続
uri = "./sample-lancedb"
db = lancedb.connect(uri)

# データ準備
data = [
    {"vector": [3.1, 4.1], "item": "foo", "price": 10.0},
    {"vector": [5.9, 26.5], "item": "bar", "price": 20.0}
]

# テーブル作成とデータ挿入
table = db.create_table("my_table", data=data)

# ベクトル検索
result = table.search([100, 100]).limit(2).to_pandas()
print(result)

マルチモーダルデータの例

import lancedb
from PIL import Image
import requests
from io import BytesIO

# データベース接続
db = lancedb.connect("./multimodal-db")

# 画像データを含むテーブル作成
data = [
    {
        "image_url": "https://example.com/image1.jpg",
        "description": "美しい風景写真",
        "vector": [0.1, 0.2, 0.3, 0.4]  # 埋め込みベクトル
    },
    {
        "image_url": "https://example.com/image2.jpg", 
        "description": "都市の夜景",
        "vector": [0.5, 0.6, 0.7, 0.8]
    }
]

table = db.create_table("images", data=data)

# 類似画像検索
query_vector = [0.15, 0.25, 0.35, 0.45]
results = table.search(query_vector).limit(5).to_pandas()
print(results)

フルテキスト検索との組み合わせ

import lancedb

db = lancedb.connect("./hybrid-search-db")

# フルテキストインデックス付きテーブル作成
data = [
    {
        "text": "機械学習とAIの基礎",
        "content": "この記事では機械学習の基本概念について説明します",
        "vector": [1.0, 2.0, 3.0]
    },
    {
        "text": "深層学習の応用", 
        "content": "深層学習を実世界の問題に適用する方法を解説",
        "vector": [4.0, 5.0, 6.0]
    }
]

table = db.create_table("articles", data=data)
table.create_fts_index("content")  # フルテキストインデックス作成

# ハイブリッド検索(ベクトル + フルテキスト)
results = (
    table.search([1.5, 2.5, 3.5])
    .where("content MATCH '機械学習'")
    .limit(10)
    .to_pandas()
)
print(results)

JavaScript/TypeScript の例

import * as lancedb from '@lancedb/lancedb';

async function main() {
  // データベース接続
  const uri = './sample-lancedb';
  const db = await lancedb.connect(uri);
  
  // データ準備
  const data = [
    { vector: [3.1, 4.1], item: 'foo', price: 10.0 },
    { vector: [5.9, 26.5], item: 'bar', price: 20.0 }
  ];
  
  // テーブル作成
  const table = await db.createTable('my_table', data);
  
  // 検索実行
  const results = await table.search([100, 100]).limit(2).toArray();
  console.log(results);
}

main().catch(console.error);

統合とエコシステム

Apache Arrowエコシステム

  • Pandas: DataFrameとの直接統合
  • Polars: 高性能データフレーム操作
  • DuckDB: 高速分析クエリ
  • Pydantic: データ検証とシリアライゼーション

AIフレームワーク統合

  • LangChain: RAGアプリケーション構築
  • LlamaIndex: 文書検索とQAシステム
  • Haystack: NLP パイプライン

クラウドストレージ

  • AWS S3
  • Google Cloud Storage
  • Azure Blob Storage
  • ローカルファイルシステム

まとめ

LanceDBは、マルチモーダルAIアプリケーション向けに設計された次世代のベクトルデータベースです。Lance列指向形式による高性能、マルチモーダルデータの統合管理、柔軟なデプロイメント選択肢により、現代のAI開発における複雑な要求に対応します。組み込みからサーバーレスクラウドまで、さまざまな規模とアーキテクチャに適応できる柔軟性が最大の強みです。