qql_embed/lib.rs
1//! Shared embedding layer for QQL.
2//!
3//! - [`Embedder`] — host-agnostic dense/sparse API (batch dense by default when overridden)
4//! - [`resolve_embeddings`] — rewrite `QUERY` / `UPSERT` text into vectors on the AST
5//! - [`sparse`] — local wire-compatible BM25 sparse vectors (no network)
6//!
7//! Used by `qql` (runtime HttpEmbedder), `qql-edge` (FastEmbedder), and `qql-wasm`
8//! (fetch / JS adapters). No Qdrant I/O and no HTTP client live here.
9
10/// Host-agnostic `Embedder` trait, joint embedding output, and error helpers.
11pub mod embedder;
12/// AST rewriting: resolve `TEXT` inputs to vectors via the configured embedder.
13pub mod resolve;
14/// Local wire-compatible BM25 sparse vectors (no network).
15pub mod sparse;
16/// `USING` vector-kind resolution from collection topology (dense/sparse/multi).
17pub mod topology;
18
19#[cfg(test)]
20mod resolve_test;
21#[cfg(test)]
22mod sparse_test;
23#[cfg(test)]
24mod topology_test;
25
26pub use embedder::{
27 Embedder, EmbedderBound, JointEmbeddingOutput, SparseEmbedder, cross_rerank_unsupported_error,
28 dense_model_unsupported_error, image_unsupported_error, multi_unsupported_error,
29 sparse_model_unsupported_error,
30};
31pub use resolve::{DENSE_VECTOR_NAME, SPARSE_VECTOR_NAME, resolve_embeddings};
32pub use sparse::{Bm25Params, SparseVector};
33pub use topology::{
34 TopologyNames, query_needs_kind_resolution, resolve_query_vector_kinds,
35 resolve_query_vector_kinds_simple,
36};