Every SDK implements the same QQL lifecycle: parse input, inspect or rewrite an AST, compile or explain offline, then execute against Qdrant. Choose the host that is already closest to your application; do not translate a query into a different syntax per service.
| Host | Install | Live execution | Distinct capability |
|---|---|---|---|
| Rust | qql-core + qql | REST and optional gRPC | Direct AST, planning, and executor APIs |
| Python | pyqql | REST and optional gRPC | Native statement handles and async execution |
| Node.js | @veristamp/nqql | REST and optional gRPC | Native N-API bindings and parseJson |
| Browser/WASM | qql-wasm | REST/fetch | Offline analyze, JavaScript embedder, transferable bytes |
QUERY TEXT 'portable query'FROM docsUSING denseLIMIT 5;Shared workflow
Section titled “Shared workflow”- Parse or analyze the source before sending traffic.
- Inject a trusted filter when the caller must be constrained.
- Use
compileorexplainto inspect the Qdrant operation. - Execute a statement, script, or independent host array.
| Capability | Rust | Python | Node.js | WASM |
|---|---|---|---|---|
| Parse | Parser::parse_all | parse | parse | parse |
| Validate | parse result | is_valid | isValid | isValid |
| Inject policy | inject_filter | inject_filter | injectFilter | inject_filter / Stmt.injectFilter |
| Explain and compile | planner/runtime | explain, compile_query | explain, compileQuery | analyze, compile |
| Execute | Executor::execute | Client.execute | Client.execute | Client.execute |
For local in-process execution, the edge packages (pyqql-edge, @veristamp/nqql-edge, and the qql-edge crate) build a self-contained backend with embedded models. They are a separate feature surface from the remote SDKs; see the Edge overview before adopting them.
Choose a host page for complete API and lifecycle guidance.