<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: seekdb</title>
    <description>The latest articles on DEV Community by seekdb (@seekdb).</description>
    <link>https://dev.to/seekdb</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F12456%2F9db15a51-e67d-43a1-94ef-4755f4e8b036.png</url>
      <title>DEV Community: seekdb</title>
      <link>https://dev.to/seekdb</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/seekdb"/>
    <language>en</language>
    <item>
      <title>We’re All Obsessed With Prompt Engineering. But Are We Asking the Wrong Question?</title>
      <dc:creator>Echo.lee</dc:creator>
      <pubDate>Fri, 20 Mar 2026 06:14:47 +0000</pubDate>
      <link>https://dev.to/seekdb/were-all-obsessed-with-prompt-engineering-but-are-we-asking-the-wrong-question-461j</link>
      <guid>https://dev.to/seekdb/were-all-obsessed-with-prompt-engineering-but-are-we-asking-the-wrong-question-461j</guid>
      <description>&lt;p&gt;We live in an era where the entire world is frantically learning prompt techniques.&lt;br&gt;
Yet almost no one stops to ask: &lt;strong&gt;Is this even the right way?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv6v2fcrsdlgjp4z2d0dr.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv6v2fcrsdlgjp4z2d0dr.jpg" alt=" " width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As a five-year follower of Naval Ravikant, his latest conversation with his long-time friend Nivi pushed me to rethink things I once took for granted.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F665r3b6b1errx5iqvjck.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F665r3b6b1errx5iqvjck.png" alt="28.png" width="800" height="268"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;I’m a tech professional who works with AI every single day.&lt;br&gt;
Agents — including the recently viral OpenClaw — and various AI skills have become essential to my workflow. &lt;/p&gt;

&lt;p&gt;I once deeply studied prompt courses. I spent 3 months memorizing prompt frameworks, testing 100+ templates, and even paid for a $299 “expert prompt course” to “outsmart AI.” &lt;br&gt;
We live in a fast‑moving world that wants to go even faster. A clever prompt promised to get me what I wanted from AI instantly.&lt;/p&gt;

&lt;p&gt;I never questioned the value of prompts. I spent hours mastering complex, layered prompt structures.&lt;/p&gt;

&lt;p&gt;That all changed after listening to their discussion.&lt;/p&gt;




&lt;h3&gt;
  
  
  “The Hottest New Programming Language Is English”
&lt;/h3&gt;

&lt;p&gt;“I just sit there stupidly talking to the computer because I know that this thing is now at the stage where it is going to adapt to me faster than I can adapt to it.”&lt;/p&gt;

&lt;p&gt;Outside, prompt courses are everywhere, promising superpowers.&lt;br&gt;
However, Naval — one of Silicon Valley’s sharpest thinkers — says he &lt;strong&gt;doesn’t study any of it&lt;/strong&gt;. He just talks to AI in plain, natural language.&lt;/p&gt;

&lt;p&gt;At first, it sounds almost dismissive. Is this just a hook to keep you listening?&lt;br&gt;
But as you dive deeper, you realize his judgment is brutally clear:&lt;br&gt;
&lt;strong&gt;In the AI era, workflows and tooling have extremely short lifespans — months, sometimes even weeks.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The prompt template you spent weeks perfecting today may become obsolete on the next model update, just three months from now.&lt;/p&gt;

&lt;p&gt;You spend time adapting to the model. But the model is also iterating nonstop, adapting to you.&lt;/p&gt;

&lt;p&gt;The real question is:&lt;br&gt;
&lt;strong&gt;Who adapts faster?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The answer is obvious: &lt;strong&gt;the model.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;So Naval’s “laziness” is actually &lt;strong&gt;extreme judgment&lt;/strong&gt;.&lt;br&gt;
In an era of relentless change, what’s truly worth your time is &lt;strong&gt;structured thinking&lt;/strong&gt; and the ability to &lt;strong&gt;clearly articulate what you want&lt;/strong&gt;.&lt;br&gt;
Those are timeless skills.&lt;/p&gt;




&lt;h3&gt;
  
  
  “No Entrepreneur Is Worried About AI Taking Their Job”
&lt;/h3&gt;

&lt;p&gt;This second idea resonated deeply with me.&lt;/p&gt;

&lt;p&gt;First, a tricky one: entrepreneurship isn’t a job, So AI can’t replace it.&lt;/p&gt;

&lt;p&gt;Entrepreneurship is about &lt;strong&gt;creating something you want in the world&lt;/strong&gt;, building scalable systems around it, bringing it to market, and delivering value.&lt;/p&gt;

&lt;p&gt;It’s far harder than any job. AI can only be a helper, an ally.&lt;/p&gt;

&lt;p&gt;If you’re an entrepreneur, you have nothing to fear.&lt;/p&gt;

&lt;p&gt;Second, what does AI lack, compared to humans — to developers, to scientists?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It has no genuine desire of its own.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;AI has no survival instinct, no sense of self — not yet, at least.&lt;br&gt;
It doesn’t fear being turned off. It cannot truly be an entrepreneur.&lt;/p&gt;

&lt;p&gt;The biggest difference between an entrepreneur and an engineer?&lt;br&gt;
The former has a powerful sense of agency. They have somewhere they desperately want to go, something unique they want to fulfill. An engineer executes defined tasks — which means they can be replaced.&lt;/p&gt;

&lt;p&gt;In the AI era, anyone who knows what they want and pursues it wholeheartedly will only be accelerated by AI, not threatened.&lt;/p&gt;

&lt;p&gt;It’s a harsh truth. (And yes, I am an engineer)&lt;/p&gt;




&lt;h3&gt;
  
  
  “AI Fails the Only True Test of Intelligence.”
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;“The only true test of intelligence is if you get what you want out of life.”&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Naval says this is one of his most widely shared tweets.&lt;br&gt;
And it hits hard.&lt;/p&gt;

&lt;p&gt;Many people go to top schools, have strong skills, but still live unhappy lives:&lt;br&gt;
struggling with relationships, failing at healthy habits, not earning what they want.&lt;/p&gt;

&lt;p&gt;Now apply that standard to AI.&lt;br&gt;
It doesn’t work at all — because AI doesn’t want anything.&lt;/p&gt;

&lt;p&gt;Here’s a spicy twist:&lt;br&gt;
Most things we want in life are competitive.&lt;br&gt;
If you want to win someone over, you compete with others.&lt;br&gt;
If you use AI to invest, it competes with other investors and their AIs.&lt;/p&gt;

&lt;p&gt;When everyone uses AI, &lt;strong&gt;the marginal advantage fades away&lt;/strong&gt;.&lt;br&gt;
The people who win in the end are still those who know what they truly want.&lt;/p&gt;




&lt;p&gt;At the end of the discussion, one line stood out above all:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;“The means of learning are abundant. It’s the desire to learn that’s scarce.”&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In the AI era, you can learn almost anything by simply asking.&lt;br&gt;
AI can explain a concept in 100 different ways until you understand.&lt;br&gt;
You can master any skill you set your mind to.&lt;/p&gt;

&lt;p&gt;But this only matters for one kind of person:&lt;br&gt;
&lt;strong&gt;someone who actually wants to learn.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;No amount of resources matters without desire.&lt;/p&gt;




&lt;p&gt;This episode isn’t just about AI.&lt;br&gt;
It’s about the relationship between humans and machines.&lt;br&gt;
Will AI replace us? Will AI surpass us?&lt;/p&gt;

&lt;p&gt;Behind all those questions lies the one that matters most:&lt;/p&gt;

&lt;p&gt;We’re building increasingly advanced models and agents.&lt;br&gt;
But &lt;strong&gt;as humans, what do we really want?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When you face AI, what do you want?&lt;/p&gt;

&lt;p&gt;It may be the first question we must answer before we can truly remain human in the AI era.&lt;/p&gt;




</description>
      <category>ai</category>
      <category>programming</category>
      <category>memory</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Building a Smart, AI-Powered Book Search App — The Easy Way</title>
      <dc:creator>Echo.lee</dc:creator>
      <pubDate>Wed, 18 Mar 2026 06:21:39 +0000</pubDate>
      <link>https://dev.to/seekdb/building-a-smart-ai-powered-book-search-app-the-easy-way-p01</link>
      <guid>https://dev.to/seekdb/building-a-smart-ai-powered-book-search-app-the-easy-way-p01</guid>
      <description>&lt;p&gt;Just spent some time getting hands-on with seekdb, and it’s been a pleasant surprise—here’s a quick breakdown of what caught my eye (no fluff, just the good stuff):&lt;/p&gt;

&lt;p&gt;✅ Lightweight &amp;amp; easy to spin up: Runs smoothly on my MacBook via Docker Desktop, or straight up with pip on Linux. macOS/Windows native support is on the way, so soon it’ll be a simple one-command install, no Docker required.&lt;/p&gt;

&lt;p&gt;✅ Unified architecture done right: Natively supports relational, vector, full-text, JSON, and GIS data types—all indexes update atomically in the same transaction. Zero Data Lag, strict ACID compliance, and none of the latency/inconsistency headaches from traditional CDC sync.&lt;/p&gt;

&lt;p&gt;✅ AI-Native out of the box: Built-in embedding models and AI functions mean one SQL query handles vector + full-text + scalar filtering. No more messy glue code to stitch tech stacks together—perfect for powering RAG workflows.&lt;/p&gt;

&lt;p&gt;✅ Schema-free API: Write directly, no need to predefine rigid table structures—saves so much setup time.&lt;/p&gt;

&lt;p&gt;✅ Full MySQL compatibility: Easy upgrade path for traditional databases looking to add AI capabilities without a complete overhaul.&lt;/p&gt;

&lt;p&gt;✅ Open-source (Apache 2.0) with OceanBase backing: Long-term support is locked in, and the project’s only getting better—always a win for the community.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fomlpx74wc5bcz7wtplgt.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fomlpx74wc5bcz7wtplgt.jpg" alt=" " width="800" height="800"&gt;&lt;/a&gt;&lt;br&gt;
In this tutorial, we'll build an &lt;strong&gt;intelligent book search application&lt;/strong&gt; from scratch using seekdb, demonstrating semantic search, hybrid search, and other core capabilities.&lt;/p&gt;


&lt;h2&gt;
  
  
  What We'll Build
&lt;/h2&gt;

