動的かつリアルワークのソリューションを構築する際には、開発者は複数のデータベース(リレーショナル、ドキュメント、グラフ、ベクトル、時系列、検索)をつなぎ合わせ、それらを統合するための複雑なAPIレイヤーを構築する必要があります。これにより、重大な複雑さ、コスト、運用リスクが生じ、イノベーションのスピードが低下します。多くの場合、開発者はアプリケーションロジックの構築よりも、グルーコードの作成やインフラ管理に注力しがちです。AIのユースケースでは、複数のデータベースを使うとAIエージェントはデータ、コンテキスト、メモリが断片化し、高い遅延で悪い出力を生み出します。
そこで登場する のがSurrealDBです。
SurrealDBはRustで構築されたマルチモデルデータベースで、ドキュメント、グラフ、リレーショナル、時系列、地理空間、キーバリュー、ベクトルデータを単一のエンジンに統合しています。SQLに似たクエリ言語であるSurrealQLは、グラフのトラバース、ベクトル検索、構造化データのクエリを一つの文で行えます。
AIエージェントメモリ、ナレッジグラフ、リアルタイムアプリケーション、エッジ展開などのデータ集約型ワークロード向けに設計されており、SurrealDBはアプリに埋め込まれても、WebAssembly経由でブラウザ内でも、エッジでも、分散クラスタとしても、どこでも単一のバイナリとして動作します。
SurrealDBはどんな問題を解決しているのでしょうか?
現代のAIシステムは、従来のアプリケーションとはデータインフラに非常に異なる要求を課しています。SurrealDBはこれらの圧力に直接対応しています:
- 複数のデータモデルに単一のランタイム – AIシステムはベクトルサーチ、グラフトラバーサル、ドキュメント保存、リアルタイム状態、リレーショナルデータを同じリクエストパス内で組み合わせることが多いです。SurrealDBはこれらのモデルを1つのエンジンでネイティブにサポートしており、脆弱なクロスデータベースAPIやETLパイプライン、整合性のギャップを回避しています。
- 変化するコンテキストへの低遅延アクセス – 音声エージェント、インタラクティブアシスタント、ステートフルエージェントは遅延とデータの新鮮さの両方に敏感です。SurrealDBのクエリモデルとリアルタイム機能は、ポーリングやバックグラウンド同期ジョブなしで最新のコンテキストを提供します。
- システム複雑さの削減 – 複数の専門データベースを単一のマルチモデルストアに置き換えることで、サービス、API、障害モードを削減できます。これにより、展開、デバッグ、長期的なメンテナンスが簡素化されます。
- データ重視の機能の迅速な反復 – オプトインのスキーマ定義や表現型クエリにより、大規模な移行なしにAI機能と並行してデータモデルを進化させられます。これは埋め込み、関係、エージェントの記憶構造を実験する際に特に有用です。
- 一般的なAIパターンの組み込みプリミティブ – ベクトル、グラフ、トランザクション整合性のネイティブサポートにより、RAG、グラフ拡張検索、推薦パイプライン、エージェント状態管理が外部システムやカスタムグルーコードなしで可能となります。
この記事では、SurrealDB Docker Extensionを使ってWhatsApp RAGチャットボットを構築する方法を紹介します。SurrealDB Docker ExtensionがインテリジェントなWhatsAppチャットボットを動かし、チャット履歴をベクトル埋め込みや正確な出典引用を含むAI強化された検索可能な会話に変換する方法を学びます。
SurrealDBアーキテクチャの理解
SurrealDBのアーキテクチャは複数のデータモデルを単一のデータベースエンジン内に統合し、別々のシステムや同期ロジックの必要性を排除しています(下図参照)。
キャプション:SurrealDBアーキテクチャ図
キャプション:リアルタイム機能を備えた統一マルチモデルデータベースを示すSurrealDBのアーキテクチャ図。(詳細はこちら https://surrealdb.com/docs/surrealdb/introduction/architecture)
SurrealDBを使えば、以下のことができます:
- グラフトラバーサル構文(例:
->bought_together->product)を用いて複雑な関係をモデル化 する - 柔軟な文書を構造化リレーショナルテーブルと並べて保存する
- リアルタイムの変更を即時に更新するクエリで登録
LIVE SELECT - すべてのモデルでACD準拠のトランザクションとデータの整合性を確保しましょう
SurrealDBのアーキテクチャや主要機能については公式ドキュメントで詳しくご覧ください。
Surrealはどのように機能するのですか?
SurrealDBはストレージとコンピュートを分離し、手動でデータをシャード化することなく独立して拡張できるようにします。
クエリ層(コンピュート層とも呼ばれる)はクライアントからのクエリを処理し、どのレコードを選択、作成、更新、削除する必要があるかを分析します。
ストレージ層はクエリ層のデータ保存を担当します。ストレージノードをスケーリングすることで、各デプロイメントでサポートされるデータ量を増やすことができます。
SurrealDBは、シングルノードから大量のデータを持つ高スケーラブルなフォールトトレラント展開まで、あらゆる範囲をサポートします。
詳細については、 https://surrealdb.com/docs/surrealdb/introduction/architecture を参照してください。
なぜSurrealDBをDocker拡張機能として動かすべきなのか
すでにDocker Desktopを使っている開発者にとっては、拡張機能としてSurrealDBを動かすことで摩擦をなくすことができます。別々のインストールも依存関係管理も設定ファイルもなく、拡張機能マーケットプレイスからワンクリックするだけで済みます。
Dockerは、SurrealDBを軽量で独立したコンテナでバンドルし実行する理想的な環境を提供します。このカプセル化により、macOS、Windows、Linux間で一貫した動作が保証され、ノートパソコンで動作するものがステージングでも同じように動作します。
Dockerデスクトップ拡張には以下が含まれます:
- SurrealQL構文ハイライト付きビジュアルクエリエディター
- 記録の変更に伴うリアルタイムデータエクスプローラーでライブ更新を表示します
- テーブルとリレーションシップのスキーマ可視化
- ローカルインスタンスとリモートインスタンス間の切り替えのための接続管理
- 組み込みのバックアップ/復元機能で 、データのエクスポートやインポートが容易です
Docker Desktopを前提条件にすれば、ゼロから1分以内にSurrealDBインスタンスを稼働させることができます。
始める
まずは、 Docker Desktop をダウンロードしてインストールしてください。次に次のステップを踏みます:
- Docker Desktopを開き、左側のサイドバーで 拡張機能 を選択してください
- ブラ ウズ タブに切り替える
- フィルターのドロップダウンで データベースカテゴリを選択し てください
- SurrealDBを見つけて「インストール」をクリックしてください
キャプション:Docker Desktopの拡張機能マーケットプレイスからSurrealDB拡張機能をインストールする際。
実例
スマートチームコミュニケーションアシスタント
「マーケティングキャンペーン予算について、私たちは何度決めたのか?」という疑問に答えるために、数ヶ月にわたるチームWhatsAppの会話を探すことを想像してみてください。
従来のキーワード検索では失敗しますが、 RAGとSurrealDBおよびLangChain はセマンティックベクトルサーチと関係グラフを組み合わせることでこれを解決します。
このアーキテクチャは、グループチャット(WhatsApp、Instagram、Slack)をベクトル埋め込みとして保存しつつ、「budget」「marketing」「decision」などのキーワードを抽出した会話を結びつける知識グラフを構築します。問い合わせされると、類似性マッチングとグラフトラバーサルの両方を用いて関連する文脈を取得し、元の会話とは異なる表現であっても過去の議論、決定、行動項目に関する正確な回答を提供します。
このプロジェクトは、LangChain |GitHubの例
1。リポジトリのクローン:
git clone https://github.com/Raveendiran-RR/surrealdb-rag-demo
2。Docker Model Runner を有効にするには、Docker Desktop >設定> AI
キャプション:Docker Desktop >設定> AI でDocker Model Runnerを有効にする
3。ラマを引っ張って3。2Docker Hubのモデル
ラマ 3を検索してください。Docker Hub>モデルの項目に2 て、正しいモデルを取得してください。
キャプション:Dockerモデルを引っ張って、llama3。2
4。Docker Hubから embeddinggemma モデルをダウンロードしてください
キャプション:モデルをクリックして > embeddinggemmaを検索し>モデルをダウンロードしてください
5。このコマンドを実行して、永続的なsurrealDBコンテナに接続してください
- リポジトリをクローンしたディレクトリに目を向いてください
- ディレクトリ「mydata」を作成してください
mkdir -p mydata
6。次のコマンドを実行してください:
docker run -d --name demo_data \
-p 8002:8000 \
-v "$(pwd)/mydata:/mydata" \
surrealdb/surrealdb:latest \
start --log debug --user root --pass root \
rocksdb://mydata
注意:パスはオペレーティングシステムに基づいてください。
- Windowsなら rocksdb://mydata
- LinuxやmacOSなら、rocksdb:/mydataを使ってください
7。SurrealDB Docker 拡張機能を開いて、SurrealDBに接続してください。
キャプション:Docker Desktop Extensionを通じたSurrealDBへの接続
- 接続名:RAGBot
- リモートアドレス:
http://localhost:8002
- ユーザー名:root |パスワード:root
- 「接続を作成」をクリックしてください
8。セットアップ手順を実行してください
9。WhatsAppチャットをアップロードしてください
- RAGボットのUIを起動してください(http://localhost:8080)
キャプション:SurrealDBのDockerコンテナへの接続を作成
10。RAGボットとチャットを始めて楽しんでください
11。SurrealDBリストの正確性データを確認できます
- 正しい名前空間(WhatsApp)とデータベース(チャット)に接続することを必ず確認してください
python3 load_whatsapp.py
python3 rag_chat_ui.py
キャプション:「WhatsApp」名前空間と「チャット」データベースに接続
キャプション:SurrealDBにベクターとして保存されたデータ
キャプション:RAGボットのUIとやり取りすると、答えと正確な参考資料が表示されます
このチャットボットを使えば、取り込まれたchat.txtファイルに関する情報を入手できます。また、カスタムクエリを実行してチャットボットの結果を検証できる場合、下記のようにクエリエディターで情報を検証することもできます。新しいメッセージはload_whatsapp.pyファイルから取り込むことができますが、メッセージの形式がサンプルwhatsChatExport.txtファイルと同じであることを必ず確認してください。
キャプション:Docker Desktop Extension内のSurrealDBクエリエディタ
結論
SurrealDBのDocker Extensionは、特にAIエージェント、ナレッジグラフ、リアルタイムシステムを扱うデータ集約型アプリケーションを構築する開発者にとって、アクセスしやすく強力なソリューションを提供します。マルチモデルアーキテクチャにより、個別のデータベースをつなぎ合わせる必要がなくなり、ドキュメントの保存、グラフのトラバース、クエリベクトルの取得、ライブアップデートのサブスクリプションが単一のエンジンから可能です。
Docker Desktopとの連携を使えば、始めるまで数時間ではなく数秒で済みます。設定ファイルや依存関係管理は不要で、拡張機能をインストールしてビルドを始めるだけです。ビジュアルクエリエディターとリアルタイムデータエクスプローラーにより、スキーマのプロトタイプ作成、クエリのテスト、データの変化に伴う検査が容易になります。
エージェントメモリシステムを構築している場合でも、リアルタイム推薦エンジンを構築している場合でも、単に広大なデータベーススタックを統合したい場合でも、SurrealDBのDocker Extensionは直感的な前進の道筋を提供します。今すぐインストールして、統一データレイヤーがあなたのアーキテクチャをどのように簡素化できるか実感してください。
質問がある場合や他のSurrealDBユーザーとつながりたい場合は、 DiscordのSurrealDBコミュニティに参加してください。
詳細情報
- SurrealDBのDocker Extensionをインストールする
- Docker Desktopの最新リリースを入手してください
- SurrealDBドキュメント
- 次に何が来るか投票しよう!私たちの公開ロードマップをご覧ください
- 質問がありますか? Dockerコミュニティはサポートするためにここにいます
- Dockerは初めてですか? 始めましょう