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+ |