&lt;p&gt;This tutorial will walk you through creating a smart book search app that demonstrates seekdb's main features:&lt;/p&gt;
&lt;h3&gt;
  
  
  1. Data Import
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Import from CSV files into seekdb&lt;/li&gt;
&lt;li&gt;Support batch data import&lt;/li&gt;
&lt;li&gt;Automatically convert book text information into 384-dimensional vector embeddings&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  2. Three Search Capabilities
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Semantic Search&lt;/strong&gt;: Based on vector similarity, use natural language queries to find semantically related books&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Metadata Filtering&lt;/strong&gt;: Precise filtering by rating, genre, year, price, and other fields&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hybrid Search&lt;/strong&gt;: Combines semantic search + metadata filtering using RRF (Reciprocal Rank Fusion) algorithm&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  3. Index Optimization
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Create HNSW vector indexes to boost semantic search performance&lt;/li&gt;
&lt;li&gt;Generate column indexes from metadata (extract fields from JSON to create indexes)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  4. Tech Stack
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Database&lt;/strong&gt;: seekdb, pyseekdb (seekdb's Python SDK), pymysql&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data Processing&lt;/strong&gt;: pandas&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;
  
  
  Prerequisites
&lt;/h2&gt;
&lt;h3&gt;
  
  
  1. Install OrbStack
&lt;/h3&gt;

&lt;p&gt;OrbStack is a lightweight Docker alternative optimized for Mac. It starts fast and uses fewer resources. We'll use it to deploy seekdb locally.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1: Install via Homebrew (Recommended)&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew &lt;span class="nb"&gt;install &lt;/span&gt;orbstack
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or download from the official website: &lt;a href="https://orbstack.dev" rel="noopener noreferrer"&gt;https://orbstack.dev&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2: Start OrbStack&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Start OrbStack&lt;/span&gt;
open &lt;span class="nt"&gt;-a&lt;/span&gt; OrbStack

&lt;span class="c"&gt;# Verify installation&lt;/span&gt;
orb version
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. Deploy seekdb Image
&lt;/h3&gt;

&lt;p&gt;If downloads are slow, configure Docker to use a domestic mirror source in OrbStack settings.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Pull seekdb image&lt;/span&gt;
docker pull oceanbase/seekdb:latest

&lt;span class="c"&gt;# Start seekdb container&lt;/span&gt;
docker run &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--name&lt;/span&gt; seekdb &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-p&lt;/span&gt; 2881:2881 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-e&lt;/span&gt; &lt;span class="nv"&gt;MODE&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;slim &lt;span class="se"&gt;\&lt;/span&gt;
  oceanbase/seekdb:latest

&lt;span class="c"&gt;# Check container status&lt;/span&gt;
docker ps | &lt;span class="nb"&gt;grep &lt;/span&gt;seekdb

&lt;span class="c"&gt;# View logs (ensure service started successfully)&lt;/span&gt;
docker logs seekdb
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Wait about 30 seconds for seekdb to fully start. You can monitor the startup logs with &lt;code&gt;docker logs -f seekdb&lt;/code&gt;. When you see "boot success", it's ready.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Download the Dataset
&lt;/h3&gt;

&lt;p&gt;Download the dataset from: &lt;a href="https://www.kaggle.com/datasets/sootersaalu/amazon-top-50-bestselling-books-2009-2019" rel="noopener noreferrer"&gt;https://www.kaggle.com/datasets/sootersaalu/amazon-top-50-bestselling-books-2009-2019&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Rename it to: &lt;code&gt;bestsellers_with_categories.csv&lt;/code&gt;. It contains 550 records of Amazon's historical bestsellers.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnlqdftg6gktpflssbkas.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnlqdftg6gktpflssbkas.png" width="800" height="440"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  4. Download the Tutorial Code
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/kejun/demo-seekdb-hybridsearch.git
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;Project Structure:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;demo-seekdb-books-hybrid-search/
├── database/
│   ├── db_client.py      # Database client wrapper
│   └── index_manager.py  # Index manager
├── data/
│   └── processor.py      # Data processor
├── models/
│   └── book_metadata.py  # Book metadata model
├── utils/
│   └── text_utils.py     # Text processing utilities
├── import_data.py        # Data import script
├── hybrid_search.py      # Hybrid search demo
└── bestsellers_with_categories.csv  # Data file
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Create Python Virtual Environment:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Create virtual environment&lt;/span&gt;
python3 &lt;span class="nt"&gt;-m&lt;/span&gt; venv venv

&lt;span class="c"&gt;# Activate virtual environment&lt;/span&gt;
&lt;span class="nb"&gt;source &lt;/span&gt;venv/bin/activate   &lt;span class="c"&gt;# macOS/Linux&lt;/span&gt;
&lt;span class="c"&gt;# or&lt;/span&gt;
.&lt;span class="se"&gt;\v&lt;/span&gt;&lt;span class="nb"&gt;env&lt;/span&gt;&lt;span class="se"&gt;\S&lt;/span&gt;cripts&lt;span class="se"&gt;\a&lt;/span&gt;ctivate    &lt;span class="c"&gt;# Windows&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Install Dependencies:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt; requirements.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Execution Results
&lt;/h2&gt;

&lt;p&gt;Run &lt;code&gt;python import_data.py&lt;/code&gt; to import data. You'll see the entire process: load data file → connect to database → create database → create collection → batch import data → create metadata indexes.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;(Note: seekdb currently supports HNSW indexes for embedding columns and full-text indexes for document columns. Metadata field indexing is planned for future releases.)&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;seekdb uses a schema-free interface design. For example, in &lt;code&gt;data/processor.py&lt;/code&gt;, when calling &lt;code&gt;collection.add()&lt;/code&gt;, you can pass any dictionary directly:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;collection&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;add&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;ids&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;valid_ids&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;documents&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;valid_documents&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;metadatas&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;valid_metadatas&lt;/span&gt;  &lt;span class="c1"&gt;# Pass dictionary list directly, no schema predefinition needed
&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Complete Results (abbreviated):&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Loading data file: bestsellers_with_categories.csv
Data loaded!
- Total rows: 550
- Total columns: 7
- Column names: Name, Author, User Rating, Reviews, Price, Year, Genre
- Load time: 0.01 seconds

Connecting to database...
Host: 127.0.0.1:2881
Database: demo_books
Collection: book_info
Database ready
Database connection successful

Creating/rebuilding collection...
Collection name: book_info
Vector dimensions: 384
Distance metric: cosine
Collection created successfully

Processing data...
Data preprocessing complete!
- Total records: 550
- Validation errors: 0
- Processing time: 0.05 seconds

Importing data to collection...
- Batch size: 100
- Total batches: 6
- Starting import...

Import progress: 100%|█████████████████████████████████████| 6/6 [00:53&amp;lt;00:00,  8.97s/batch]

Data import complete!
- Import time: 53.83 seconds
- Average speed: 10 records/second

Creating metadata indexes...
- Index fields: genre, year, user_rating, author, reviews, price
Index creation complete!
- Creation time: 3.81 seconds

Data import process complete!
Total time: 59.64 seconds
Imported records: 550
Database: demo_books
Collection: book_info
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After importing data, you can query the database directly using the MySQL client or install obclient in the terminal.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Enter seekdb container&lt;/span&gt;
docker &lt;span class="nb"&gt;exec&lt;/span&gt; &lt;span class="nt"&gt;-it&lt;/span&gt; seekdb bash

&lt;span class="c"&gt;# Connect using MySQL client (seekdb is MySQL-compatible)&lt;/span&gt;
mysql &lt;span class="nt"&gt;-h127&lt;/span&gt;.0.0.1 &lt;span class="nt"&gt;-P2881&lt;/span&gt; &lt;span class="nt"&gt;-uroot&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;book_info&lt;/code&gt; is a seekdb &lt;code&gt;collection&lt;/code&gt;, which corresponds to the underlying table name &lt;code&gt;c$v1$book_info&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="c1"&gt;-- View all databases&lt;/span&gt;
&lt;span class="k"&gt;SHOW&lt;/span&gt; &lt;span class="n"&gt;DATABASES&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c1"&gt;-- Switch to demo database&lt;/span&gt;
&lt;span class="n"&gt;USE&lt;/span&gt; &lt;span class="n"&gt;demo&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c1"&gt;-- View all tables (collections)&lt;/span&gt;
&lt;span class="k"&gt;SHOW&lt;/span&gt; &lt;span class="n"&gt;TABLES&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c1"&gt;-- View collection structure&lt;/span&gt;
&lt;span class="k"&gt;DESC&lt;/span&gt; &lt;span class="k"&gt;c&lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="n"&gt;v1&lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="n"&gt;book_info&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c1"&gt;-- Query collection data&lt;/span&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="k"&gt;c&lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="n"&gt;v1&lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="n"&gt;book_info&lt;/span&gt; &lt;span class="k"&gt;LIMIT&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c1"&gt;-- Count records&lt;/span&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="k"&gt;COUNT&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="k"&gt;c&lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="n"&gt;v1&lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="n"&gt;book_info&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c1"&gt;-- Exit&lt;/span&gt;
&lt;span class="n"&gt;EXIT&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;show table schema&lt;code&gt;DESC c$v1$book_info&lt;/code&gt;：&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjxz8db0r00y8ek5c5nbm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjxz8db0r00y8ek5c5nbm.png" width="800" height="238"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;show index created：&lt;/p&gt;

&lt;p&gt;&lt;em&gt;(Note: pyseekdb doesn't currently support direct indexing of metadata columns, so the project uses pymysql + SQL DDL to implement metadata indexing. The next pyseekdb version will support automatic indexing of metadata fields.)&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpe81ecsxvnoz2rzpxrju.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpe81ecsxvnoz2rzpxrju.png" width="800" height="137"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Running Hybrid Search
&lt;/h2&gt;

&lt;p&gt;Next, run &lt;code&gt;python hybrid_search.py&lt;/code&gt;. seekdb's built-in embedding model is &lt;code&gt;sentence-transformers/all-MiniLM-L6-v2&lt;/code&gt;, with a maximum vector dimension of 384. For better results, configure an external model service.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Hybrid search is seekdb's killer feature.&lt;/strong&gt; It simultaneously executes full-text retrieval and vector retrieval, then merges results using the RRF (Reciprocal Rank Fusion) algorithm.&lt;/p&gt;

&lt;p&gt;Looking at the code example, &lt;code&gt;query_params&lt;/code&gt; defines a full-text search for "inspirational" while filtering by user rating (user_rating &amp;gt;= 4.5) from metadata. &lt;code&gt;knn_params&lt;/code&gt; is semantic search, with &lt;code&gt;query_texts&lt;/code&gt; being the phrase "inspirational life advice", using the same user rating filter.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Code Snippet:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;query_params&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;where_document&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;$contains&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;inspirational&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;where&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;user_rating&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;$gte&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;4.5&lt;/span&gt;&lt;span class="p"&gt;}},&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;n_results&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="n"&gt;knn_params&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;query_texts&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;inspirational life advice&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;where&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;user_rating&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;$gte&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;4.5&lt;/span&gt;&lt;span class="p"&gt;}},&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;n_results&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="n"&gt;results&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;collection&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;hybrid_search&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;query&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;query_params&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;knn&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;knn_params&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;rank&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;rrf&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{}},&lt;/span&gt;
    &lt;span class="n"&gt;n_results&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;include&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;metadatas&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;documents&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;distances&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The results are impressively accurate. Complete execution results (abbreviated):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;=== Semantic Search ===
Query: ['self improvement motivation success']

Semantic Search - Found 5 results:

[1] The 7 Habits of Highly Effective People: Powerful Lessons in Personal Change
    Author: Stephen R. Covey
    Rating: 4.6
    Reviews: 9325
    Price: $24.0
    Year: 2011
    Genre: Non Fiction
    Similarity distance: 0.5358
    Similarity: 0.4642

(Other results omitted...)


=== Hybrid Search (Rating≥4.5) ===
Query: {'where_document': {'$contains': 'inspirational'}, 'where': {'user_rating': {'$gte': 4.5}}, 'n_results': 5}
KNN Query Texts: ['inspirational life advice']

Hybrid Search (Rating≥4.5) - Found 5 results:

[1] Mindset: The New Psychology of Success
    Author: Carol S. Dweck
    Rating: 4.6
    Reviews: 5542
    Price: $10.0
    Year: 2014
    Genre: Non Fiction
    Similarity distance: 0.0159
    Similarity: 0.9841

(Other results omitted...)


