Polars · Semantic Search

Polars Semantic Search in One Line of Python

Omna gives Polars DataFrames native semantic (vector) search. Local-first, Rust-powered, zero network calls. Search by meaning, not by string match.

The one-line API

import polars as pl
import omna  # registers the .omna namespace

df = pl.read_parquet("clinical_notes.parquet")

# Semantic search — returns the top-3 rows most similar
# to the query, with a relevance score column appended.
results = df.omna.search("chest pain radiating to left arm", top_k=3)

Why semantic search on Polars?

Polars is the fastest DataFrame library in Python. But until now, searching text columns meant brittle regex, str.contains, or shipping your data to Pinecone, Weaviate, or pgvector. Omna closes that gap: vector search becomes a method on the DataFrame itself, indexed and queried in-process with a Rust kernel.

Benchmarks

vs Pinecone, Weaviate, pgvector

Pinecone, Weaviate, Qdrant, and pgvector are excellent for production, multi-tenant, low-latency search-as-a-service. For analytical Polars pipelines — notebooks, ETL jobs, ad-hoc exploration — they are operationally heavy: containers, indexes, network hops, vendor approvals. Omna trades that infrastructure for an in-process Rust kernel that runs wherever Polars runs.

Try it now

The live playground on omna.dev runs a real Polars semantic search on a sample healthcare dataset, in your browser.

pip install omna