Skip to content
プロジェクト

oceanbase/seekdb has 3,242 GitHub stars and 1,343 forks. GitHot measured 0 stars in 24 hours and +9 in 7 days. Last checked 2026-11-14 03:48 UTC. Last push 2026-11-14.

この数値の測り方

計測したスター増加

24時間
0
7日間
+9
15日間
履歴を収集中
1か月
履歴を収集中

期間ごとの純増数です。期間は重複しており、日別の値ではありません。未計測の値は空欄です。スター数は注目度の指標であり、品質の保証ではありません。

概要

The AI-Native Search Database. Best for agent storage, it unifies vector, text, structured, and semi-structured data into a single engine. This all-in-one database makes agents smarter, easier to run, and more stable.

データ

README_JP.md

オリジナル
seekdb logo

Write · Search · Fork — AI エージェントのためのステートストア

GitHub Stars Latest Release Commit Activity Contributors Issues License Downloads Join Discord Documentation Ask DeepWiki follow on LinkedIn YouTube

MySQL 互換 · 組み込み / サーバー両対応 · ベクトル + 全文ハイブリッド検索 · COW サンドボックス

⚡ ストリーミング書き込み + 検索で 1,523 QPS(10× Milvus、3× Elasticsearch)
🌿 FORK/MERGE サンドボックスでエージェントが安全に探索・自由にロールバック
🔍 ベクトル + 全文 + スカラーを 1 本の SQL で完結
🐬 完全な ACID、MySQL プロトコル、LangChain / LlamaIndex / Dify にネイティブ対応

English | 中文版 | 日本語

30 秒で試す · クイックスタート · 組み込み SDK · なぜ seekdb か · エコシステム · 開発

seekdb が役立つと思ったら、star をお願いします — より多くの人にプロジェクトを届けられます。


⚡ パフォーマンス概要

seekdb ベンチマーク:Milvus の 10.7 倍、Elasticsearch の 3.2 倍の QPS

📖 ローンチブログを読む → · 🔁 ベンチマークを再現する →


⏱️ 30 秒で試す

seekdb 30 秒デモ
pip install -U pyseekdb   # pyseekdb は seekdb の Python SDK です

📋 demo.py ソースを見る →

この Python デモでは、サーバーの手動デプロイ、スキーマ定義、エンベディング設定は不要です。Python、JavaScript、Go でローカルデータベースを実行 →


✨ なぜ AI エージェントに seekdb なのか?

🔥 ストリーミング書き込み + 並行検索、P99 スパイクなし

エージェントのワークロードは「絶え間ない書き込み + ミリ秒単位の読み取り」が本質です。seekdb の非同期インデックスパイプライン(Change Stream) が DML とインデックス構築を分離し、2 レベル HNSW(インクリメンタル + スナップショット)によって、書き込み直後のベクトルが即座に検索可能になります。

seekdb 非同期インデックスパイプラインアーキテクチャ

書き込みパスはコミット後、インデックス構築を待たずに即座にリターンします。Change Stream パイプラインが redo ログを非同期で消費し、デルタ HNSW を更新。クエリはデルタインデックスとスナップショットインデックスの両方にきめ細かい読み取りロックでアクセスします — これが高並行性でも P99 が安定し続ける理由です。

実測結果:1,523 QPS、並行 P99 はわずか 21.7 ms — Milvus の 10.7 倍の QPS を達成。並行数上昇時の P99 ジッターは 1.1 倍に留まります(同一ワークロードで ES / Milvus は約 10 倍)。

ソース: src/observer/change_stream/ · src/observer/vector_index/

🌿 コピーオンライトサンドボックスでエージェントが自由に探索

FORK DATABASE でデータベース全体を数秒でスナップショット — データコピーはゼロ。エージェントはサンドボックス内で自由に実験(書き込み、クエリ、テーブル破壊すら可能)し、MERGE TABLE で成果をメインラインに反映するか、DROP DATABASE で丸ごと破棄。アプリケーション層の保存/復元ではなく、カーネルレベルの COW で実現しています。

-- 数秒でスナップショット、データコピーなし
FORK DATABASE agent_state TO agent_sandbox_42;

-- エージェントがサンドボックスで自由に読み書き...
USE agent_sandbox_42;
INSERT INTO memory (session_id, embedding, content) VALUES (...);