=== Hybrid Search (Non Fiction) ===
Query: {'where_document': {'$contains': 'business'}, 'where': {'genre': 'Non Fiction'}, 'n_results': 5}
KNN Query Texts: ['business entrepreneurship leadership']

Hybrid Search (Non Fiction) - Found 5 results:

[1] The Five Dysfunctions of a Team: A Leadership Fable
    Author: Patrick Lencioni
    Rating: 4.6
    Reviews: 3207
    Price: $6.0
    Year: 2009
    Genre: Non Fiction
    Similarity distance: 0.0164
    Similarity: 0.9836

(Other results omitted...)


=== Hybrid Search (Fiction, After 2015, Rating≥4.0) ===
Query: {'where_document': {'$contains': 'fiction'}, 'where': {'$and': [{'year': {'$gte': 2015}}, {'user_rating': {'$gte': 4.0}}, {'genre': 'Fiction'}]}, 'n_results': 5}
KNN Query Texts: ['fiction story novel']

Hybrid Search (Fiction, After 2015, Rating≥4.0) - Found 5 results:

[1] A Gentleman in Moscow: A Novel
    Author: Amor Towles
    Rating: 4.7
    Reviews: 19699
    Price: $15.0
    Year: 2017
    Genre: Fiction
    Similarity distance: 0.0154
    Similarity: 0.9846

(Other results omitted...)


=== Hybrid Search (Reviews≥10000) ===
Query: {'where_document': {'$contains': 'popular'}, 'where': {'reviews': {'$gte': 10000}}, 'n_results': 10}
KNN Query Texts: ['popular bestseller']

Hybrid Search (Reviews≥10000) - Found 10 results:

[1] Twilight (The Twilight Saga, Book 1)
    Author: Stephenie Meyer
    Rating: 4.7
    Reviews: 11676
    Price: $9.0
    Year: 2009
    Genre: Fiction
    Similarity distance: 0.0143
    Similarity: 0.9857

[2] 1984 (Signet Classics)
    Author: George Orwell
    Rating: 4.7
    Reviews: 21424
    Price: $6.0
    Year: 2017
    Genre: Fiction
    Similarity distance: 0.0145
    Similarity: 0.9855

[3] Last Week Tonight with John Oliver Presents A Day in the Life of Marlon Bundo (Better Bundo Book, LGBT Childrens Book)
    Author: Jill Twiss
    Rating: 4.9
    Reviews: 11881
    Price: $13.0
    Year: 2018
    Genre: Fiction
    Similarity distance: 0.0147
    Similarity: 0.9853

(Other results omitted...)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Vibe Coding Friendly
&lt;/h2&gt;

&lt;p&gt;If you're using Cursor or Claude Code for development, you've probably installed context7-mcp. It queries the latest API documentation, code examples, and more—the perfect companion for vibe coding. I noticed seekdb has been added to Context7:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;seekdb: &lt;a href="https://context7.com/oceanbase/seekdb" rel="noopener noreferrer"&gt;https://context7.com/oceanbase/seekdb&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;pyseekdb: &lt;a href="https://context7.com/oceanbase/pyseekdb" rel="noopener noreferrer"&gt;https://context7.com/oceanbase/pyseekdb&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you haven't installed it yet, I highly recommend it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"context7"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"npx"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"args"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"-y"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"@upstash/context7-mcp"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"--api-key"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"&amp;lt;your-apiKey-created-on-context7&amp;gt;"&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After installation, you can learn and use seekdb simultaneously.&lt;/p&gt;




&lt;h2&gt;
  
  
  Key Takeaways
&lt;/h2&gt;

&lt;p&gt;What makes seekdb special:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Lightweight &amp;amp; Easy to Deploy&lt;/strong&gt;: Runs smoothly on a MacBook, with native macOS/Windows support coming soon&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Unified Architecture&lt;/strong&gt;: Combines relational, vector, full-text, JSON, and GIS in one system&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI-Native&lt;/strong&gt;: Built-in embeddings and AI functions, no glue code needed&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Schema-Free&lt;/strong&gt;: Write directly without predefining schemas&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MySQL-Compatible&lt;/strong&gt;: Easy migration path for existing databases&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Open Source&lt;/strong&gt;: Apache 2.0 license with OceanBase backing&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The hybrid search capability is particularly impressive—combining semantic understanding with precise metadata filtering delivers results that feel both intelligent and accurate.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Repo:&lt;/strong&gt; &lt;a href="https://github.com/oceanbase/seekdb" rel="noopener noreferrer"&gt;github.com/oceanbase/seekdb&lt;/a&gt; (Apache 2.0 — Stars, Issues, PRs welcome)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Docs:&lt;/strong&gt; &lt;a href="https://www.oceanbase.ai/docs/seekdb-overview" rel="noopener noreferrer"&gt;seekdb documentation&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Discord:&lt;/strong&gt; &lt;a href="https://discord.com/channels/1331061822945624085/1331061823465590805" rel="noopener noreferrer"&gt;https://discord.com/channels/1331061822945624085/1331061823465590805&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Medium&lt;/strong&gt;:&lt;a href="https://medium.com/@pub_opensource_global" rel="noopener noreferrer"&gt;https://medium/seekdb&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Press:&lt;/strong&gt; &lt;a href="https://www.marktechpost.com/2025/11/26/oceanbase-releases-seekdb-an-open-source-ai-native-hybrid-search-database-for-multi-model-rag-and-ai-agents/" rel="noopener noreferrer"&gt;OceanBase Releases seekdb (MarkTechPost)&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I hope this tutorial helps you get started with seekdb more smoothly. Enjoy building! 🚀&lt;/p&gt;

</description>
      <category>hybridsearch</category>
      <category>ai</category>
      <category>programming</category>
      <category>appwritehack</category>
    </item>
    <item>
      <title>Beyond Text: seekdb Does Travel, Image Search, and Voice—in One DB</title>
      <dc:creator>Echo.lee</dc:creator>
      <pubDate>Tue, 17 Mar 2026 02:32:13 +0000</pubDate>
      <link>https://dev.to/seekdb/beyond-text-seekdb-does-travel-image-search-and-voice-in-one-db-mjk</link>
      <guid>https://dev.to/seekdb/beyond-text-seekdb-does-travel-image-search-and-voice-in-one-db-mjk</guid>
      <description>&lt;p&gt;&lt;strong&gt;Keywords: TEN · PowerMem · travel · image search · voice assistant&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Hybrid search isn’t just for text.&lt;/strong&gt; You can store and query multimodal data—images, text, spatial data—in one database. seekdb’s &lt;strong&gt;multimodal and GIS support live in the open-source repo&lt;/strong&gt;; there’s no “enterprise-only” tier. This post walks through three scenarios: a &lt;strong&gt;cultural-tourism assistant&lt;/strong&gt; (multimodal fusion), &lt;strong&gt;image search&lt;/strong&gt;, and a &lt;strong&gt;TEN + PowerMem voice assistant&lt;/strong&gt;. For each, we focus on what seekdb solves and the one step that matters most.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0agk6niceld8qsgjirgk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0agk6niceld8qsgjirgk.png" alt="Where the magic begins" width="800" height="430"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  1. Travel Assistant: Multimodal Fusion in One Database
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Scenario&lt;/strong&gt;: Attractions, exhibits, routes—with text descriptions, images, and locations (GIS). Users might ask in natural language (“What’s nearby?” or “Anything worth seeing around here?”) or upload a photo (“What else looks like this?” or “Where else can I find places like this?”).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What seekdb does&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Puts &lt;strong&gt;text, image vectors, and spatial data&lt;/strong&gt; in one store: relational fields (name, tags), vector columns (text/image embeddings), full-text columns (descriptions), and GIS columns (coordinates or regions).&lt;/li&gt;
&lt;li&gt;At query time, &lt;strong&gt;vector similarity (semantic + image search) + full-text keywords + spatial filters&lt;/strong&gt; run in a single request—no “query the image store, then the business DB, and then merge.”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;The one step that matters:&lt;/strong&gt; When you model your data, &lt;strong&gt;define “one record” clearly&lt;/strong&gt; (e.g. one row per attraction) so vector, full-text, and GIS stay in sync. Then, from whatever the front end sends—text query, image, or location—build one hybrid query.&lt;br&gt;&lt;br&gt;
For the full walkthrough, see &lt;a href="https://www.oceanbase.ai/docs/build-multi-model-application-based-on-oceanbase" rel="noopener noreferrer"&gt;Build a cultural tourism assistant with seekdb multi-model integration&lt;/a&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  2. Image Search: Architecture and Key APIs
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Scenario:&lt;/strong&gt; User uploads an image; the system returns the “semantically closest” images in the store (same style, same scene, etc.).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What seekdb does&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Images go through a &lt;strong&gt;vision model&lt;/strong&gt; to get vectors and are written into seekdb’s vector column; you can also store image URLs, tags, and other relational/full-text fields.&lt;/li&gt;
&lt;li&gt;At query time: upload image → same vision model → query vector → &lt;strong&gt;vector search&lt;/strong&gt; (or hybrid: vector + tag keywords) in seekdb → return results by similarity.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;The one step that matters:&lt;/strong&gt; Pick a &lt;strong&gt;vision embedding model&lt;/strong&gt; and &lt;strong&gt;vector dimension&lt;/strong&gt;, create a &lt;strong&gt;VECTOR INDEX&lt;/strong&gt;, and optionally add full-text/tags for hybrid “image + text” search in one request.&lt;br&gt;&lt;br&gt;
Full example: &lt;a href="https://www.oceanbase.ai/docs/build-image-search-app-in-seekdb" rel="noopener noreferrer"&gt;Build an image search application with seekdb&lt;/a&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. TEN + PowerMem Voice Assistant
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Scenario:&lt;/strong&gt; A voice-driven agent—speech input → ASR → understanding and retrieval (possibly multi-turn, with memory) → reply generation → TTS. “Memory” and “retrieval” need a stable, low-latency storage and retrieval layer.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What seekdb does&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The &lt;strong&gt;TEN framework&lt;/strong&gt; handles dialogue orchestration, multi-turn logic, and tasks; &lt;strong&gt;OceanBase PowerMem&lt;/strong&gt; handles memory/state and retrieval.&lt;/li&gt;
&lt;li&gt;seekdb is the &lt;strong&gt;unified storage and retrieval backend&lt;/strong&gt;: conversation summaries, user preferences, knowledge snippets. Hybrid search supports recall by semantics, by keywords, and by relations, so the agent can decide what to say and generate replies from one place.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;The one step that matters:&lt;/strong&gt; Model “what to remember” and “what to retrieve” as seekdb tables (relational + vector + full-text). Each turn: write into memory as needed, run hybrid retrieval as needed, and then hand off to LLM/TTS.&lt;br&gt;&lt;br&gt;
See &lt;a href="https://www.oceanbase.ai/docs/using-ten-framework-and-oceanbase-powermem-to-create-personalized-intelligent-voice-assistant" rel="noopener noreferrer"&gt;Build a personalized voice assistant with TEN Framework and OceanBase PowerMem&lt;/a&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  4. Summary: Multimodal = One DB, Multiple Indexes, One Query
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fskupc29bkxa9o5st7q48.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fskupc29bkxa9o5st7q48.png" width="800" height="410"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here, “multimodal” means: one store and transaction model; vector, full-text, and GIS indexes kept in sync; and one query that expresses multiple intents. This is the first post in our “seekdb magic” series. More demos are on the way—fun, useful, and built to make your work and life a bit easier. Join us and try them out.&lt;/p&gt;




