DanLevy.net

2025की डेटाबेस नवाचार लहर

आप AI का धन्यवाद कर सकते हैं।

Not another Vector DB article

Here is the decision rule I wish I had used earlier:

यदि आपका डेटा फ़ाइलों से पुनः निर्मित किया जा सकता है और उपयोगकर्ता मुख्यतः इसे पढ़ते हैं, तो पहले ऑब्जेक्ट‑स्टोरेज डेटाबेस आज़माएँ। यदि उपयोगकर्ता पूरे दिन लिख रहे हैं, तो वास्तविक डेटाबेस से शुरू करें और S3 को डेटाबेस जैसा बनाने की कोशिश बंद करें।

That is the useful line. Not “serverless is the future.” Not “vector databases changed everything.” Those sentences have already been printed on enough conference lanyards.

AI did change the shape of a lot of search problems. Suddenly small teams wanted semantic search, hybrid ranking, document chat, multimodal lookup, and analytics over files sitting in object storage. The old answer was “run Postgres with pgvector” or “operate OpenSearch/Elasticsearch” or “buy a managed search service.” Those are still good answers when the workload deserves them.

But many workloads do not. They are read-heavy, rebuildable, and tolerant of a short delay between content changing and search catching up. Documentation. Catalog snapshots. Static exports. Internal knowledge bases. Local analytics. Prototype RAG systems. For those, a new class of tools has made the boring architecture unusually powerful: build an index, store it as files, serve it over HTTP.

Snapshot note: इकोसिस्टम तेज़ी से बदल रहा है। नीचे दिए गए स्टार काउंट, फीचर लेबल, और प्रदर्शन आँकड़े सितंबर 2025 के स्नैपशॉट पर आधारित हैं, कोई शाश्वत स्कोरबोर्ड नहीं। इन्हें दिशा‑निर्देश के रूप में लें, फिर किसी भी सेल पर प्रोडक्शन माइग्रेशन करने से पहले वर्तमान दस्तावेज़ीकरण जाँचें।

A database by any other name

ये सर्वरलेस और CDN‑सक्षम डेटास्टोर्स मध्यम‑स्तर के मामलों के लिए उपयोगी हैं, लगभग 1,000 से 1,000,000 रिकॉर्ड या कुछ GB, जहाँ पारंपरिक डेटाबेस इन्फ्रास्ट्रक्चर मूल्य से अधिक औपचारिकता बन जाता है:

सामान्य कदम सरल है: टिकाऊ डेटा को फ़ाइलों या ऑब्जेक्ट स्टोरेज में रखें, फिर उसे ब्राउज़र, एज फ़ंक्शन, वर्कर, या हल्की सेवा से क्वेरी करें। यह जटिलता को समाप्त नहीं करता; यह जटिलता को बिल्ड पाइपलाइन, इंडेक्स ताज़ा‑रखाव, कैश अमान्यकरण, और क्लाइंट क्षमताओं की ओर स्थानांतरित करता है। जब पढ़ना प्रमुख हो, तो यह एक पूरी‑तरह से वैध ट्रेड‑ऑफ़ है।

Battle of the Checkboxes

FeaturePagefindOramaChromaLanceDBDuckDB-WASM
Full-Text Search✅ Advanced stemming✅ BM25, 30 languages✅ SQLite FTS✅ Tantivy✅ Full SQL
Vector Search✅ Cosine similarity✅ HNSW✅ IVF_PQ, HNSW, GPU⚠️ Extensions
AI/RAG IntegrationsNone✅ Built-in pipeline✅ LangChain, LlamaIndex✅ Advanced reranking⚠️ Manual setup
StorageStatic JSON/WASMMemory + S3 pluginsServer-based*S3-compatible LanceWASM + S3/HTTP
Write SupportBuild-time onlyFull CRUDFull CRUDFull CRUDFull SQL CRUD
PerformanceSub-100ms0.0001ms - 100msSub-100ms3-5ms vector, 50ms FTS10ms-1s (complex SQL)

