海外からのアクセス:www.kdjingpai.com
Ctrl + D このサイトをブックマークする

OceanBase SeekDBは、OceanBaseデータベースの中核をなすベクトル検索エンジンで、AI時代に特化して構築されています。SeekDBは、個別に運用・保守が必要な独立したデータベース製品ではなく、成熟した分散リレーショナルデータベースであるOceanBaseの中にベクトルデータベースの機能を完全に組み込んでいます。第一原理として、SeekDBは基本的にリレーショナル・データベースに非構造化データ(テキスト、画像、音声によって生成されたベクトルなど)を「理解」する能力を与えます。SeekDBは、従来のAIアプリケーションアーキテクチャにおける「ビジネスデータを格納するリレーショナルデータベース」と「特徴データを格納する専用ベクトルデータベース」の分離によってもたらされた、データの断片化、データ同期の遅延、運用・保守の複雑さというペインポイントを解決します。SeekDBは、OceanBaseの分散アーキテクチャをベースに、その高可用性、強力な一貫性、水平スケーラビリティを継承し、最大16,000次元のベクトルストレージをサポートします。OceanBaseの分散アーキテクチャをベースとするSeekDBは、その高可用性、強力な一貫性、水平スケーラビリティを継承し、最大16,000次元のベクトルストレージをサポートし、HNSWやIVFなどの高性能なインデックス作成アルゴリズムを提供し、膨大なデータに対して非常に低いレイテンシでTop-Kクエリを完了するため、RAG(検索機能拡張世代)、レコメンダーシステム、マルチモーダル検索アプリケーションの構築に理想的なデータベースです。

機能一覧

  • ベクトル・データ型のネイティブ・サポートデータベースのテーブル構造で直接定義 VECTOR 型フィールドで、16,000次元までの高密度ベクトル・ストレージをサポートする。 INTそしてVARCHAR と他の伝統的なデータタイプが共存している。
  • 高性能ベクトル・インデックスHNSW(Hierarchical Navigational Small World)やIVF(Inverted File)といった業界をリードするインデックス作成アルゴリズムを内蔵し、L2(ユークリッド距離)、内積、コサイン(コサイン類似度)といった様々な距離計算式をサポートすることで、検索における高い再現性と低遅延を実現しています。
  • SQL+AIハイブリッド検索の両方をサポートする。 WHERE スカラーフィルタリング(価格帯、商品カテゴリーなど)用の句と ORDER BY ベクトル類似度順序のデータベース・カーネルは自動的に実行計画を最適化し、アプリケーション層での複数の相互作用を回避する。
  • 分散水平スケーリングベクターデータはスライスしながら自動的に複数のサーバーに分散させることができ、ノードを増やすことでストレージ容量と検索性能をリニアに向上させることができるため、数百億単位のベクターにも容易に対応できる。
  • MySQLプロトコルと完全互換MySQLプロトコルをサポートするクライアント(例:JDBC、PyMySQL)やORMフレームワークを使用して、ベクターデータを直接操作することができます。
  • AIエコシステムのシームレスな統合OceanBaseは新しいタイプのAI開発フレームワークで、LangChain、LlamaIndex、DB-GPTなどの主流のAI開発フレームワークに深く適応しています。Python SDKが提供されており、開発者はOceanBaseを大規模モデルアプリケーションのデータチェーンに迅速に接続することができます。

ヘルプの使用

OceanBaseのSeekDBは、従来のMySQLデータベースと非常に近い使い心地を実現するように設計されていますが、主な違いはベクターデータの定義とインデックス作成です。以下は、環境準備からハイブリッド検索完了までの全プロセスの詳細です。

1.環境の準備と設置

SeekDBの機能はOceanBase 4.3.3以上に含まれています。開発者にとっては、Dockerコンテナを使ってスタンドアロン版のOceanBaseをデプロイするのが一番手っ取り早い方法です。

ステップ1:OceanBaseコンテナを起動する
マシンにDockerがインストールされ、少なくとも8GBのメモリが割り当てられていることを確認する(ベクター・コンピューティングにはいくつかのメモリ要件がある)。ターミナルで以下のコマンドを実行し、最新バージョンのイメージをプルして起動します:

docker run -p 2881:2881 --name oceanbase-ce -e MINI_MODE=1 -d oceanbase/oceanbase-ce:latest

注釈MINI_MODE=1 パラメータは、リソースに制約のあるPCで最小モードでブートするために使用される。

ステップ2:データベースへの接続
コンテナが起動したら(通常、初期化には1~2分かかる)、任意のMySQLクライアントを使って接続できる。以下はコマンドラインMySQLクライアントの例である:

# 进入容器内部
docker exec -it oceanbase-ce bash
# 连接数据库(默认无密码,端口2881)
obclient -h127.0.0.1 -P2881 -uroot@test

注:本番環境では、非rootユーザーを作成し、強力なパスワードを設定することを推奨する。

2.ベクトルテーブルの操作手順

本の基本情報(タイトル、価格)と本の特徴のベクトルを含むテーブルを作成し、「本の推薦システム」のシナリオをシミュレートする。

ステップ1:サポートベクトルの表を作成する
テーブルを作成する際には VECTOR(<维度>) 構文はベクトル列を定義する。例えば、3次元のベクトルを格納する必要があるとしよう(実際のシナリオでは、これは通常768次元か1536次元である):

CREATE TABLE books (
id INT PRIMARY KEY AUTO_INCREMENT,
title VARCHAR(100),
category VARCHAR(50),
price DECIMAL(10, 2),
embedding VECTOR(3)  -- 定义一个3维的向量列
);

ステップ2:データの挿入
ベクターデータを挿入する場合は、文字列形式 [v1, v2, v3, ...] ベクトルを表す。

INSERT INTO books (title, category, price, embedding) VALUES 
('Python深度学习', 'Tech', 59.90, '[0.1, 0.2, 0.8]'),
('如果是普通的书', 'Fiction', 29.90, '[0.8, 0.1, 0.1]'),
('数据库内部原理', 'Tech', 89.00, '[0.2, 0.2, 0.9]'),
('烹饪大全', 'Life', 45.00, '[0.1, 0.9, 0.1]');

3.ベクトル・インデックスの作成

SeekDBはIVFFLATまたはHNSWインデックスの作成をサポートしています。

パラメータの説明

  • distance距離測定、オプション l2 (ユークリッド距離)。 inner_product (内積)、(内積) cosine (コサイン)。
  • typeインデックス・アルゴリズムの種類、推奨されるもの hnsw.
  • libデフォルトは vsag.
-- 创建一个基于 HNSW 算法的索引,使用 L2 距离
CREATE INDEX idx_book_embedding ON books(embedding) 
USING VECTOR 
WITH (distance=l2, type=hnsw, lib=vsag);

注:ベクトル・インデックスの構築にはメモリ・リソースを消費する可能性があり、構築速度はデータ量に依存する。

4.ハイブリッド・サーチの実装

これがSeekDBの最も強力な機能である。例えば、「コンピュータ技術に関連するコンテンツ(SeekDBに近いベクトル)」を探しているとします。 [0.15, 0.2, 0.85]価格は100ドル以下)。

SQL文の作成:
利用する l2_distance 関数と組み合わせて距離を計算する。 WHERE 句は価格をフィルターする。

SELECT title, price, l2_distance(embedding, '[0.15, 0.2, 0.85]') as distance
FROM books
WHERE price < 100 AND category = 'Tech'  -- 标量过滤条件
ORDER BY distance ASC                    -- 按相似度排序(距离越小越相似)
LIMIT 5;

実施結果の解釈:
データベース・エンジンはまず、スカラー・インデックスを素早く選別して price < 100 歌で応える category = 'Tech' または、ベクトル・インデックスを使用して、フィルタリングの前に近似値を見つける(オプティマイザのコスト見積もりによる)。複雑な "フィルターとソート "ロジックを手作業で書く必要はない。

5.Pythonを使う

実際にAIアプリケーションを開発する際には、Pythonがよく使われる。 PyMySQL の完全なサンプルコード

