First-party dirsql plugin: semantic search via an OpenAI-compatible embeddings endpoint.
Project description
dirsql-plugin-embeddings
A first-party dirsql plugin that
adds semantic search over a directory of Markdown files. It is the worked
implementation behind the Search documents by
meaning how-to,
swapping that guide's local model2vec model for any OpenAI-compatible
/v1/embeddings endpoint.
uvx --with dirsql-plugin-embeddings dirsql
Deliberately minimal (v0.1): one embedding provider shape, one table, no chunking, no config surface beyond three environment variables.
How it works
The plugin ships a dirsql.toml fragment that dirsql discovers when the package
is installed alongside it. The fragment declares:
- the
sqlite-vecextension, forvec_distance_cosine(); - a
documentstable whoseon-filehook embeds each**/*.mdfile into a TEXTembeddingcolumn; - a
pre-queryhook that embeds the incoming question and emits the nearest-neighbor SQL.
Both hooks are console scripts that call the same embedder.
Configuration
The embedder reads three environment variables (point them at any hosted or self-managed OpenAI-compatible inference server):
| Variable | Meaning |
|---|---|
DIRSQL_EMBEDDINGS_BASE_URL |
Base URL; /v1/embeddings is appended. |
DIRSQL_EMBEDDINGS_MODEL |
Model name sent in the request. |
DIRSQL_EMBEDDINGS_API_KEY |
Bearer token for Authorization. |
Console scripts
| Script | Hook | Input | Output |
|---|---|---|---|
dirsql-embeddings-on-file |
on-file |
a file's absolute path (argv[1]) |
one-line JSON row array with path, text, embedding |
dirsql-embeddings-pre-query |
pre-query |
a raw request body (argv[1]) |
nearest-neighbor SQL over documents |
pre-query accepts both a verbatim server body ({"q": ...}) and the CLI
query subcommand's {"sql": <arg>} wrapper, so dirsql query '{"q": ...}' and
a real POST /query both work.
Tests
Three tiers, per the dirsql testing conventions:
- unit (colocated, mocked seams) —
src/dirsql_plugin_embeddings/*_test.py - integration (
tests/integration/) — each console script as a real subprocess against a local stub/v1/embeddingsserver - e2e (
tests/e2e/) — the full loop through the real launcher +dirsqlbinary +sqlite-vec, nothing mocked but the embedding endpoint
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file dirsql_plugin_embeddings-0.1.1.tar.gz.
File metadata
- Download URL: dirsql_plugin_embeddings-0.1.1.tar.gz
- Upload date:
- Size: 6.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c1dfd52e6fd2be5ba39258594b291fa103b98a818b8d70d205155d19dcd15f43
|
|
| MD5 |
48fd3933246c0b673f010096af74e680
|
|
| BLAKE2b-256 |
cb2ac7165d2eb747de94fc3fb554629f0e7a090480bebccd273818d3d615fab8
|
Provenance
The following attestation bundles were made for dirsql_plugin_embeddings-0.1.1.tar.gz:
Publisher:
release.yml on thekevinscott/dirsql
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
dirsql_plugin_embeddings-0.1.1.tar.gz -
Subject digest:
c1dfd52e6fd2be5ba39258594b291fa103b98a818b8d70d205155d19dcd15f43 - Sigstore transparency entry: 2167569267
- Sigstore integration time:
-
Permalink:
thekevinscott/dirsql@cc4325c8ff5ce543247550cec6e3632412bebc10 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/thekevinscott
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@cc4325c8ff5ce543247550cec6e3632412bebc10 -
Trigger Event:
push
-
Statement type:
File details
Details for the file dirsql_plugin_embeddings-0.1.1-py3-none-any.whl.
File metadata
- Download URL: dirsql_plugin_embeddings-0.1.1-py3-none-any.whl
- Upload date:
- Size: 6.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c0610da65b9eae63e208a2b6ed8f7fa507639f421b7a137910022c6050e410b1
|
|
| MD5 |
6e4adfd2fdb6e549caa50e3519bca12e
|
|
| BLAKE2b-256 |
e871e480f28f3825a313e0b750be7543a69ed737675d9ff3746c50c6f147b38c
|
Provenance
The following attestation bundles were made for dirsql_plugin_embeddings-0.1.1-py3-none-any.whl:
Publisher:
release.yml on thekevinscott/dirsql
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
dirsql_plugin_embeddings-0.1.1-py3-none-any.whl -
Subject digest:
c0610da65b9eae63e208a2b6ed8f7fa507639f421b7a137910022c6050e410b1 - Sigstore transparency entry: 2167569335
- Sigstore integration time:
-
Permalink:
thekevinscott/dirsql@cc4325c8ff5ce543247550cec6e3632412bebc10 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/thekevinscott
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@cc4325c8ff5ce543247550cec6e3632412bebc10 -
Trigger Event:
push
-
Statement type: