OceanBase
English日本語简体中文
ドキュメントホーム
製品
エコシステム
リリース

データベース

OceanBase CloudOceanBaseデータベース

データベース

OceanBase CloudOceanBaseデータベース
OceanBase CloudOceanBaseデータベース

OceanBase Cloud

  • エコシステム統合の概要
  • データベースバージョニング
    • Liquibaseを使用したOceanBaseデータベースのバージョン管理
    • Flywayを使用したOceanBase Cloudデータベースのバージョン管理
  • データ統合
    • Canalを使用したデータの同期
    • dbtを使用したOceanBaseデータの分析
    • Debezium
    • Flinkによるデータの同期
    • AWS Glueを使用したOceanBaseデータの移行
    • Informatica CloudとOceanBaseデータベースの連携ガイド
    • OceanBaseデータベースとKafkaの統合に関するベストプラクティス
    • Maxwell
    • SeaTunnel
    • DataWorks
    • Apache NiFiによるOceanBase Cloudの統合
  • SQL 開発
    • DataGripでOceanBase Cloudデータベースに接続する
    • DBeaverでOceanBase Cloudに接続する
    • NavicatでOceanBase Cloudに接続する
    • TablePlusでOceanBase Cloudデータベースに接続する
  • オーケストレーション
    • DolphinScheduler
    • LinkisとOceanBaseデータベースの連携
    • AirflowとOceanBaseデータベースの連携
  • 可視化
    • GrafanaでOceanBase Cloudの監視ダッシュボードデータを表示する
    • Power BIでOceanBase Cloudに接続してデータを取得する
    • Quick BIでOceanBase Cloudに接続する
    • SupersetとOceanBase Cloudを使用したデータ分析
    • TableauからOceanBase Cloudに接続する
  • オブザーバビリティ
    • Datadogを使用したOceanBase Cloudインスタンスの監視
    • Prometheusを使用したOceanBaseデータの監視
  • データベース管理
    • BytebaseによるOceanBaseインスタンスの管理
  • AI
    • OceanBase Cloud VectorとLlamaIndexの連携
    • OceanBase Cloud VectorとDifyの連携
    • OceanBase Cloud VectorとLangChainの連携
    • OceanBase Cloud VectorとQwenの連携
    • OceanBase Cloud VectorとOpenAIの連携
    • OceanBase Cloudとn8nの連携
    • OceanBase MCP ServerとTraeの連携
    • OceanBase Cloud VectorとSpring AI Alibabaの連携
    • OceanBase MCP ServerとClineの連携
    • OceanBase MCP ServerとCursorの連携
    • OceanBase MCP ServerとContinueの連携
    • Google GenAI ToolboxとOceanBase MCP Serverの統合
    • OceanBase Cloud VectorとCamelAIの連携
    • OceanBase Cloud VectorとFirecrawlの連携
    • OceanBase Cloud VectorとHugging Faceの連携
    • OceanBase Cloud VectorとOllamaの連携
    • OceanBase Cloud VectorとGoogle Geminiの連携
    • OceanBase Cloud VectorとCloudflare Workers AIの連携
    • OceanBase MCP ServerとQoderの連携
    • OceanBase MCP ServerとOpenCodeの連携
    • OceanBase MCP ServerとClaude Codeの連携
    • OceanBase MCP ServerとGitHub Copilotの連携
    • OceanBase MCP ServerとCodexの連携
    • OceanBase Cloud VectorとJina AIの連携
    • OceanBase MCP ServerとAugment Codeの連携
    • OceanBase MCP ServerとKiroの連携
  • 開発ツール
    • Cloudflare WorkersでOceanBase Cloudに接続する
    • VercelでOceanBase Cloudに接続する

PDF をダウンロード

ドキュメントフィードバック
  1. ドキュメントセンター
  2. OceanBase Cloud

OceanBase Cloud VectorとGoogle Geminiの連携

最終更新:2026-10-09 09:10:54

前提条件
ステップ1:データベース接続情報を取得する
ステップ2:AIアシスタントを構築する
環境変数の設定
サンプルコード

OceanBaseはV4.3.3以降、ベクトル型データの格納、ベクトルインデックス、および埋め込みベクトル検索をサポートしています。ベクトル化したデータをOceanBaseに保存し、その後の検索に利用できます。

Google Gemini AIは、Googleが開発したマルチモーダル大規模言語モデル(LLM)群です。テキスト、コード、画像、音声、動画など、さまざまな種類のデータを理解して処理できるよう設計されています。

このチュートリアルでは、OceanBase Cloudのベクトル検索機能とGoogle Geminiを使用して、チャットアプリケーションを作成する方法を説明します。

前提条件

  • ご利用の環境でOceanBase Cloudのトランザクション処理用インスタンスを利用できること。

インスタンスの作成方法については、トランザクション処理用インスタンスの作成をご参照ください。

  • インスタンスにMySQL互換テナントを作成済みであること。作成方法については、MySQL互換テナントの作成をご参照ください。

  • テナント内に使用可能なMySQLデータベースとアカウントを作成済みであり、データベースアカウントに読み取りおよび書き込み権限を付与済みであること。詳細については、アカウントの作成およびデータベースの作成(MySQLのみ)をご参照ください。

  • プロジェクト管理者またはインスタンス管理者であり、インスタンスのデータを読み書きするために必要な権限を持っていること。権限がない場合は、組織管理者に連絡して必要な権限を付与してもらってください。

  • Python 3.11以降をインストールしていること。

  • 依存関係をインストールしていること。

    python3 -m pip install pyobvector requests google-genai tqdm
    