-- 成果をメインラインに反映(戦略:FAIL / THEIRS / OURS)
MERGE TABLE agent_sandbox_42.memory INTO agent_state.memory STRATEGY THEIRS;
-- ...または破棄:
DROP DATABASE agent_sandbox_42;

ソース: tools/deploy/mysql_test/test_suite/fork_table/

🔍 1 つの SQL でハイブリッド検索

ベクトル + 全文 + スカラーフィルターを単一の実行プランに統合。クライアント側での N+1 マージも、結果を貼り合わせるグルーコードも一切不要です。

SELECT id, title, l2_distance(emb, '[0.12,0.34,...]') AS dist
FROM docs
WHERE MATCH(content) AGAINST('quarterly report')
  AND author_id = 42
  AND created_at > '2026-01-01'
ORDER BY dist APPROXIMATE LIMIT 10;

🐬 MySQL 互換、ACID、組み込み可能

実績ある OceanBase SQL エンジン上に構築。組み込みライブラリ、単一ノードサーバー、または OceanBase 分散クラスターとして動作します。完全な ACID、リアルタイム書き込み、MySQL エコシステムをそのまま活用できます。


🎬 クイックスタート

組み込みでの利用

データベースサービスを手動でデプロイせずに、Python、Node.js、Go からローカルの seekdb を利用できます。データは指定したローカルディレクトリに保存され、再度開いても引き続き利用できます。

🐍 Python

pylibseekdb でローカルの seekdb を起動し、PyMySQL で SQL を実行します。Python 3.11 以降が必要です。

python3 -m pip install -U pylibseekdb pymysql

以下の例を example.py として保存します。connection_options() で接続引数を取得し、PyMySQL に渡します。コンテキストマネージャーにより、カーソルと SQL 接続を閉じてからランタイムハンドルを解放します:

from contextlib import closing

import pylibseekdb
import pymysql

with closing(pylibseekdb.open("./seekdb.db")) as db:
    options = db.connection_options()
    with pymysql.connect(
        database="test",
        autocommit=True,
        cursorclass=pymysql.cursors.DictCursor,
        **options,
    ) as connection:
        with connection.cursor() as cursor:
            cursor.execute("SELECT 1 AS value")
            print(cursor.fetchall())

実行すると [{'value': 1}] が出力されます:

python3 example.py

詳しい使い方 · 対応プラットフォームと環境要件

テキストのエンベディングやハイブリッド検索を備えた高水準の Collection API が必要な場合は、pyseekdb を参照してください。

🟨 JavaScript / TypeScript (Node.js)

@oceanbase/seekdb-node でローカルの seekdb を起動し、mysql2 で SQL を実行します。Node.js 22 以降が必要で、JavaScript と TypeScript の両方に対応しています。

npm install @oceanbase/seekdb-node mysql2

対応するネイティブランタイムが自動インストールされるよう、npm の optional dependencies を有効にしてください。このバインディングは独立したローカル seekdb プロセスを管理します。ランタイムハンドルを解放する前に SQL 接続を閉じてください。

以下の例を example.mjs として保存します(ES modules を使用し、TypeScript の型宣言も付属しています):

import { seekdb } from "@oceanbase/seekdb-node";
import mysql from "mysql2/promise";

const db = await seekdb.open("./seekdb.db");
let connection;
try {
  const endpoint = db.connectionOptions();
  const location = endpoint.transport === "tcp"
    ? { host: endpoint.host, port: endpoint.port }
    : { socketPath: endpoint.transport === "unix_socket"
        ? endpoint.unixSocket : endpoint.namedPipe };
  connection = await mysql.createConnection({
    ...location,
    user: endpoint.user,
    password: "",
    database: "test",
  });
  const [rows] = await connection.query("SELECT 1 AS value");
  console.log(rows);
} finally {
  try {
    if (connection) await connection.end();
  } finally {
    db.close();
  }
}

実行すると [ { value: 1 } ] が出力されます:

node example.mjs

詳しい使い方と対応プラットフォーム

高水準の JavaScript Collection API が必要な場合は、seekdb-js を参照してください。

🐹 Go

seekdb-go でローカルの seekdb を起動し、go-sql-driver/mysql で SQL を実行します。この例には Go 1.24 以降、CGO_ENABLED=1、C コンパイラーが必要です。

