Client SDKs

Official client libraries that wrap the CortexDB REST API for Python, JavaScript/TypeScript, and Java.

Overview

All three SDKs follow the same architecture — a main client with three sub-APIs:

🔧
Setup API
Configure the LLM provider (Gemini, OpenAI, Anthropic, Azure, OpenRouter).
📥
Ingest API
Submit documents for ingestion. CortexDB handles chunking, embedding, and graph building.
🔍
Query API
Search contexts, entities, history, graph traversal, and hybrid search — 20+ methods.

Python SDK

Installation

pip install cortexdb

Quick Start

from cortexdb import CortexDB

db = CortexDB("http://localhost:8080")

# Setup
db.setup.configure(
    provider="GEMINI",
    api_key="YOUR_API_KEY",
    chat_model="gemini-2.0-flash",
    embed_model="gemini-embedding-001"
)

# Ingest structured document
response = db.ingest.document(
    uid="user-1",
    document_title="Memory Management in Java",
    document_text="Java uses garbage collection for memory management."
)
print(f"Ingested: {response.knowledge_base.id}")

# Ingest conversational prompt
prompt_resp = db.ingest.prompt(
    uid="user-1",
    converser="USER",
    text="How does Java handle memory?"
)
print(f"Ingested: {response.knowledge_base.id}")

# Query — Semantic search
results = db.query.search_contexts("memory management", limit=5)
for r in results.results:
    print(f"  {r.score:.2f} — {r.content}")

# Query — Entity lookup
entity = db.query.get_entity_by_name("Java")

# Query — Graph traversal
connections = db.query.get_outgoing_connections(entity.id)

# Query — Hybrid search
hybrid = db.query.hybrid_search("How does Java handle memory?")

# GDPR — Delete user data
db.query.delete_user_data("user-1")

API Methods

Category Methods
Setup configure()
Ingest document()
Contexts search_contexts(), get_contexts_by_kb(), get_recent_contexts(), search_recent_contexts(), get_sibling_contexts()
Entities search_entities(), get_entity_by_name(), get_entity_by_name_ignore_case(), get_entity_id_by_name(), disambiguate_entity(), get_contexts_for_entity(), get_entities_for_context(), merge_entities()
History search_history(), get_history_by_user(), get_recent_kbs(), get_kbs_since()
Graph get_outgoing_connections(), get_incoming_connections(), get_two_hop_connections(), get_top_relations(), get_relations_by_source(), get_relations_by_target(), get_relations_by_type()
Hybrid hybrid_search()
User Data delete_user_data()

📖 Full docs: cortexdb-py/README.md

JavaScript / TypeScript SDK

Installation

npm install cortexdb

Quick Start

import { CortexDB, ConverserRole } from "cortexdb";

const db = new CortexDB("http://localhost:8080");

// Setup
await db.setup.configure("GEMINI", "gemini-2.0-flash",
                         "gemini-embedding-001", "YOUR_API_KEY");

// Ingest structured document
const response = await db.ingest.document(
  "user-1", "Memory Management in Java",
  "Java uses garbage collection for memory management."
);
console.log(`Ingested: ${response.knowledgeBase?.id}`);

// Query — Semantic search
const results = await db.query.searchContexts("memory management");
for (const r of results.results) {
  console.log(`  ${r.score?.toFixed(2)} — ${r.content}`);
}

// Query — Entity lookup
const entity = await db.query.getEntityByName("Java");

// Query — Graph traversal
const connections = await db.query.getOutgoingConnections(entity!.id!);

// Query — Hybrid search
const hybrid = await db.query.hybridSearch("How does Java handle memory?");

// GDPR — Delete user data
await db.query.deleteUserData("user-1");

TypeScript Types

All models are fully typed and exported:

import {
  LLMApiProvider, ConverserRole,
  type SetupResponse, type IngestResponse,
  type QueryResponse, type SearchResult,
  type Entity, type Relation
} from "cortexdb";

📖 Full docs: cortexdb-js/README.md

Java SDK

Installation

<dependency>
    <groupId>com.vectornode</groupId>
    <artifactId>cortexdb-java</artifactId>
    <version>0.1.0-SNAPSHOT</version>
</dependency>

Quick Start

import com.vectornode.cortexdb.CortexDBClient;
import com.vectornode.cortexdb.models.*;

CortexDBClient db = new CortexDBClient("http://localhost:8080");

// Setup
SetupResponse setup = db.setup().configure(
    LLMApiProvider.GEMINI, "YOUR_API_KEY",
    "gemini-2.0-flash", "gemini-embedding-001"
);

// Ingest structured document
IngestResponse ingest = db.ingest().document(
    "user-1", "Memory Management in Java",
    "Java uses garbage collection for memory management."
);
System.out.println("Ingested: " + ingest.getKnowledgeBase().getId());

// Query — Semantic search
QueryResponse results = db.query().searchContexts("memory management");
for (SearchResult r : results.getResults()) {
    System.out.printf("  %.2f — %s%n", r.getScore(), r.getContent());
}

// Query — Entity lookup
Entity entity = db.query().getEntityByName("Java");

// Query — Graph traversal
QueryResponse connections = db.query().getOutgoingConnections(entity.getId());

// Query — Hybrid search
QueryResponse hybrid = db.query().hybridSearch("How does Java handle memory?");

// GDPR — Delete user data
db.query().deleteUserData("user-1");

Native LLM Provider

The Java SDK also supports calling LLMs directly from the client side:

import com.vectornode.cortexdb.llm.LLMProvider;

LLMProvider llm = new LLMProvider("GEMINI", "YOUR_KEY",
    "gemini-2.0-flash", "gemini-embedding-001", null);

List<Float> embedding = llm.getEmbedding("Hello world");
String response = llm.callLLM("Explain quantum computing");

📖 Full docs: cortexdb-java/README.md

API Pattern

All SDKs follow the same sub-API pattern:

client.setup.configure(...)     // Configure LLM
client.ingest.document(...)     // Ingest structured document
client.ingest.prompt(...)       // Ingest conversational prompt
client.query.searchContexts(...)// Semantic search on contexts
client.query.getEntityByName(...)// Entity lookup
client.query.hybridSearch(...)  // Hybrid vector + graph search

Comparison Table

Feature Python JavaScript/TS Java
Language Python 3.10+ Node.js 18+ Java 21+
Package Manager pip / Poetry npm Maven
Async httpx (async) fetch (async/await) HttpClient (sync)
Type Safety Pydantic models TypeScript interfaces POJOs + Generics
Native LLM google-genai Built-in LLMProvider
Testing pytest + respx vitest JUnit 5
Query Methods 20+ 20+ 20+