ステップ1:データベース接続情報を取得する

  1. OceanBase Cloudコンソールにログインします。

  2. インスタンス一覧ページで、対象インスタンスの情報を展開します。

  3. 対象テナントで、接続 > 接続文字列を取得 を選択します。

  4. ポップアップウィンドウで、接続方式として パブリック接続 を選択します。

  5. ポップアップウィンドウの案内に従って、パブリックエンドポイントと接続文字列を取得します。

ステップ2:AIアシスタントを構築する

環境変数の設定

Google GeminiのAPIとOceanBase接続情報を取得し、環境変数に設定します。

export OCEANBASE_DATABASE_URL=YOUR_OCEANBASE_DATABASE_URL
export OCEANBASE_DATABASE_USER=YOUR_OCEANBASE_DATABASE_USER
export OCEANBASE_DATABASE_DB_NAME=YOUR_OCEANBASE_DATABASE_DB_NAME
export OCEANBASE_DATABASE_PASSWORD=YOUR_OCEANBASE_DATABASE_PASSWORD
export GEMINI_API_KEY=YOUR_GEMINI_API_KEY

サンプルコード

データの読み込み

ここでは、text-embedding-004を例に、Google Gemini AIの埋め込みAPIを使用してベクトルデータを生成します。

from google import genai
from glob import glob
from tqdm import tqdm
import os
from google.genai import types
from sqlalchemy import Column, Integer, String
from pyobvector import ObVecClient, VECTOR, IndexParam, l2_distance

documents = [
"Artificial intelligence was founded as an academic discipline in 1956.",
"Alan Turing was the first person to conduct substantial research in AI.",
"Born in Maida Vale, London, Turing was raised in southern England.",
]

genai_client=genai.Client(api_key=os.environ["GEMINI_API_KEY"])
def embed_documents_in_batches(documents, batch_size=100):
    all_embeddings = []
    for i in range(0, len(documents), batch_size):
        batch = documents[i:i + batch_size]
        response = genai_client.models.embed_content(
            model="text-embedding-004",
            contents=batch,
            config=types.EmbedContentConfig(output_dimensionality=768)
        )
        all_embeddings.extend(response.embeddings)
            
    return all_embeddings


embeddings = embed_documents_in_batches(documents)

data = []
for i, line in enumerate(tqdm(documents, desc="Creating embeddings")):
    data.append({"text": line ,"embedding": embeddings[i].values})

ベクトルテーブルの定義とベクトルデータのOceanBaseへの格納

テキストを格納する text 列、埋め込みベクトルを格納する embedding 列、およびベクトルインデックスを含む、gemini_oceanbase_demo_documents という名前のテーブルを作成し、ベクトルデータをOceanBaseに格納します。

OCEANBASE_DATABASE_URL = os.getenv('OCEANBASE_DATABASE_URL')
OCEANBASE_DATABASE_USER = os.getenv('OCEANBASE_DATABASE_USER')
OCEANBASE_DATABASE_DB_NAME = os.getenv('OCEANBASE_DATABASE_DB_NAME')
OCEANBASE_DATABASE_PASSWORD = os.getenv('OCEANBASE_DATABASE_PASSWORD')

client = ObVecClient(uri=OCEANBASE_DATABASE_URL, user=OCEANBASE_DATABASE_USER,password=OCEANBASE_DATABASE_PASSWORD,db_name=OCEANBASE_DATABASE_DB_NAME)

table_name = "gemini_oceanbase_demo_documents"
client.drop_table_if_exist(table_name)

cols = [
    Column("id", Integer, primary_key=True, autoincrement=True),
    Column("text", String(10000), nullable=False),
    Column("embedding", VECTOR(768))
]

# Create vector index
vector_index_params = IndexParam(
    index_name="idx_question_embedding",
    field_name="embedding",  
    index_type="HNSW",
    distance_metric="l2"
)

client.create_table_with_index_params(
    table_name=table_name,
    columns=cols, 
    vidxs=[vector_index_params]
)
print('- Inserting Data to OceanBase...')
client.insert(table_name, data=data)

セマンティック検索

text-embedding-004を使用してクエリテキストの埋め込みベクトルを生成し、クエリテキストの埋め込みベクトルとベクトルテーブル内の各埋め込みベクトルとのL2距離に基づいて、最も関連性の高いドキュメントを検索します。

question = "When was artificial intelligence founded?"

quest_embed = genai_client.models.embed_content(model="text-embedding-004", contents=question)
search_res = client.ann_search(
    table_name,
    vec_data=quest_embed.embeddings[0].values,
    vec_column_name="embedding",
    distance_func=l2_distance,
    with_dist=True,
    topk=1, 
    output_column_names=["id","text"], 
)

print('- The Most Relevant Document and Its Distance to the Query:')
for row in search_res.fetchall():
    print(f'  - ID: {row[0]}\n'
          f'    content: {row[1]}\n'
          f'    distance: {row[2]}')

期待される結果

  - ID: 1
    content: Artificial intelligence was founded as an academic discipline in 1956.
    distance: 0.6019276093082409

前のトピック

OceanBase Cloud VectorとOllamaの連携
前へ

次のトピック

OceanBase Cloud VectorとCloudflare Workers AIの連携
次へ
このページの内容
前提条件
ステップ1:データベース接続情報を取得する
ステップ2:AIアシスタントを構築する
環境変数の設定
サンプルコード