mkdir seekdb-go-example
cd seekdb-go-example
go mod init example.com/seekdb-demo

以下の例を main.go として保存します。ConnectionOptions が返す接続先を使用し、ランタイムハンドルを解放する前に SQL 接続を閉じます:

package main

import (
	"database/sql"
	"fmt"
	"log"
	"net"

	"github.com/go-sql-driver/mysql"
	seekdb "github.com/oceanbase/seekdb-go"
)

func main() {
	if err := run(); err != nil {
		log.Fatal(err)
	}
}

func run() error {
	db, err := seekdb.Open("./seekdb.db")
	if err != nil {
		return err
	}
	defer db.Close()

	endpoint, err := db.ConnectionOptions()
	if err != nil {
		return err
	}
	cfg := mysql.NewConfig()
	cfg.User, cfg.DBName = endpoint.User, "test"
	switch endpoint.Transport {
	case "unix_socket":
		cfg.Net, cfg.Addr = "unix", endpoint.UnixSocket
	case "tcp":
		cfg.Net, cfg.Addr = "tcp", net.JoinHostPort(endpoint.Host, fmt.Sprint(endpoint.Port))
	default:
		return fmt.Errorf("unsupported transport %q", endpoint.Transport)
	}
	connection, err := sql.Open("mysql", cfg.FormatDSN())
	if err != nil {
		return err
	}
	defer connection.Close()

	var value int
	if err := connection.QueryRow("SELECT 1 AS value").Scan(&value); err != nil {
		return err
	}
	fmt.Println(value)
	return nil
}

実行時に Go が依存関係を解決し、現在のプラットフォーム用のネイティブバンドルを取得します。結果は 1 です:

go run -mod=mod .

seekdb-go に対する通常の go get や go mod tidy は、全対応プラットフォームのバンドルも取得することがあります。

詳しい使い方 · 対応プラットフォームと環境要件

これらの例はデータを ./seekdb.db に保存し、繰り返し実行できます。このパスはデータベースディレクトリです。新しいディレクトリの初期化には、次回以降の起動より時間がかかることがあります。

サーバーのデプロイ

☁️ クラウド(インストール不要)

curl 一発で稼働中のデータベースが手に入ります — サインアップ不要、クレジットカード不要。

curl -X POST https://d0.seekdb.ai/api/v1/instances

7 日間無料。詳細はこちら →

🐳 Docker(簡易テスト)
docker run -d \
  --name seekdb \
  -p 2881:2881 \
  -p 2886:2886 \
  -v ./data:/var/lib/oceanbase \
  oceanbase/seekdb:latest

この Docker イメージの詳細はドキュメントを参照してください。

📦 バイナリ(スタンドアロン)
# Linux(ワンライナーインストール、sudo が必要な場合あり)
curl -fsSL https://obportal.s3.ap-southeast-1.amazonaws.com/download-center/opensource/seekdb/seekdb_install.sh | bash

# macOS(Homebrew)
brew tap oceanbase/seekdb
brew install seekdb

DEB/RPM オフラインインストールと設定の詳細はデプロイメントドキュメントを参照してください。

📝 その他の例

まずは上の実行可能な Python、JavaScript、Go の例を試してください。以下のアプリケーションパターンは、既存のエージェント実装を前提としています。

🤖 エージェントメモリパターン(継続的書込 + 即時検索)

エージェントの典型的なループ:観察を書き込み、ミリ秒後に関連コンテキストを検索、これを繰り返します。seekdb の非同期インデックスパイプラインが、持続的な並行負荷の下でも読み書き双方の高速性を維持します。

import pyseekdb

client = pyseekdb.Client(path="./agent_state.db")
memory = client.get_or_create_collection(name="episodic")

for step in agent.run():
    # 観察結果を永続化
    memory.upsert(ids=[step.id], documents=[step.observation])

    # 関連コンテキストを検索 — 書き込みの数ミリ秒後に、
    # インクリメンタル HNSW が即座に応答(バックグラウンドリビルド待ち不要)
    relevant = memory.query(query_texts=step.next_query, n_results=5)

    agent.act(relevant)
