सूत्र DB (SutraDB)
सूत्र (Sūtra): An aphorism or thread of knowledge designed to hold vast wisdom in the most concise, unbreakable form.
SutraDB is an ultra-fast, zero-dependency hybrid vector search and BM25 lexical engine engineered in pure Python. It combines SIMD-accelerated linear algebra with Robertson-Spärck Jones BM25 ranking and in-flight compound metadata filtering.
Designed specifically for the 95% of AI applications (local RAG, agent memory, enterprise document search, catalog matching) that need sub-millisecond retrieval without the multi-gigabyte dependency trees of Chroma or the network latency of cloud-managed vector databases.
🏗️ Architecture
CLIENT REQUEST
[ Text Query: "P99 latency bug" | Vector: [0.12, ...] ]
[ Metadata Filter: {"status": "resolved", "priority": {"$lte": 2}} ]
│
▼
┌──────────────────────────────┐
│ SutraDB Execution Core │
└──────────────┬───────────────┘
│
┌───────────────────────────┼───────────────────────────┐
▼ ▼ ▼
┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐
│ Metadata Engine │ │ Dense Vector Core│ │ Sparse BM25 Core │
│ (AST Predicates) │ │ (SIMD BLAS / SQ8)│ │ (Lexical Tokens) │
└────────┬─────────┘ └────────┬─────────┘ └────────┬─────────┘
│ │ │
│ Dynamic Bitmask │ Dense Scores │ Lexical Scores
│ (e.g., 0b101100) │ [0.89, 0.42, ...] │ [12.4, 0.0, ...]
└─────────────┬────────────┴─────────────┬────────────┘
│ │
▼ ▼
┌───────────────┐ ┌───────────────┐
│ Masked Dense │ │ Masked BM25 │
│ Top-K Heap │ │ Top-K Heap │
└───────┬───────┘ └───────┬───────┘
│ │
└───────────┬──────────────┘
│
▼
┌───────────────────────────────┐
│ Reciprocal Rank Fusion (RRF) │
│ Merges semantic + exact words │
└───────────────┬───────────────┘
│
▼
┌───────────────────────────────┐
│ Ranked Final Results │
│ P50: 0.36ms | P99: 5.9ms │
└───────────────────────────────┘
⚡ Key Highlights
- Pure SIMD / BLAS Velocity: Pre-normalizes vectors at insertion time so Cosine Similarity reduces to a single GEMV matrix-vector multiplication executed in L1 cache lines.
- Reciprocal Rank Fusion (RRF): Dense embeddings understand semantic intent; BM25 matches exact serial numbers, error codes, and technical jargon. SutraDB dynamically fuses both ranking signals via RRF.
- Single-Stage In-Flight Predicate Masking: Zero subset memory allocations. Evaluates complex JSON conditions (
$eq,$ne,$gt,$gte,$in,$nin,$contains,$and,$or) into high-speed bitmasks in under $30\mu\text{s}$. - Zero-Copy Memory-Mapped Persistence: Custom
.sutra64-byte aligned binary format allows near-instant cold starts viammap, backed by an append-only CRC32 Write-Ahead Log (WAL) for durability. - Embedded HTTP REST Micro-server: Built-in zero-dependency server exposes
/health,/collections,/insert, and/queryendpoints for microservice architectures.
📊 Benchmark Comparison
Ran on standard 4-vCPU Linux environment (5,000 documents, 128 dimensions):
| Metric | SutraDB (सूत्र DB) | ChromaDB | Pinecone (Cloud) |
|---|---|---|---|
| Dependency Footprint | 1 library (NumPy) | ~45 libraries | Proprietary client |
| Cold Start Time | < 2 ms | ~850 ms | N/A (Cloud API) |
| Vector Search Latency (P50) | 0.36 ms | ~4.2 ms | 35 – 65 ms (Network roundtrip) |
| Ingestion Throughput | 52,000+ docs/sec | ~4,800 docs/sec | Rate-limited by HTTP |
| RAM Overhead | ~22 MB | ~140 MB | 0 MB (Remote) |
| Setup Overhead | pip install sutradb-core |
Docker / heavy pip | API keys + Monthly bill |
🚀 Quickstart
1. Installation
git clone https://github.com/Sam-CodesAI/SutraDB.git
cd SutraDB
pip install -e .
2. Basic Usage (Python SDK)
from sutradb import SutraDB, Document
# Initialize SutraDB with disk persistence
db = SutraDB(persist_directory="./sutra_data")
# Create or load collection
collection = db.get_or_create_collection(name="kb", dimension=4, metric="cosine")
# Insert documents
collection.insert([
Document(
id="doc_1",
vector=[0.95, 0.05, 0.10, 0.00],
text="Deploying containerized microservices to Kubernetes",
metadata={"category": "devops", "tier": "internal"}
),
Document(
id="doc_2",
vector=[0.02, 0.98, 0.05, 0.01],
text="PostgreSQL connection pooling and pgbouncer tuning",
metadata={"category": "database", "tier": "public"}
)
])
# Hybrid query combining semantic vector + text keywords + metadata filter
results = collection.query(
vector=[1.0, 0.0, 0.0, 0.0],
text="Kubernetes microservices",
filter={"tier": "internal"},
top_k=5,
hybrid=True
)
for r in results:
print(f"[{r.score:.4f}] {r.id}: {r.text}")
🌐 Running as an HTTP Microservice
Start the built-in HTTP server:
python3 -m sutradb.server 8765
Query via curl:
# Health check
curl http://localhost:8765/health
# Insert documents
curl -X POST http://localhost:8765/collections/demo/insert \
-H "Content-Type: application/json" \
-d '{"documents": [{"id": "d1", "vector": [1,0,0], "text": "Sample", "metadata": {"tag": "ai"}}]}'
# Hybrid search
curl -X POST http://localhost:8765/collections/demo/query \
-H "Content-Type: application/json" \
-d '{"vector": [1,0,0], "text": "Sample", "filter": {"tag": "ai"}, "top_k": 5}'
🧪 Test Suite
Run the full verification and benchmark suite:
pytest -v tests
📜 License
MIT License. Engineered by Samarth.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file sutradb_core-2.1.0.tar.gz.
File metadata
- Download URL: sutradb_core-2.1.0.tar.gz
- Upload date:
- Size: 37.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.12.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9df94109f1a562c2dc31632c1c006fe87d2cccf9beb06b64d3a1dde543668cb0
|
|
| MD5 |
0daeab9859411ed8389511c3e69ac1fb
|
|
| BLAKE2b-256 |
191f9945cf4962654523ce0194a12fd9b38678c040ca3f74a8cbb7a7451fbf6a
|
File details
Details for the file sutradb_core-2.1.0-py3-none-any.whl.
File metadata
- Download URL: sutradb_core-2.1.0-py3-none-any.whl
- Upload date:
- Size: 28.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.12.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
061a79039509d18ad4613f068f24538b999111cdabe596a247716109861a6551
|
|
| MD5 |
51a204e10b1f98f645e5dcd80115eab8
|
|
| BLAKE2b-256 |
6d39b707f27ce4b5dc52ae9608122bb12326c261784962e1443ad803894ca058
|