import pymysql
import json
# 1. 建立连接
conn = pymysql.connect(
host='127.0.0.1', 
port=2881, 
user='root@test', 
password='', 
database='test',
autocommit=True
)
cursor = conn.cursor()
# 2. 准备查询向量(模拟来自 Embedding 模型的结果)
query_vector = [0.15, 0.2, 0.85]
query_vector_str = json.dumps(query_vector)
# 3. 执行混合检索 SQL
sql = """
SELECT title, l2_distance(embedding, %s) as dist
FROM books
WHERE category = 'Tech'
ORDER BY dist ASC
LIMIT 3
"""
cursor.execute(sql, (query_vector_str,))
results = cursor.fetchall()
# 4. 输出结果
print("推荐图书:")
for row in results:
print(f"书名: {row[0]}, 距离: {row[1]}")
cursor.close()
conn.close()

以上のプロセスで、OceanBaseにベクトルベースのセマンティック検索機能を、外部のベクトルデータベースを介さずに実装することに成功しました。

アプリケーションシナリオ

  1. エンタープライズプライベートナレッジベースの質問と回答(RAG)
    組織は社内文書(PDF、Wiki、コードベース)をスライスし、OceanBaseに格納されたベクトルに変換する。社員が質問をすると、システムは質問をベクトル化し、ベクトル検索によってデータベースから最も関連性の高い文書断片を取り出し、LLMと組み合わせて正確な回答を生成する。OceanBaseの利点は、データがデータベースの外に出ないこと、権限管理がデータベースのACLメカニズムを直接複製することで、企業データのセキュリティを保証することである。
  2. マルチモーダル地図検索
    Eコマースプラットフォームのシナリオでは、商品の画像特徴はベクトルとして抽出され、データベースに保存される。ユーザーは画像をアップロードし、システムはSeekDBを通じて類似した視覚的特徴を持つ商品を素早く検索する。SQLのスカラー機能と組み合わせることで、「在庫のあるものだけを表示する」「価格は50~100ドル」といったビジネス・フィルタリング条件を簡単に重ね合わせることができ、正確なショッピング・ガイド体験を提供することができる。
  3. パーソナライズされた推薦システム
    SeekDBは、ユーザーの閲覧履歴と行動データを使用して、コンテンツ・ライブラリ(記事、動画)のベクトルと照合されるユーザー・プロファイル・ベクトルを生成し、何百万ものコンテンツからユーザーの関心ベクトルに最も近いエントリをミリ秒単位でフィルタリングして、リアルタイムの「Guess What You Like」機能を実現し、ユーザーのリテンションを向上させることができる。

品質保証

  1. 特殊なベクターデータベース(MilvusやPineconeなど)ではなく、OceanBase SeekDBを選んだ理由は?
    SeekDBは「オールインワン」を実現し、トランザクション、分析、ベクトル検索を同じデータベースコア内で処理することで、AIアプリケーションの技術的アーキテクチャを劇的に簡素化し、OceanBaseの金融グレードの可用性機能を直接継承しています。SeekDBは、トランザクション、分析、ベクトル検索を同じデータベースカーネル内で処理する「オールインワン」を実現し、AIアプリケーションの技術的アーキテクチャを劇的に簡素化するとともに、OceanBaseの金融グレードの高可用性機能をそのまま継承しています。
  2. SeekDBはどのようなインデックスタイプをサポートしていますか?パフォーマンスはどの程度ですか?
    現在、主にHNSW(高い性能要件と十分なメモリを必要とするシナリオに適している)とIVF(非常に大きなデータ量とメモリ感度を必要とするシナリオに適している)系列インデックスをサポートしています。標準的なANN Benchmarksのテストでは、OceanBaseのベクトル検索エンジンは、1000万データ規模の下で優れたQPSとリコールを示し、ほとんどのオンライン推論サービスのリアルタイム要求(通常10ms-50msレベル)を満たすことができる。
  3. 既存のテーブルにベクター列を追加することはできますか?
    できる。通常のカラムと同じように ALTER TABLE ステートメントを既存のビジネス・テーブルに追加する。 VECTOR タイプのカラムを作成し、そのカラムにインデックスを作成する。これにより、データを移行することなく、レガシーシステムのAIによるスマートな改修が非常にスムーズに行える。
0ブックマークに登録
0表彰される

おすすめ

AIツールが見つからない?こちらをお試しください!

キーワードを入力する アクセシビリティこのサイトのAIツールセクションは、このサイトにあるすべてのAIツールを素早く簡単に見つける方法です。

トップに戻る

ja日本語