🗄️ SQL — スキーマ + ハイブリッド検索
-- ベクトル列、全文インデックス、HNSW ベクトルインデックスを持つテーブル
CREATE TABLE articles (
  id        INT PRIMARY KEY,
  title     TEXT,
  content   TEXT,
  embedding VECTOR(384),
  FULLTEXT INDEX idx_fts (content) WITH PARSER ik,
  VECTOR   INDEX idx_vec (embedding) WITH (DISTANCE=l2, TYPE=hnsw, LIB=vsag)
) ORGANIZATION = HEAP;

-- ハイブリッド検索:ベクトル類似度 + 全文マッチを 1 つのクエリで
SELECT id, title,
       l2_distance(embedding, '[0.12, 0.34, ...]') AS dist
FROM articles
WHERE MATCH(content) AGAINST('quarterly report')
ORDER BY dist APPROXIMATE
LIMIT 10;

Python 開発者は SQLAlchemy や任意の MySQL ドライバーでアクセスできます。

📚 ユースケース

🎯 エージェント AI — メモリ、サンドボックス、ステート

エージェントには、絶え間ないメモリ書き込み、ミリ秒レベルの検索、探索のためのブランチング、問題発生時の即時ロールバックに対応できるステートストアが必要です。seekdb はまさにそのために作られました:

  • ストリーミング対応 — 書き込んだ瞬間から検索可能
  • COW サンドボックス — FORK DATABASE で安全に実験、MERGE で採用、DROP で即ロールバック
  • ハイブリッド検索 — ベクトル + 全文 + リレーショナルを 1 本の SQL で
  • MySQL プロトコル — LangChain、LlamaIndex、Dify がそのまま動作

パーソナルアシスタント · エンタープライズ自動化 · バーティカルエージェント · エージェントプラットフォーム

🧩 その他のユースケース

seekdb のハイブリッド検索 + マルチモデルエンジンは、従来型の AI ワークロードにも最適です:

  • 📖 RAG とナレッジ検索 — ベクトル + 全文 + スカラーフィルター、多段階アクセス制御対応。エンタープライズ QA、カスタマーサポート、業界インサイト、個人ナレッジベース。
  • 🔍 セマンティック検索 — エンベディングベースのテキスト、画像、マルチモーダル検索。商品検索、テキストから画像、画像から商品。
  • 💻 AI 支援コーディング — セマンティックコード検索、マルチプロジェクト分離、タイムトラベルクエリ。IDE プラグインやコードエージェント向け。ローカル IDE、Web IDE、デザインからコードへ。
  • ⬆️ エンタープライズアプリケーションインテリジェンス — レガシーシステム向けの MySQL 互換 AI レイヤー、行列ハイブリッドストレージ対応。ドキュメントインテリジェンス、ビジネスインサイト、金融システム。
  • 📱 オンデバイス&エッジ AI — リソース制約のあるデバイス向けの組み込み/マイクロサーバーモード。車載システム、AI 教育、コンパニオンロボット、ヘルスケアデバイス。

🌟 エコシステムと統合

LangChain LlamaIndex Dify LangGraph Coze HuggingFace

+ Camel-AI · DB-GPT · FastGPT · Firecrawl · Spring-AI-Alibaba · Cloudflare Workers AI · Jina AI · Ragas · Instructor · Baseten — 完全なリストはユーザーガイドを参照してください。


🌐 次のステップとコミュニティ


🛠️ 開発

ソースからビルド

ビルド前に、お使いの OS に必要なツールチェーンと依存関係をインストールしてください。詳細はツールチェーンのインストールを参照してください。

# リポジトリをクローン
git clone https://github.com/oceanbase/seekdb.git
cd seekdb
./build.py init
./build.py build seekdb
mkdir -p ~/seekdb/bin
cp build/bin/src/observer/seekdb ~/seekdb/bin
cd ~/seekdb
./bin/seekdb

この例では作業ディレクトリとして $HOME/seekdb を使用しています。テストには新しい空のディレクトリを使用してください。詳細は開発者ガイドを参照してください。

コントリビュート

コントリビューション大歓迎です! まずはコントリビューションガイドをご覧ください。


📈 Star の推移

seekdb が役立つなら、star で他の人にも届けましょう。 ⭐


📄 ライセンス

seekdb は OceanBase チームが開発 — Alipay、Taobao、DiDi、Xiaomi などの本番環境で稼働しているデータベースエンジンと同一基盤です。Apache License, Version 2.0 に基づく完全なオープンソースプロジェクトです。

関連プロジェクトを探す