docs/SEEKDB_INTEGRATION.md
This document describes how to use OceanBase SeekDB as the vector database backend for LangBot's knowledge base feature.
OceanBase SeekDB is an AI-native search database that unifies relational, vector, text, JSON and GIS in a single engine, enabling hybrid search and in-database AI workflows. It's developed by OceanBase and released under Apache 2.0 license.
SeekDB is an optional LangBot feature. A normal LangBot installation uses
Chroma by default and does not install pyseekdb or its native bindings.
Choose the command that matches how you run LangBot:
# PyPI / uvx
uvx --from 'langbot[seekdb]@latest' langbot
# Installed package
pip install 'langbot[seekdb]'
# Source checkout
uv sync --extra seekdb
| Platform | Status | Notes |
|---|---|---|
| Linux x86_64 / ARM64 | ✅ Supported | Full embedded mode support via pylibseekdb |
| macOS 15+ on Apple Silicon | ✅ Supported | Requires the macOS ARM64 pylibseekdb wheel |
| macOS 14 or earlier on Apple Silicon | ❌ Not currently supported | The published native wheel requires macOS 15+; follow oceanbase/seekdb#1324 |
| macOS on Intel | ❌ Not currently supported | No embedded binding is selected by pyseekdb |
| Windows | ❌ Not currently supported | No Windows pylibseekdb wheel is published |
Important: Embedded mode requires a compatible pylibseekdb wheel. Do not
force-install or retag a wheel built for a newer macOS release: the bundled
binaries also declare macOS 15 as their minimum deployment target.
| Platform | Status | Notes |
|---|---|---|
| Linux | ✅ Supported | Full Docker support |
| macOS | ✅ Supported by Docker Desktop | The previous slow-disk startup issue was fixed upstream in oceanbase/seekdb#36 |
| Windows | ⚠️ Depends on the container runtime | Use a Linux container and follow the upstream image documentation |
| Platform | Status | Notes |
|---|---|---|
| Linux | ✅ Supported | Install the seekdb extra and connect to the remote server |
| macOS 15+ on Apple Silicon | ✅ Supported | Install the seekdb extra and connect to the remote server |
| macOS 14 or earlier on Apple Silicon | ⚠️ Blocked by upstream packaging | pyseekdb currently requires the unavailable native wheel even for server-only use; follow #1324 |
| macOS on Intel / Windows | ✅ Server mode only | Embedded bindings are not available |
Remote server mode does not use embedded storage at runtime. However, whether
the Python client can be installed still depends on pyseekdb's package
metadata for the current platform.
Embedded mode runs SeekDB directly within the LangBot process, storing data locally. This is the simplest setup and requires no external services.
Edit your config.yaml:
vdb:
use: seekdb
seekdb:
mode: embedded
path: './data/seekdb' # Path to store SeekDB data
database: 'langbot' # Database name
Server mode connects to a remote SeekDB server or OceanBase server. This is recommended for production deployments.
vdb:
use: seekdb
seekdb:
mode: server
host: 'localhost'
port: 2881
database: 'langbot'
user: 'root'
password: '' # Can also use SEEKDB_PASSWORD env var
If you're using OceanBase with seekdb capabilities:
vdb:
use: seekdb
seekdb:
mode: server
host: 'localhost'
port: 2881
tenant: 'sys' # OceanBase tenant name
database: 'langbot'
user: 'root'
password: ''
| Parameter | Required | Default | Description |
|---|---|---|---|
mode | No | embedded | Deployment mode: embedded or server |
path | No | ./data/seekdb | Data directory for embedded mode |
database | No | langbot | Database name |
host | No | localhost | Server host (server mode only) |
port | No | 2881 | Server port (server mode only) |
user | No | root | Username (server mode only) |
password | No | '' | Password (server mode only) |
tenant | No | None | OceanBase tenant (optional, server mode only) |
Once configured, SeekDB will be used automatically for all knowledge base operations in LangBot:
No code changes are required - just update your configuration!
The SeekDB adapter is implemented in src/langbot/pkg/vector/vdbs/seekdb.py and follows the same VectorDatabase interface as Chroma and Qdrant adapters.
Key methods:
add_embeddings(): Add vectors with metadata to a collectionsearch(): Perform vector similarity searchdelete_by_file_id(): Delete vectors by file ID metadataget_or_create_collection(): Manage collectionsdelete_collection(): Remove entire collectionsIf you see: SeekDB support is not installed
Solution:
uv sync --extra seekdb
# or: uvx --from 'langbot[seekdb]@latest' langbot
Error:
RuntimeError: Embedded Client is not available because pylibseekdb is not available.
Cause: No compatible pylibseekdb wheel is installed for the current OS,
CPU architecture, Python version, and macOS deployment target.
Solution: Use server mode instead:
vdb:
use: seekdb
seekdb:
mode: server
host: 'your-seekdb-server-ip'
port: 2881
database: 'langbot'
user: 'root'
password: ''
Alternative: Use ChromaDB or Qdrant, which work on all platforms:
vdb:
use: chroma # or qdrant
If SeekDB server is not reachable, check:
ps aux | grep observernc -zv localhost 2881For large datasets:
SeekDB is licensed under Apache License 2.0.