&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Repo:&lt;/strong&gt; &lt;a href="https://github.com/oceanbase/seekdb" rel="noopener noreferrer"&gt;github.com/oceanbase/seekdb&lt;/a&gt; (Apache 2.0 — Stars, Issues, PRs welcome)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Docs:&lt;/strong&gt; &lt;a href="https://www.oceanbase.ai/docs/seekdb-overview" rel="noopener noreferrer"&gt;seekdb documentation&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Discord:&lt;/strong&gt; &lt;a href="https://discord.com/channels/1331061822945624085/1331061823465590805" rel="noopener noreferrer"&gt;https://discord.com/channels/1331061822945624085/1331061823465590805&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Medium:&lt;/strong&gt;&lt;strong&gt; &lt;/strong&gt;&lt;a href="https://medium.com/@pub_opensource_global" rel="noopener noreferrer"&gt;https://dev.to/seekdb&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Press:&lt;/strong&gt; &lt;a href="https://www.marktechpost.com/2025/11/26/oceanbase-releases-seekdb-an-open-source-ai-native-hybrid-search-database-for-multi-model-rag-and-ai-agents/" rel="noopener noreferrer"&gt;OceanBase Releases seekdb (MarkTechPost)&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;__&lt;/p&gt;

</description>
      <category>travel</category>
      <category>imagesearch</category>
      <category>ai</category>
      <category>database</category>
    </item>
    <item>
      <title>No SQL Required: Build AI Apps &amp; Knowledge Bases with Plain Language</title>
      <dc:creator>Echo.lee</dc:creator>
      <pubDate>Thu, 12 Mar 2026 06:33:30 +0000</pubDate>
      <link>https://dev.to/seekdb/no-sql-required-build-ai-apps-knowledge-bases-with-plain-language-1f6b</link>
      <guid>https://dev.to/seekdb/no-sql-required-build-ai-apps-knowledge-bases-with-plain-language-1f6b</guid>
      <description>&lt;p&gt;Imagine this: you describe what you need in plain English, and AI automatically handles all the database operations—creating document collections, inserting data, running complex queries, even building a complete knowledge base application. This isn't science fiction. It's available right now.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;seekdb MCP Server&lt;/strong&gt; is the bridge that makes this possible. Built on Anthropic's &lt;strong&gt;Model Context Protocol (MCP)&lt;/strong&gt;, it enables AI assistants to interact directly with SeekDB databases, transforming natural language into database operations seamlessly.&lt;/p&gt;

&lt;p&gt;In this guide, we'll walk you through seekdb MCP Server and build a real-world AI application using nothing but natural language. You'll experience firsthand what it means to work with an AI-native database.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F40k6ehipkvb4tr70mure.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F40k6ehipkvb4tr70mure.jpg" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  What is seekdb MCP Server?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;seekdb&lt;/strong&gt; is an AI-native search database that unifies relational data, vector data, full-text indexing, JSON, and GIS capabilities in a single architecture. It supports hybrid retrieval and in-database AI workflows.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;MCP Server&lt;/strong&gt; acts as the "adapter" connecting AI tools to databases. Through the MCP protocol, AI tools like Cursor, Claude Code, and Cline can directly access and manipulate SeekDB databases.&lt;/p&gt;

&lt;h3&gt;
  
  
  Core Capabilities at a Glance
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Category&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Tools&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;What It Does&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Vector Collection Management&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;create_collection&lt;/code&gt;, &lt;code&gt;query_collection&lt;/code&gt;, &lt;code&gt;add_data_to_collection&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Create vector collections, semantic search, document management&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Advanced Search&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;full_text_search&lt;/code&gt;, &lt;code&gt;hybrid_search&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Full-text search, hybrid search (BM25 + vectors)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;AI Functions&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;ai_complete&lt;/code&gt;, &lt;code&gt;ai_rerank&lt;/code&gt;, &lt;code&gt;create_ai_model&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Call LLMs for text generation, rerank search results&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;AI Memory System&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;seekdb_memory_query&lt;/code&gt;, &lt;code&gt;seekdb_memory_insert&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Persistent cross-session memory—AI that remembers you&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Data Import/Export&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;import_csv_file_to_seekdb&lt;/code&gt;, &lt;code&gt;export_csv_file_from_seekdb&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Convert between CSV files and database tables/vector collections&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  Installing seekdb Database
&lt;/h2&gt;

&lt;p&gt;Before using seekdb MCP Server, you'll need to set up seekdb. seekdb offers two deployment modes:&lt;/p&gt;

&lt;h3&gt;
  
  
  Mode 1: Embedded Mode (Zero Configuration, Linux Only)
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;No separate installation needed!&lt;/strong&gt; SeekDB MCP Server automatically initializes a local embedded database when it starts—truly plug-and-play.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best for:&lt;/strong&gt; Personal learning, rapid prototyping, edge device deployment.&lt;/p&gt;

&lt;p&gt;⚠️ &lt;strong&gt;Note for macOS and Windows users:&lt;/strong&gt; You'll need to use Client/Server mode. Deploy SeekDB first (Docker recommended), then configure connection parameters.&lt;/p&gt;

&lt;h3&gt;
  
  
  Mode 2: Client/Server Mode (Recommended for Production)
&lt;/h3&gt;

&lt;p&gt;For test or production environments, choose one of these options:&lt;/p&gt;

&lt;h4&gt;
  
  
  Option 1: Install via yum (RPM systems)
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# 1. Add seekdb repository&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;yum-config-manager &lt;span class="nt"&gt;--add-repo&lt;/span&gt; https://mirrors.aliyun.com/oceanbase/OceanBase.repo

&lt;span class="c"&gt;# 2. Install seekdb and client&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;yum &lt;span class="nb"&gt;install &lt;/span&gt;seekdb obclient

&lt;span class="c"&gt;# 3. Start seekdb&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl start seekdb

&lt;span class="c"&gt;# 4. Check status (look for "Service is ready")&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl status seekdb

&lt;span class="c"&gt;# 5. Test connection&lt;/span&gt;
mysql &lt;span class="nt"&gt;-h127&lt;/span&gt;.0.0.1 &lt;span class="nt"&gt;-uroot&lt;/span&gt; &lt;span class="nt"&gt;-P2881&lt;/span&gt; &lt;span class="nt"&gt;-A&lt;/span&gt; oceanbase
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Option 2: Use Docker (Fastest)
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# One command to start seekdb&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;docker run &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; 2881:2881 oceanbase/seekdb

&lt;span class="c"&gt;# If pull fails, try alternative mirrors:&lt;/span&gt;
&lt;span class="c"&gt;# sudo docker run -d -p 2881:2881 quay.io/oceanbase/seekdb&lt;/span&gt;
&lt;span class="c"&gt;# sudo docker run -d -p 2881:2881 ghcr.io/oceanbase/seekdb&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;System Requirements:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;CPU: Minimum 1 core&lt;/li&gt;
&lt;li&gt;Memory: Minimum 2 GB available&lt;/li&gt;
&lt;li&gt;Supported OS: CentOS 7/8, Ubuntu 20+, Debian 9+, Anolis OS 8, Kylin V10, and more&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For more deployment options, check the &lt;a href="https://www.oceanbase.ai/docs/deploy-overview/" rel="noopener noreferrer"&gt;SeekDB deployment documentation&lt;/a&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Installing seekdb MCP Server
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Install uv Package Manager
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Install uv package manager&lt;/span&gt;
curl &lt;span class="nt"&gt;-LsSf&lt;/span&gt; https://astral.sh/uv/install.sh | sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Configuring AI Tool Connection
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Stdio Mode
&lt;/h3&gt;

&lt;p&gt;Using Cursor as an example: Open Settings → Tools &amp;amp; MCP → New MCP Server, then choose your configuration based on your OS:&lt;/p&gt;

&lt;h4&gt;
  
  
  Linux Users (Embedded Mode)
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"seekdb"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"uvx"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"args"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"seekdb-mcp-server"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's it! &lt;strong&gt;Embedded mode requires zero configuration&lt;/strong&gt;—the server automatically initializes a local seekdb database on startup.&lt;/p&gt;

&lt;h4&gt;
  
  
  macOS / Windows Users (Server Mode)
&lt;/h4&gt;

&lt;p&gt;macOS and Windows don't support embedded mode. Deploy SeekDB first (Docker recommended), then configure connection parameters:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"seekdb"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"uvx"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"args"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"seekdb-mcp-server"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"env"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"SEEKDB_HOST"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"127.0.0.1"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"SEEKDB_PORT"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2881"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"SEEKDB_USER"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;""&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"SEEKDB_PASSWORD"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;""&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"SEEKDB_DATABASE"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"test"&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Parameter Reference:&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Parameter&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Description&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Default&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;SEEKDB_HOST&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;seekdb server address&lt;/td&gt;
&lt;td&gt;&lt;code&gt;127.0.0.1&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;SEEKDB_PORT&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;seekdb service port&lt;/td&gt;
&lt;td&gt;&lt;code&gt;2881&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;SEEKDB_USER&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Database username&lt;/td&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;SEEKDB_PASSWORD&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Database password&lt;/td&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;SEEKDB_DATABASE&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Database name&lt;/td&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  SSE Mode
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Linux Users (Embedded Mode)
&lt;/h4&gt;

&lt;p&gt;Start the SSE server directly:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;uvx seekdb-mcp-server &lt;span class="nt"&gt;--transport&lt;/span&gt; sse &lt;span class="nt"&gt;--port&lt;/span&gt; 6000
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  macOS / Windows Users (Server Mode)
&lt;/h4&gt;

&lt;p&gt;Configure environment variables first, then start the server:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Configure SeekDB connection info&lt;/span&gt;
&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;SEEKDB_HOST&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;127.0.0.1
&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;SEEKDB_PORT&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;2881
&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;SEEKDB_USER&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;
&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;SEEKDB_PASSWORD&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;
&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;SEEKDB_DATABASE&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nb"&gt;test&lt;/span&gt;

&lt;span class="c"&gt;# Start SSE server&lt;/span&gt;
uvx seekdb-mcp-server &lt;span class="nt"&gt;--transport&lt;/span&gt; sse &lt;span class="nt"&gt;--port&lt;/span&gt; 6000
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then configure the client:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"sse-seekdb"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"sse"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"url"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"http://127.0.0.1:6000/sse"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Hands-On: Building a Personal Notes Knowledge Base with AI
&lt;/h2&gt;

&lt;p&gt;Let's build a complete real-world example to experience SeekDB MCP Server's power. We'll create a &lt;strong&gt;personal notes knowledge base&lt;/strong&gt; that can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;✅ Store notes using natural language&lt;/li&gt;
&lt;li&gt;✅ Search content semantically&lt;/li&gt;
&lt;li&gt;✅ Use hybrid search for precise results&lt;/li&gt;
&lt;li&gt;✅ Answer questions intelligently with AI&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Scenario
&lt;/h3&gt;

&lt;p&gt;You're a tech professional who takes notes on learning materials and work insights. You want AI to help manage these notes and quickly find what you need using natural language.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: Create a Notes Collection
&lt;/h3&gt;

&lt;p&gt;In your AI tool (like Cursor), type:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Create a knowledge base collection named "my_notes"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;AI Response Example:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I've successfully created a collection named &lt;strong&gt;"my_notes"&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Dimensions&lt;/strong&gt;: 384 (vector size)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Distance Metric&lt;/strong&gt;: L2 (Euclidean distance)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Just like that, you have a vector collection ready for semantic search!&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2: Add Note Content
&lt;/h3&gt;