*September 2025 snapshot: Chroma requires a server runtime and does not support direct S3 object storage in the way the object-file tools do (issue #1736).

कार्यान्वयन उदाहरण

वाक्य‑रचना में अंतर यह दर्शाते हैं कि वास्तविक विभाजन कहाँ है: बिल्ड‑टाइम सर्च, इन‑मेमोरी सर्च, वेक्टर‑नेटिव स्टोरेज, मल्टीमॉडल टेबल, और ब्राउज़र SQL सभी एक ही उत्पाद श्रेणी नहीं हैं सिर्फ इसलिए कि वे AI डेमो में एक साथ दिखते हैं।

Static site search with Pagefind

<link href="../pagefind/pagefind-ui.css" rel="stylesheet">
<script src="../pagefind/pagefind-ui.js"></script>
<div id="search"></div>
<script>new PagefindUI({ element: "#search" });</script>

एंटरप्राइज़‑ग्रेड मल्टीमॉडल LanceDB के साथ

ऑटोमैटिक OpenAI एम्बेडिंग्स के साथ LanceDB टेबल बनाने का कोड:

import * as lancedb from "@lancedb/lancedb";
import "@lancedb/lancedb/embedding/openai";
import { LanceSchema, getRegistry } from "@lancedb/lancedb/embedding";
import { Utf8 } from "apache-arrow";
const db = await lancedb.connect("data/multimodal-db");
const func = getRegistry()
.get("openai")
?.create({ model: "text-embedding-ada-002" });
// स्वचालित एम्बेडिंग जनरेशन के साथ स्कीमा
const documentsSchema = LanceSchema({
text: func.sourceField(new Utf8()),
vector: func.vectorField(),
category: new Utf8()
});
const table = await db.createEmptyTable("documents", documentsSchema);
await table.add([
{ text: "machine learning concepts", category: "research" },
{ text: "deep learning fundamentals", category: "research" }
]);

LanceDB टेबल को क्वेरी करने का उदाहरण:

import * as lancedb from "@lancedb/lancedb";
import "@lancedb/lancedb/embedding/openai";
// "Connect" to a URL path
const db = await lancedb.connect("data/multimodal-db");
const table = db.getTable("documents");
// SQL + वेक्टर सर्च संयोजन
const results = await table.search("machine learning concepts")
.where("category = 'research'")
.limit(10)
.toArray();
console.log(results);

Orama के साथ यूनिवर्सल सर्च

import { create, insert, search } from '@orama/orama'
const db = create({
schema: {
title: 'string',
content: 'string',
embedding: 'vector[1536]'
}
})
await insert(db, {
title: 'Getting Started',
content: 'Learn the basics',
embedding: await generateEmbedding('Learn the basics')
})
const results = await search(db, {
term: 'basics',
mode: 'hybrid' // टेक्स्ट + वेक्टर सर्च को मिलाता है
})

DuckDB‑WASM:

import * as duckdb from "https://cdn.jsdelivr.net/npm/@duckdb/duckdb-wasm@latest/dist/duckdb-browser.mjs";
const bundle = await duckdb.selectBundle(duckdb.getJsDelivrBundles());
const worker = new Worker(bundle.mainWorker);
const db = new duckdb.AsyncDuckDB(new duckdb.ConsoleLogger(), worker);
await db.instantiate(bundle.mainModule, bundle.pthreadWorker);
const conn = await db.connect();
await conn.query(`create table t as select * from (values (1,'hybrid search'),(2,'edge sql')) as v(id,txt);`);
// वैकल्पिक फुल‑टेक्स्ट:
await conn.query(`install fts; load fts; select * from t where match_bm25(txt, 'hybrid');`);

Chroma के साथ AI‑नेटिव सर्च

import { ChromaClient } from "chromadb";
const client = new ChromaClient();
const collection = await client.createCollection({ name: "knowledge-base" });
await collection.add({
documents: ["AI will transform software development"],
metadatas: [{ source: "tech-blog", category: "AI" }],
ids: ["doc1"]
});
const results = await collection.query({
queryTexts: ["future of programming"],
where: { category: "AI" },
nResults: 5
});

उपयोग‑केस गाइड

Pagefind चुनें जब:

Orama चुनें जब:

Chroma चुनें जब:

LanceDB चुनें जब:

DuckDB‑WASM चुनें जब:

निर्णय नियम

व्यावहारिक सवाल यह नहीं है “कौन‑सा डेटाबेस सबसे अच्छा है?”

व्यावहारिक सवाल है: सिस्टम को किस प्रकार का परिवर्तन सहन करना पड़ेगा?

सस्ता रास्ता ही खुशहाल है। एज केस ही आर्किटेक्चर तय करते हैं।

बड़ा चित्र

ये टूल्स उपयोगी सर्च के लिए न्यूनतम आवश्यक इन्फ्रास्ट्रक्चर को घटाते हैं। 2020 में “सिमैंटिक सर्च” अक्सर कई सर्विसेज, ढेर सारे ग्लू कोड, और मीटिंग में वेक्टर इंडेक्स की व्याख्या का मतलब था, जहाँ आधे लोग लंच चाहते थे। 2025 में एक छोटी टीम वही प्रोडक्ट आइडिया फ़ाइलों, एम्बेडिंग्स और एक वीकेंड में प्रोटोटाइप कर सकती है।

इसका मतलब यह नहीं कि हर सर्च बॉक्स को RAG सिस्टम बनना चाहिए। इसका मतलब है कि पहला संस्करण अब प्रोडक्शन इन्फ्रास्ट्रक्चर को तब तक नहीं अपनाता जब तक उसके पास प्रोडक्शन साक्ष्य न हो।

AWS भी इस दिशा में आगे बढ़ रहा है, S3‑साइडर वेक्टर सर्च कार्य के साथ, जो एक उपयोगी संकेत है: ऑब्जेक्ट स्टोरेज अब सिर्फ पुरानी फ़ाइलों का अटारी नहीं रहा। यह क्वेरी सतह बन रहा है।

प्रयोग शुरू करें

  1. पहले अपडेट पैटर्न चुनें: बिल्ड‑टाइम, घंटे‑वार बैच, लाइव राइट्स, या प्रति‑यूज़र परिणाम।
  2. सबसे छोटे ईमानदार टूल से प्रोटोटाइप करें: स्थैतिक HTML के लिए Pagefind, एनालिटिकल फ़ाइलों के लिए DuckDB, हल्के ऐप सर्च के लिए Orama, वेक्टर‑हेवी काम के लिए LanceDB या Chroma।
  3. अजीब हिस्से को मापें: इंडेक्सिंग समय, फ्रेशनेस, बंडल आकार, परमिशन, और कोल्ड स्टार्ट के बाद पहला क्वेरी।
  4. दर्द वास्तविक होने पर ही प्रोडक्शन में ले जाएँ: फ़ाइल‑आधारित संस्करण जहाँ बेंड दिखाता है, वहाँ मैनेज्ड डेटाबेस को जस्टिफ़ाई करना आसान है।

मेरे व्यावहारिक Pagefind गाइड को देखें हाथ‑से‑इम्प्लीमेंटेशन के लिए, या एज‑नेटिव डेटाबेस के बढ़ते इकोसिस्टम का अन्वेषण करें जो स्केल पर डेटा को पुनः आकार दे रहा है।

डिस्क्लेमर: मैंने वर्षों से Pagefind इस्तेमाल किया है और 2025 में योगदानकर्ता बना। मैंने छोटे प्रोजेक्ट्स के लिए Orama और Chroma के साथ प्रयोग किया और बड़े AI एप्लिकेशन के लिए LanceDB को एक्सप्लोर कर रहा हूँ। इन प्रोजेक्ट्स के साथ कोई वित्तीय संबंध नहीं—सिर्फ डेटाबेस परिदृश्य के विकास में गहरी रुचि है।