&lt;p&gt;Continue with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Add the following notes to my_notes:

1. "seekdb supports hybrid retrieval combining vector search and full-text search, leveraging both keyword matching and semantic understanding"
2. "MCP protocol is an open-source protocol proposed by Anthropic in November 2024, enabling large models to interact with external tools"
3. "Python's asyncio module provides asynchronous programming capabilities, ideal for I/O-intensive tasks"
4. "Docker containerization enables rapid application deployment and environment isolation"
5. "RAG (Retrieval-Augmented Generation) is the most popular AI application architecture today, combining retrieval and generation capabilities"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;AI Response Example:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Done! Successfully added 5 notes to the &lt;strong&gt;"my_notes"&lt;/strong&gt; collection:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;ID&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Content&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;doc1&lt;/td&gt;
&lt;td&gt;seekdb supports hybrid retrieval combining vector search...&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;doc2&lt;/td&gt;
&lt;td&gt;MCP protocol is an open-source protocol proposed by Anthropic...&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;doc3&lt;/td&gt;
&lt;td&gt;Python's asyncio module provides asynchronous programming...&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;doc4&lt;/td&gt;
&lt;td&gt;Docker containerization enables rapid application deployment...&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;doc5&lt;/td&gt;
&lt;td&gt;RAG (Retrieval-Augmented Generation) is the most popular...&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Step 3: Semantic Search
&lt;/h3&gt;

&lt;p&gt;Now, let's search your notes using natural language:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Search my_notes for notes related to "AI application development"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;AI Response Example:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Here are notes related to &lt;strong&gt;"AI application development"&lt;/strong&gt;, sorted by relevance:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Rank&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Content&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Relevance&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;RAG (Retrieval-Augmented Generation) is the most popular AI application architecture...&lt;/td&gt;
&lt;td&gt;Highest&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;MCP protocol is an open-source protocol proposed by Anthropic in November 2024...&lt;/td&gt;
&lt;td&gt;High&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;seekdb supports hybrid retrieval combining vector search and full-text search...&lt;/td&gt;
&lt;td&gt;Medium&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Notice: we searched for "AI application development," but that exact phrase doesn't appear in any note. SeekDB's vector search understands &lt;strong&gt;semantic similarity&lt;/strong&gt; and automatically finds relevant content!&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 4: Hybrid Search
&lt;/h3&gt;

&lt;p&gt;Hybrid search combines &lt;strong&gt;keyword matching&lt;/strong&gt; and &lt;strong&gt;semantic understanding&lt;/strong&gt; for more accurate results:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Perform a hybrid search on my_notes:
- Full-text keyword: "Python"
- Semantic query: "asynchronous programming and concurrency"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;AI Response Example:&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Rank&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Content&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Python's asyncio module provides asynchronous programming capabilities, ideal for I/O-intensive tasks&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Docker containerization enables rapid application deployment and environment isolation&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Hybrid search uses the &lt;strong&gt;RRF (Reciprocal Rank Fusion)&lt;/strong&gt; algorithm, combining keyword matching (BM25) scores with vector similarity scores for more accurate rankings.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 5: Make AI Remember Your Preferences
&lt;/h3&gt;

&lt;p&gt;seekdb MCP Server also provides an &lt;strong&gt;AI Memory System&lt;/strong&gt; that lets AI remember your information across sessions:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Remember that I'm a Python developer who primarily uses SeekDB for vector search applications
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;AI Response Example:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Recorded! I'll remember:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You're a Python developer&lt;/li&gt;
&lt;li&gt;You primarily use SeekDB for vector search applications&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In future conversations, you can ask:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Based on my technical background, recommend some learning resources
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;AI will automatically retrieve your preferences and provide personalized recommendations!&lt;/p&gt;




&lt;h2&gt;
  
  
  Complete Feature Reference
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Vector Collection Management
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Tool&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Function&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;create_collection&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Create a vector collection&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;list_collections&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;List all collections&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;has_collection&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Check if a collection exists&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;peek_collection&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Preview documents in a collection&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;add_data_to_collection&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Add documents (auto-generates vectors)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;update_collection&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Update documents&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;delete_documents&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Delete documents&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;query_collection&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Vector similarity search&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;delete_collection&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Delete a collection&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Advanced Search
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Tool&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Function&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;full_text_search&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Full-text search (keyword-based)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;hybrid_search&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Hybrid search (combines full-text and vector search)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  AI Model Tools
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Tool&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Function&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;create_ai_model&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Register an AI model (embedding, text generation, or reranking)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;create_ai_model_endpoint&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Create an endpoint connecting a model to an API service&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;drop_ai_model&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Remove a registered AI model&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;drop_ai_model_endpoint&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Remove an AI model endpoint&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;ai_complete&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Call an LLM for text generation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;ai_rerank&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Use an AI model to rerank documents by relevance&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;get_registered_ai_models&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;List all registered AI models&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;get_ai_model_endpoints&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;List all AI model endpoints&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  AI Memory System
&lt;/h3&gt;

&lt;p&gt;SeekDB MCP Server provides powerful AI memory capabilities, enabling AI assistants to remember information across sessions:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Tool&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Function&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;seekdb_memory_query&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Semantic search memories&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;seekdb_memory_insert&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Store new memories&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;seekdb_memory_update&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Update memories&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;seekdb_memory_delete&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Delete memories&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Use Cases:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AI remembers your tech stack preferences (e.g., "I prefer Python")&lt;/li&gt;
&lt;li&gt;AI remembers project information (e.g., "This project uses FastAPI")&lt;/li&gt;
&lt;li&gt;AI remembers personal preferences (e.g., "I like clean code style")&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Data Import/Export
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Tool&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Function&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;import_csv_file_to_seekdb&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Import CSV files&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;export_csv_file_from_seekdb&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Export data to CSV&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  SQL Operations
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Tool&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Function&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;execute_sql&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Execute SQL queries&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;get_current_time&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Get database current time&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  Exploring More Tools
&lt;/h2&gt;

&lt;p&gt;Beyond what we've covered, SeekDB MCP Server also supports:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;AI Function Calls&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Use AI models to analyze sentiment: "The weather is great today, I'm in a good mood!"&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;CSV Data Import&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Import &lt;code&gt;/path/to/products.csv&lt;/code&gt; as a vector collection, using column 2 (product descriptions) as documents&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;




&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Q: Do I need to install seekdb separately?
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;A:&lt;/strong&gt; No! seekdb MCP Server uses embedded mode—SeekDB is included, no separate installation needed.&lt;/p&gt;

&lt;h3&gt;
  
  
  Q: Where is data stored?
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;A:&lt;/strong&gt; Data is stored in your local file system, defaulting to your home directory. Your data stays completely local—nothing is uploaded to the cloud.&lt;/p&gt;

&lt;h3&gt;
  
  
  Q: Which operating systems are supported?
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;A:&lt;/strong&gt; Currently supports Linux (glibc &amp;gt;= 2.28), with support for x86_64 and aarch64 architectures.&lt;/p&gt;

&lt;h3&gt;
  
  
  Q: How do I upgrade?
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;A:&lt;/strong&gt; Using &lt;code&gt;uvx&lt;/code&gt; automatically uses the latest version.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Bottom Line
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;SeekDB MCP Server&lt;/strong&gt; makes database operations simpler than ever:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Traditional Way&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;MCP Way&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Learn SQL syntax&lt;/td&gt;
&lt;td&gt;Describe needs in natural language&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Write code to call APIs&lt;/td&gt;
&lt;td&gt;AI automatically executes operations&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Manually manage vector embeddings&lt;/td&gt;
&lt;td&gt;Auto-generate and index&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Handle search logic separately&lt;/td&gt;
&lt;td&gt;One command for hybrid search&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Whether you're building RAG applications or giving your AI assistant long-term memory, seekdb MCP Server is your best bet.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Resources:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;⭐ Repo: &lt;a href="https://github.com/oceanbase/seekdb" rel="noopener noreferrer"&gt;github.com/oceanbase/seekdb&lt;/a&gt; (Apache 2.0)&lt;/li&gt;
&lt;li&gt;📖 Docs: &lt;a href="https://www.oceanbase.ai/docs/" rel="noopener noreferrer"&gt;SeekDB Documentation&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;💬 Discord: &lt;a href="https://discord.com/channels/1331061822945624085/1331061823465590805" rel="noopener noreferrer"&gt;Join our community&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;🐦 Follow us: &lt;a href="https://dev.to/seekdb"&gt;@seekdb&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Start your AI-native database journey today!&lt;/strong&gt; 🚀&lt;/p&gt;

</description>
      <category>ai</category>
      <category>mcp</category>
      <category>datascience</category>
      <category>programming</category>
    </item>
    <item>
      <title>Building RAG &amp; Knowledge Bases with seekdb: Three Paths, One Stack</title>
      <dc:creator>Echo.lee</dc:creator>
      <pubDate>Wed, 11 Mar 2026 07:55:14 +0000</pubDate>
      <link>https://dev.to/seekdb/building-rag-knowledge-bases-with-seekdb-three-paths-one-stack-3ijd</link>
      <guid>https://dev.to/seekdb/building-rag-knowledge-bases-with-seekdb-three-paths-one-stack-3ijd</guid>
      <description>&lt;p&gt;&lt;strong&gt;The real headache in RAG isn’t retrieval or generation—it’s the layer in between.&lt;/strong&gt; Where does the data live? How do you keep it in sync? Who glues it all together? &lt;a href="https://github.com/oceanbase/seekdb" rel="noopener noreferrer"&gt;seekdb&lt;/a&gt; and &lt;a href="https://github.com/langgenius/dify" rel="noopener noreferrer"&gt;Dify&lt;/a&gt; are both &lt;strong&gt;open-source&lt;/strong&gt;. Your RAG stack—from storage to orchestration—can be self-hosted, auditable, and customizable, without locking you into closed services. This post walks through &lt;strong&gt;three paths&lt;/strong&gt;, all built on one stack: &lt;strong&gt;RAG from scratch with seekdb&lt;/strong&gt;, &lt;strong&gt;Dify + seekdb&lt;/strong&gt;, and a &lt;strong&gt;knowledge base desktop app&lt;/strong&gt;. Pick the one that fits and get it running.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr8uhvs5d5i61ph5e24tr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr8uhvs5d5i61ph5e24tr.png" alt="In the mesh of light, a patch that fits" width="800" height="446"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the mesh of light, a patch that fits.&lt;/p&gt;




&lt;h2&gt;
  
  
  Where seekdb Fits in the RAG Pipeline
&lt;/h2&gt;

&lt;p&gt;A typical RAG pipeline looks like: &lt;strong&gt;load documents → chunk → embed → store; at query time: retrieve → (optionally) rerank → feed to LLM → generate.&lt;/strong&gt; If your storage is a patchwork of MySQL + vector DB + full-text engine, you end up managing sync, multi-source queries, and fusion yourself. &lt;strong&gt;seekdb’s role&lt;/strong&gt;: one database that holds relational data, vectors, and full-text in the same place. &lt;strong&gt;Write once, index automatically; one hybrid query returns results.&lt;/strong&gt; You can use in-database AI functions for embedding and reranking when needed, so storage and retrieval live in one layer with less glue code.&lt;/p&gt;

&lt;p&gt;Three paths we’ll cover:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;RAG from scratch with seekdb&lt;/strong&gt; — Best if you want full control over the pipeline or already have a Python/app stack.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dify + seekdb&lt;/strong&gt; — Best if you want Dify for orchestration and UI and seekdb as the &lt;strong&gt;knowledge-base backend&lt;/strong&gt;, collapsing the stack to &lt;strong&gt;Dify config + seekdb storage&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Knowledge base desktop application&lt;/strong&gt; — Best if you want a local, multi-project desktop app with seekdb as the backend and a custom frontend.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  Path 1: RAG from Scratch with seekdb (Summary)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. Deploy and create tables&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Run seekdb in Embedded or Client/Server mode. Create a table (or Python collection) with &lt;strong&gt;vector + full-text columns&lt;/strong&gt;, and create a &lt;code&gt;VECTOR INDEX&lt;/code&gt; and &lt;code&gt;FULLTEXT INDEX&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Load documents&lt;/strong&gt;  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Read docs (PDF, TXT, MD, etc.) → chunk them (by paragraph, by length, with overlap, etc.).&lt;/li&gt;
&lt;li&gt;For each chunk, call your &lt;strong&gt;embedding model&lt;/strong&gt; to get a vector (use seekdb’s in-database AI functions, or compute in your app and insert into seekdb).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;INSERT&lt;/strong&gt; into seekdb: each row has chunk text, vector, and any metadata you need (source, doc id, segment id, etc.).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;3. At query time&lt;/strong&gt;  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Turn the user question into a &lt;strong&gt;query vector&lt;/strong&gt; (same embedding).&lt;/li&gt;
&lt;li&gt;Use &lt;strong&gt;hybrid search&lt;/strong&gt;: &lt;code&gt;vector_query&lt;/code&gt; + &lt;code&gt;full_text_query&lt;/code&gt;(optional) + relational filters (e.g. by knowledge-base id), and take top_k candidates.&lt;/li&gt;
&lt;li&gt;Optional: rerank with seekdb or in your app → pass the final context to your &lt;strong&gt;LLM&lt;/strong&gt; to generate the answer.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;4. Things to watch&lt;/strong&gt;  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Chunking strategy and chunk size directly affect recall; pick one and tune from there.&lt;/li&gt;
&lt;li&gt;If you use in-database AI for embedding/reranking, you save a round-trip to external services.&lt;/li&gt;
&lt;li&gt;For full steps and code, see &lt;a href="https://www.oceanbase.ai/docs/build-a-rag-system-with-seekdb" rel="noopener noreferrer"&gt;Build a RAG application with seekdb&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Path 2: Dify + seekdb — Collapse the RAG Stack (Both Open-Source)
&lt;/h2&gt;

&lt;p&gt;Dify handles workflow orchestration, knowledge-base setup, and the chat UI. The &lt;strong&gt;data source&lt;/strong&gt; can be seekdb: Dify’s pipeline does “upload/parse → chunk → embed → write,” while &lt;strong&gt;storage and retrieval&lt;/strong&gt; happen in seekdb—with strong consistency, hybrid search, and in-database AI. &lt;strong&gt;Dify and seekdb are both open-source&lt;/strong&gt;, so the whole RAG stack can be self-hosted, audited, and extended. Good fit if you care about data and architecture ownership.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Configuration idea&lt;/strong&gt; (check your Dify version for exact UI):  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;In Dify, set the &lt;strong&gt;knowledge base data source&lt;/strong&gt; to seekdb (or wire seekdb via Dify’s supported vector store/API).&lt;/li&gt;
&lt;li&gt;After you upload documents, Dify parses and chunks them, calls the embedding service, and writes into seekdb. At query time, Dify sends the query to seekdb, gets hybrid-search results back, and passes them to the LLM node for the final answer.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Result: &lt;strong&gt;no separate sync scripts or multi-database juggling&lt;/strong&gt;—the stack is just “Dify config + seekdb.” For details, see &lt;a href="https://en.oceanbase.com/blog/24316625920" rel="noopener noreferrer"&gt;Dify + seekdb: Collapsing the RAG Stack&lt;/a&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Path 3: Knowledge Base Desktop App — Local, Multi-Project
&lt;/h2&gt;

&lt;p&gt;If you'd rather skip Dify and want a &lt;strong&gt;local knowledge base desktop application&lt;/strong&gt; (multiple projects, multiple docs, local search): use seekdb as the backend and a desktop client (e.g. Tauri or Electron + your frontend) to connect to seekdb's API. The flow is the same: parse → chunk → embed → write to seekdb; at query time use hybrid search and show results or feed them to a local LLM.&lt;/p&gt;

&lt;p&gt;There’s an official guide: &lt;a href="https://www.oceanbase.ai/docs/build-kb-in-seekdb" rel="noopener noreferrer"&gt;Building a knowledge-base desktop app with seekdb&lt;/a&gt;—it outlines the stack and steps.&lt;/p&gt;




&lt;h2&gt;
  
  
  Which Path to Choose?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl867grwjn8qmtz0z1b3l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl867grwjn8qmtz0z1b3l.png" alt=" " width="800" height="333"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;Once you've got RAG or a knowledge base running with seekdb, you might wonder where it goes next. In the next post we'll take seekdb &lt;strong&gt;beyond text&lt;/strong&gt;: multimodal and agents—think travel assistant, image search, TEN+PowerMem voice assistant—and how the same stack extends to those scenarios.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Repo:&lt;/strong&gt; &lt;a href="https://github.com/oceanbase/seekdb" rel="noopener noreferrer"&gt;github.com/oceanbase/seekdb&lt;/a&gt; (Apache 2.0 — Stars, Issues, PRs welcome)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Docs:&lt;/strong&gt; &lt;a href="https://www.oceanbase.ai/docs/seekdb-overview" rel="noopener noreferrer"&gt;seekdb documentation&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Discord:&lt;/strong&gt; &lt;a href="https://discord.com/channels/1331061822945624085/1331061823465590805" rel="noopener noreferrer"&gt;https://discord.com/channels/1331061822945624085/1331061823465590805&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Medium:&lt;/strong&gt;&lt;strong&gt; &lt;/strong&gt;&lt;a href="https://medium.com/@pub_opensource_global" rel="noopener noreferrer"&gt;https://medium/seekdb&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Press:&lt;/strong&gt; &lt;a href="https://www.marktechpost.com/2025/11/26/oceanbase-releases-seekdb-an-open-source-ai-native-hybrid-search-database-for-multi-model-rag-and-ai-agents/" rel="noopener noreferrer"&gt;OceanBase Releases seekdb (MarkTechPost)&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Building RAG or an AI workflow?&lt;/strong&gt; What’s the one thing you wish your database did better—or didn’t do at all? Drop it in the comments. We read them, and the next features we ship often come from exactly those pain points. Open source only gets better when people say what’s broken.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>vectordatabase</category>
      <category>rag</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Get Started with seekdb_ Install, Deploy, and Run Your First Hybrid Search</title>
      <dc:creator>Echo.lee</dc:creator>
      <pubDate>Mon, 09 Mar 2026 07:05:40 +0000</pubDate>
      <link>https://dev.to/seekdb/get-started-with-seekdb-install-deploy-and-run-your-first-hybrid-search-2b31</link>
      <guid>https://dev.to/seekdb/get-started-with-seekdb-install-deploy-and-run-your-first-hybrid-search-2b31</guid>
      <description>&lt;p&gt;Hi, still remember the question we raised in the last post? Here is the answer: &lt;strong&gt;From installation to your first hybrid-search result in about ten minutes.&lt;/strong&gt; seekdb’s packages, SDKs, and docs are &lt;strong&gt;open source&lt;/strong&gt;—no closed-source bits, just what you see on &lt;a href="https://github.com/oceanbase/seekdb" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;. This post walks through both &lt;strong&gt;Embedded&lt;/strong&gt; and &lt;strong&gt;Client/Server&lt;/strong&gt; in a “run it first, then code” order, with copy-paste hybrid-search examples for each.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxw5ll16zibefpse9ezil.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxw5ll16zibefpse9ezil.png" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;AI future corridor&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  1. Two Ways to Run It—Pick One
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Method&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Scenario&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;In one sentence&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Embedded (Python SDK)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Local dev, prototypes, small apps, resource-constrained&lt;/td&gt;
&lt;td&gt;One &lt;code&gt;pip install&lt;/code&gt;; seekdb runs in your process, no separate server.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Client/Server + SQL&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Multi-language, multi-process, or MySQL client&lt;/td&gt;
&lt;td&gt;Run the seekdb service; connect via SQL or any language client.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Most people &lt;strong&gt;start with Embedded + Python&lt;/strong&gt;: zero config, one &lt;code&gt;import&lt;/code&gt;, data in a local directory. We’ll do that first. If you’re on a Mac and prefer SQL or a MySQL client, see Section 3 (we use macOS as an example there).&lt;/p&gt;




&lt;h2&gt;
  
  
  2. Embedded: Up and Running in One Command
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Requirements:&lt;/strong&gt; Python 3.11+, Linux or macOS (Embedded is not supported on Windows; use Server mode there).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-U&lt;/span&gt; pyseekdb
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Once installed, seekdb runs as an &lt;strong&gt;embedded library&lt;/strong&gt; with your process. Data is stored locally; no separate service to deploy.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1: Connect and get a collection&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;pyseekdb&lt;/span&gt;

&lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;pyseekdb&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Client&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="n"&gt;collection&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get_or_create_collection&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;docs&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 2: Add documents and run hybrid search&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Add a few documents, and then query with &lt;code&gt;hybrid_search&lt;/code&gt;. The SDK’s &lt;code&gt;hybrid_search()&lt;/code&gt; takes a &lt;strong&gt;query&lt;/strong&gt; (full-text conditions), &lt;strong&gt;knn&lt;/strong&gt; (vector/semantic search), and &lt;strong&gt;rank&lt;/strong&gt; (e.g. RRF fusion), and returns fused results. Section 3 shows how to do the same with SQL.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Add documents (ids + text; embedding is handled by the collection when configured)
&lt;/span&gt;&lt;span class="n"&gt;ids&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;doc_1&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;doc_2&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;doc_3&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="n"&gt;documents&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;seekdb is an AI-native hybrid search database&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Hybrid search combines vector and full-text in one query&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;You can run it embedded or as a server with SQL&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="n"&gt;collection&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;add&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ids&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;ids&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;documents&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;documents&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# Hybrid search: full-text (keyword) + vector (semantic), fused with RRF
&lt;/span&gt;&lt;span class="n"&gt;results&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;collection&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;hybrid_search&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;query&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;where_document&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;$contains&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;hybrid&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;n_results&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="n"&gt;knn&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;query_texts&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;AI native search database&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;n_results&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="n"&gt;rank&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;rrf&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{}},&lt;/span&gt;
    &lt;span class="n"&gt;n_results&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That’s it for Embedded: &lt;code&gt;Client()&lt;/code&gt; → &lt;code&gt;get_or_create_collection()&lt;/code&gt; → &lt;code&gt;add()&lt;/code&gt; → &lt;code&gt;hybrid_search()&lt;/code&gt;. (Embedding config, more filters, and full API: &lt;a href="https://www.oceanbase.ai/docs/pyseekdb-sdk-get-started" rel="noopener noreferrer"&gt;Python SDK get started&lt;/a&gt;.)&lt;/p&gt;




&lt;h2&gt;
  
  
  3. Client/Server: Hybrid Search over SQL
&lt;/h2&gt;

&lt;p&gt;Use this when you want &lt;strong&gt;standard SQL or a MySQL client&lt;/strong&gt;. Deploy the seekdb service on your machine or a server; the option depends on your platform:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Platform&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Deploy option&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;macOS&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Homebrew (&lt;code&gt;brew install seekdb&lt;/code&gt;) — see Section 3.1 below.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;strong&gt;Linux&lt;/strong&gt; (RHEL/CentOS, Debian/Ubuntu)&lt;/td&gt;
&lt;td&gt;Package manager (yum/apt) + systemd, or Docker.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Windows&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;OceanBase Desktop or Docker.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;For a whole picture of deployment options, see &lt;a href="https://www.oceanbase.ai/docs/deploy-overview" rel="noopener noreferrer"&gt;Deployment overview&lt;/a&gt;.&lt;/p&gt;




&lt;h3&gt;
  
  
  3.1 Deploy on macOS (Homebrew)
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; The steps in this section use &lt;strong&gt;macOS (Homebrew)&lt;/strong&gt; as an example. For Linux or Windows, follow the options in the table above.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Mac users can run seekdb in Server mode with Homebrew. This is the usual path if you’re on a Mac and want to use SQL or a MySQL client.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Prerequisites:&lt;/strong&gt; macOS 15 or later, 1 CPU core and 2 GB memory, and a MySQL client (e.g. &lt;code&gt;mysql&lt;/code&gt; from Homebrew).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1: Install seekdb&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew tap oceanbase/seekdb
brew &lt;span class="nb"&gt;install &lt;/span&gt;seekdb
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 2: Start seekdb&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Background: &lt;code&gt;seekdb-start&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Foreground: &lt;code&gt;seekdb --nodaemon&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Custom data dir: &lt;code&gt;seekdb --base-dir=/custom/path&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step 3: Connect with MySQL client&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;mysql &lt;span class="nt"&gt;-h127&lt;/span&gt;.0.0.1 &lt;span class="nt"&gt;-uroot&lt;/span&gt; &lt;span class="nt"&gt;-P2881&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; &lt;span class="nt"&gt;-A&lt;/span&gt; &lt;span class="nt"&gt;-Dtest&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Default port is 2881; default password is empty. Once connected, you can run the SQL in Section 3.2 (create table, then hybrid search).&lt;/p&gt;




&lt;h3&gt;
  
  
  3.2 Create a table and run hybrid search
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Create a table with vector and full-text indexes&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Use a small vector dimension for a minimal runnable example. Replace with your own embedding dimension (e.g. 1536) and add &lt;code&gt;VECTOR INDEX ... WITH (distance=l2, type=hnsw, lib=vsag)&lt;/code&gt; if needed.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="k"&gt;TABLE&lt;/span&gt; &lt;span class="n"&gt;doc_table&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="n"&gt;c1&lt;/span&gt; &lt;span class="nb"&gt;INT&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="n"&gt;vector&lt;/span&gt; &lt;span class="n"&gt;VECTOR&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
  &lt;span class="n"&gt;query&lt;/span&gt; &lt;span class="nb"&gt;VARCHAR&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;255&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
  &lt;span class="n"&gt;content&lt;/span&gt; &lt;span class="nb"&gt;VARCHAR&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;255&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
  &lt;span class="n"&gt;VECTOR&lt;/span&gt; &lt;span class="k"&gt;INDEX&lt;/span&gt; &lt;span class="n"&gt;idx_vec&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;vector&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;WITH&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;distance&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;l2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;hnsw&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;lib&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;vsag&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
  &lt;span class="n"&gt;FULLTEXT&lt;/span&gt; &lt;span class="k"&gt;INDEX&lt;/span&gt; &lt;span class="n"&gt;idx_ft_query&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;query&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
  &lt;span class="n"&gt;FULLTEXT&lt;/span&gt; &lt;span class="k"&gt;INDEX&lt;/span&gt; &lt;span class="n"&gt;idx_ft_content&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;content&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;ORGANIZATION&lt;/span&gt; &lt;span class="n"&gt;HEAP&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;INSERT&lt;/span&gt; &lt;span class="k"&gt;INTO&lt;/span&gt; &lt;span class="n"&gt;doc_table&lt;/span&gt; &lt;span class="k"&gt;VALUES&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'[1,2,3]'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'hello world'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'seekdb Elasticsearch database'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'[1,2,1]'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'hello world, what is your name'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'seekdb database'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'[1,1,1]'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'hello world, how are you'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'seekdb mysql database'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Run hybrid search via the built-in package&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The hybrid search API is &lt;strong&gt;DBMS_HYBRID_SEARCH.SEARCH(table_name, json_param)&lt;/strong&gt; used in a &lt;strong&gt;SELECT&lt;/strong&gt;. Set a JSON parameter with &lt;code&gt;query&lt;/code&gt; (full-text) and &lt;code&gt;knn&lt;/code&gt; (vector), and then run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="c1"&gt;-- Set search params: full-text (query_string) + vector (knn), then execute&lt;/span&gt;
&lt;span class="k"&gt;SET&lt;/span&gt; &lt;span class="o"&gt;@&lt;/span&gt;&lt;span class="n"&gt;parm&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'{
  "query": {
    "query_string": {
      "fields": ["query", "content"],
      "query": "hello seekdb"
    }
  },
  "knn": {
    "field": "vector",
    "k": 5,
    "query_vector": [1, 2, 3]
  }
}'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;json_pretty&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;DBMS_HYBRID_SEARCH&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;SEARCH&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'doc_table'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;@&lt;/span&gt;&lt;span class="n"&gt;parm&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Results come back ranked by relevance. For more parameters (e.g. boost, RRF), see &lt;a href="https://www.oceanbase.ai/docs/hybrid-search" rel="noopener noreferrer"&gt;Hybrid search&lt;/a&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  4. Your First Hybrid Search: You Did Two Things
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Create a table (or an SDK collection) with a vector column and a full-text index.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Send one query with a vector and keywords&lt;/strong&gt;, and let seekdb fuse and rank inside the database (e.g. RRF).&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;No “query the vector store, then the full-text store, and then merge in the app”—that’s the &lt;strong&gt;no-stitching&lt;/strong&gt; difference. Once this works, it’s straightforward to upload real documents, add an embedding model, and connect a RAG pipeline.&lt;/p&gt;




&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Repo:&lt;/strong&gt; &lt;a href="https://github.com/oceanbase/seekdb" rel="noopener noreferrer"&gt;github.com/oceanbase/seekdb&lt;/a&gt; (Apache 2.0 — Stars, Issues, PRs welcome)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Docs:&lt;/strong&gt; &lt;a href="https://www.oceanbase.ai/docs/seekdb-overview" rel="noopener noreferrer"&gt;seekdb documentation&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Discord:&lt;/strong&gt; &lt;a href="https://discord.com/channels/1331061822945624085/1331061823465590805" rel="noopener noreferrer"&gt;https://discord.com/channels/1331061822945624085/1331061823465590805&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Press:&lt;/strong&gt; &lt;a href="https://www.marktechpost.com/2025/11/26/oceanbase-releases-seekdb-an-open-source-ai-native-hybrid-search-database-for-multi-model-rag-and-ai-agents/" rel="noopener noreferrer"&gt;OceanBase Releases seekdb (MarkTechPost)&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We would also love to hear &lt;strong&gt;your stories, insights, and perspectives&lt;/strong&gt; on the future of AI and databases. Open source is more than a development model — it’s a mindset. That’s why we choose to build openly, together with the community.&lt;/p&gt;

&lt;p&gt;Because we truly believe: &lt;strong&gt;Great things start when people talk, share, and create freely.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;And that’s where the magic begins.&lt;/p&gt;

&lt;p&gt;The next post will focus on &lt;strong&gt;hybrid search and AI functions&lt;/strong&gt;: tuning parameters, running embedding and reranking inside the database, and using these to build RAG quickly. Stay tuned.&lt;/p&gt;




</description>
      <category>ai</category>
      <category>vectordatabase</category>
      <category>opensource</category>
      <category>rag</category>
    </item>
    <item>
      <title>Find Your Fit: When to Use seekdb</title>
      <dc:creator>Echo.lee</dc:creator>
      <pubDate>Thu, 05 Mar 2026 08:54:46 +0000</pubDate>
      <link>https://dev.to/seekdb/find-your-fit-when-to-use-seekdb-5gdl</link>
      <guid>https://dev.to/seekdb/find-your-fit-when-to-use-seekdb-5gdl</guid>
      <description>&lt;p&gt;&lt;strong&gt;Abstract: This post helps you find your scenario: who seekdb is for, how to try it, and how to get started without a full migration.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is the second post in our seekdb series. In the first post (&lt;a href="https://medium.com/@pub_opensource_global/stop-stitching-your-rag-stack-why-we-built-seekdb-a3b9725fd844" rel="noopener noreferrer"&gt;Stop Stitching Your RAG Stack: Why We Built seekdb&lt;/a&gt;), we covered the cost of stitched RAG architectures, what seekdb is, and what you stop paying for. &lt;strong&gt;This post doesn’t repeat that.&lt;/strong&gt; It does one thing: &lt;strong&gt;helps you find your scenario, choose the right way to use seekdb, and get started.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fylq9ingu8lp7jehruq4f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fylq9ingu8lp7jehruq4f.png" alt="Somewhere in the grid, a spot that fits" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  1. Where Are You Today?
&lt;/h2&gt;

&lt;p&gt;Teams are at different stages, so their needs from seekdb differ. See which of these four fits you best.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq8z2ifc0wnmwss06017c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq8z2ifc0wnmwss06017c.png" width="800" height="515"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;If you’re in the &lt;strong&gt;first two&lt;/strong&gt;: seekdb’s “one engine, one SQL, one transaction” is built for exactly that. Worth a serious try.&lt;/li&gt;
&lt;li&gt;If you’re in the &lt;strong&gt;third&lt;/strong&gt;: No need to switch for the sake of it. Treat seekdb as an option for &lt;strong&gt;new projects or new use cases&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;If you’re in the &lt;strong&gt;fourth&lt;/strong&gt;: Strong consistency and hybrid search are seekdb’s sweet spot. Focus on in-database transactions and single-query hybrid search.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  2. Who Is seekdb For?
&lt;/h2&gt;

&lt;p&gt;Two lists make the boundary clear so you can find your fit.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Seekdb is a strong fit when:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You’re building RAG or semantic search from scratch and don’t want to stitch multiple databases.&lt;/li&gt;
&lt;li&gt;You need business data and vectors/full-text updated in the same transaction.&lt;/li&gt;
&lt;li&gt;Resources are limited (single machine or small cluster) and you want to iterate quickly.&lt;/li&gt;
&lt;li&gt;You want one SQL for hybrid search and less fusion/rerank glue code.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;If you’re already in one of these situations, your current setup may be enough&lt;/strong&gt; (you can still keep seekdb in mind for new projects or new use cases):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You already have PB-scale vectors and need cross-DC distribution.&lt;/li&gt;
&lt;li&gt;You only need pure vector ANN and don’t need SQL or full-text.&lt;/li&gt;
&lt;li&gt;You’re deeply committed to a cloud vendor’s managed vector service.&lt;/li&gt;
&lt;li&gt;You need deep, tight integration with existing Elasticsearch or Milvus clusters.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In short: &lt;strong&gt;seekdb is for teams that don’t want to start by stitching databases&lt;/strong&gt;—one engine, one SQL, one transaction, get RAG and hybrid search running first. If you already have a stable distributed vector/full-text cluster and don’t have a strong need for consistency + hybrid search, your current setup is fine; consider seekdb when you start something new.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. You Don’t Need a Full Migration: Three Ways to Try
&lt;/h2&gt;

&lt;p&gt;You don’t have to “replace everything” to get value. Three common patterns:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Use it for new projects&lt;/strong&gt;: From day one, use seekdb as storage and retrieval for a new RAG or semantic-search project. No multi-DB sync, no glue.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Try it alongside the old system&lt;/strong&gt;: Leave the current pipeline as is; point a small slice of new data or a new feature at seekdb. Get hybrid search and in-database AI working, then decide whether to expand.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Run it locally first&lt;/strong&gt;: &lt;code&gt;pip install&lt;/code&gt;, run “one SQL, get results” on your machine, then consider Client-Server or plugging into your existing MySQL tooling.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The next post will walk through &lt;strong&gt;installation, deployment (Embedded / Client-Server), and your first hybrid-search query&lt;/strong&gt;—from setup to that first SQL. If you’re ready to try seekdb now, you can jump straight to our &lt;a href="https://www.oceanbase.ai/docs/deploy-overview" rel="noopener noreferrer"&gt;docs&lt;/a&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Repo:&lt;/strong&gt; &lt;a href="https://github.com/oceanbase/seekdb" rel="noopener noreferrer"&gt;github.com/oceanbase/seekdb&lt;/a&gt; (Apache 2.0 — Stars, Issues, PRs welcome)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Docs:&lt;/strong&gt; &lt;a href="https://www.oceanbase.ai/docs/seekdb-overview" rel="noopener noreferrer"&gt;seekdb documentation&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Discord:&lt;/strong&gt; &lt;a href="https://discord.com/channels/1331061822945624085/1331061823465590805" rel="noopener noreferrer"&gt;https://discord.com/channels/1331061822945624085/1331061823465590805&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Press:&lt;/strong&gt; &lt;a href="https://www.marktechpost.com/2025/11/26/oceanbase-releases-seekdb-an-open-source-ai-native-hybrid-search-database-for-multi-model-rag-and-ai-agents/" rel="noopener noreferrer"&gt;OceanBase Releases seekdb (MarkTechPost)&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The open‑source journey continues. So does our exploration of databases and infrastructure built for the AI era.&lt;/p&gt;

&lt;p&gt;As always, we’d love to hear your open‑source stories and thoughts. Maybe we can build something meaningful together. That would be a journey worth taking.❤️&lt;/p&gt;

&lt;p&gt;And here’s a small question to leave you with: How long does it actually take to install seekdb and use it in your RAG or other AI applications?&lt;/p&gt;

&lt;p&gt;The answer is coming tomorrow.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>opensource</category>
      <category>vectordatabase</category>
      <category>rag</category>
    </item>
    <item>
      <title>Stop Stitching Your RAG Stack: Why We Built seekdb</title>
      <dc:creator>Echo.lee</dc:creator>
      <pubDate>Wed, 04 Mar 2026 06:49:39 +0000</pubDate>
      <link>https://dev.to/seekdb/stop-stitching-your-rag-stack-why-we-built-seekdb-41cg</link>
      <guid>https://dev.to/seekdb/stop-stitching-your-rag-stack-why-we-built-seekdb-41cg</guid>
      <description>&lt;p&gt;Hi — we're the &lt;strong&gt;seekdb team&lt;/strong&gt;. We're building &lt;strong&gt;seekdb&lt;/strong&gt;, an open-source AI-native hybrid search database. This is our first post here; in the ones that follow, we'll share our story with seekdb.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffztoyvt5xch1jd4xkbvy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffztoyvt5xch1jd4xkbvy.png" alt="Comet-like arrivals reshaping the AI age" width="800" height="398"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;If your RAG setup looks like this—MySQL for metadata, a vector DB for embeddings, Elasticsearch for full-text, and hundreds of lines of glue code to fuse multi-source retrieval—&lt;/strong&gt;&lt;strong&gt;you're paying the "stitching tax."&lt;/strong&gt; Industry surveys suggest that a large share of production AI applications still run on multiple databases—relational, vector, and full-text in separate systems—because of data diversity and legacy architecture. That pattern remains common even in large enterprises. This article is about why we built seekdb, and what you actually get when you stop stitching.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. The Stitching Tax Is Real
&lt;/h2&gt;

&lt;p&gt;RAG, semantic search, and agents all need the same kinds of data: &lt;strong&gt;who, what, where&lt;/strong&gt; (relational), &lt;strong&gt;what was said or written&lt;/strong&gt; (full-text), and &lt;strong&gt;what it means semantically&lt;/strong&gt; (vectors). In practice, that means MySQL/PostgreSQL for business data, Milvus/Pinecone/Qdrant for vectors, Elasticsearch for full-text, and a thick layer of application code: multi-path queries, normalization, score fusion, reranking.&lt;/p&gt;

&lt;p&gt;The result is obvious: &lt;strong&gt;three systems, two sync pipelines, and a pile of glue code.&lt;/strong&gt; The business DB updates today; the vector store might still be yesterday's. You run three backup strategies, three monitoring stacks, three upgrade cycles. Every feature change can touch "DB A + DB B + app logic." This isn't a technology choice problem—it's &lt;strong&gt;architecture tax&lt;/strong&gt;. Every new AI capability adds another layer.&lt;/p&gt;

&lt;p&gt;So we have a simple stance: &lt;strong&gt;AI apps shouldn't start by stitching databases.&lt;/strong&gt; If one engine can handle relational, vector, full-text, and JSON, use one. If one query can express "vector similarity + keywords + filters," don't assemble it in the app. We're not saying distributed or multi-cluster is useless—we're saying that for most teams, &lt;strong&gt;getting "no stitching" right matters more than stacking more systems.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  2. One Engine Instead of Three
&lt;/h2&gt;

&lt;p&gt;seekdb is an &lt;strong&gt;open-source&lt;/strong&gt;, &lt;strong&gt;AI-native hybrid search database&lt;/strong&gt;, under &lt;strong&gt;Apache 2.0&lt;/strong&gt;—commercial use, modification, distribution, and forking are all allowed. No vendor lock-in. Code and design live on &lt;a href="https://github.com/oceanbase/seekdb" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;; you can audit it, change it, and deploy it yourself. In one sentence: &lt;strong&gt;relational, vector, full-text, JSON, and GIS live in one store, one transaction model, one write path—scalar and vector indexes update together. No bugs where the business DB is updated but the vector DB hasn't caught up.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Run &lt;strong&gt;one SQL statement&lt;/strong&gt; for vector similarity, full-text match, and relational filters—no querying three systems and merging in memory;&lt;/li&gt;
&lt;li&gt;Run &lt;strong&gt;embedding, reranking, and LLM inference&lt;/strong&gt; inside the database, so RAG's "retrieve → rerank → generate" has fewer hops and simpler ops;&lt;/li&gt;
&lt;li&gt;Deploy as &lt;strong&gt;embedded&lt;/strong&gt; (a single &lt;code&gt;import&lt;/code&gt; in Python), single-node server, or client/server; &lt;strong&gt;1C2G is enough&lt;/strong&gt;, and it plays well with existing MySQL tooling.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The audience is clear: &lt;strong&gt;teams tired of "multi-DB + glue,"&lt;/strong&gt; and &lt;strong&gt;people building RAG from scratch who don't want to stitch three systems on day one.&lt;/strong&gt; You want one database, one query interface, one ops stack. seekdb is built for that.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. The Bottleneck Isn't Scale—It's Fragmentation
&lt;/h2&gt;

&lt;p&gt;For a huge slice of AI use cases, the bottleneck isn't "data won't fit on one machine"—it's &lt;strong&gt;too many systems, too many interfaces, too slow to iterate.&lt;/strong&gt; We tackled that first: one process, one API, one SQL for hybrid search and in-database AI. When you truly need cross-DC or petabyte scale, you can add distribution then. Many teams never get there; they're already slowed down by stitching.&lt;/p&gt;

&lt;p&gt;So seekdb's "from complex to simple" isn't about removing features—it's &lt;strong&gt;moving "multi-system + glue" into a single engine.&lt;/strong&gt; The complexity is still there; it's just inside the database instead of in your code and runbooks.&lt;/p&gt;




&lt;h2&gt;
  
  
  4. What You Stop Paying
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;What you stop paying for&lt;/th&gt;
&lt;th&gt;Stitched setup&lt;/th&gt;
&lt;th&gt;seekdb&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Freshness&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Business DB updates → async sync to vector/full-text → delay and consistency windows&lt;/td&gt;
&lt;td&gt;Single transaction; write once, index once. No sync lag.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Glue code&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Multi-path queries, normalization, fusion, rerank—all in the app&lt;/td&gt;
&lt;td&gt;One SQL for the full hybrid intent; rerank/LLM can live in-database&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Ops&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Multiple backup, monitoring, upgrade, and capacity plans&lt;/td&gt;
&lt;td&gt;One database, one ops stack&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Learning curve&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Three APIs, three query languages&lt;/td&gt;
&lt;td&gt;MySQL protocol + SQL; one &lt;code&gt;import&lt;/code&gt; for embedded&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;We're not saying stitching is always wrong—at large scale with strong teams, a multi-system setup can work. But for teams that &lt;strong&gt;want to ship fast, want consistency, and want fewer footguns&lt;/strong&gt;, "no stitching" is often the better first step.&lt;/p&gt;




&lt;h2&gt;
  
  
  5. Stop Stitching, Start Building
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Stop stitching, start building.&lt;/strong&gt; We built seekdb and made it &lt;strong&gt;fully open source&lt;/strong&gt; to give teams that don't want to start from "stitching the databases" an &lt;strong&gt;auditable, modifiable, self-hostable&lt;/strong&gt; option: one engine, one SQL, one ops stack. Get RAG and semantic search running first; scale later. &lt;strong&gt;Open source means:&lt;/strong&gt; the docs and code are the full picture—no black box. Hit an issue? Open an issue, join the discussion, or send a PR. We iterate with the community.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Repo:&lt;/strong&gt; &lt;a href="https://github.com/oceanbase/seekdb" rel="noopener noreferrer"&gt;github.com/oceanbase/seekdb&lt;/a&gt; (Apache 2.0 — Stars, Issues, PRs welcome)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Docs:&lt;/strong&gt; &lt;a href="https://www.oceanbase.ai/docs/seekdb-overview" rel="noopener noreferrer"&gt;seekdb documentation&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Discord:&lt;/strong&gt; &lt;a href="https://discord.com/channels/1331061822945624085/1331061823465590805" rel="noopener noreferrer"&gt;https://discord.com/channels/1331061822945624085/1331061823465590805&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Press:&lt;/strong&gt; &lt;a href="https://www.marktechpost.com/2025/11/26/oceanbase-releases-seekdb-an-open-source-ai-native-hybrid-search-database-for-multi-model-rag-and-ai-agents/" rel="noopener noreferrer"&gt;OceanBase Releases seekdb (MarkTechPost)&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We would also love to hear your stories, insights, and perspectives on the future of AI and databases. Open source is more than a development model — it’s a mindset. That’s why we choose to build openly, together with the community.&lt;/p&gt;

&lt;p&gt;Because we truly believe: Great things start when people talk, share, and create freely.&lt;/p&gt;

&lt;p&gt;And that’s where the magic begins.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;From Zero To seekdb · Article 1&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>vectordatabase</category>
      <category>rag</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
