Metadata-Version: 2.4
Name: andnp-searchkernel
Version: 0.3.0
Summary: Source-agnostic search/indexing kernel: domain-agnostic content ingestion, hybrid vector+keyword+graph search, pluggable embedding/LLM/reranker providers.
Project-URL: Homepage, https://github.com/andnp/andnp-searchkernel
Project-URL: Documentation, https://github.com/andnp/andnp-searchkernel/tree/main/docs
Project-URL: Repository, https://github.com/andnp/andnp-searchkernel.git
Project-URL: Issues, https://github.com/andnp/andnp-searchkernel/issues
License-File: LICENSE
Requires-Python: >=3.13
Requires-Dist: numpy>=2.0.0
Provides-Extra: faiss
Requires-Dist: faiss-cpu>=1.9.0; extra == 'faiss'
Requires-Dist: llama-index-core>=0.12.0; extra == 'faiss'
Requires-Dist: llama-index-vector-stores-faiss>=0.3.0; extra == 'faiss'
Provides-Extra: huggingface
Requires-Dist: llama-index-embeddings-huggingface>=0.4.0; extra == 'huggingface'
Requires-Dist: sentence-transformers>=3.0.0; extra == 'huggingface'
Provides-Extra: markdown
Requires-Dist: tree-sitter-markdown>=0.3.2; extra == 'markdown'
Requires-Dist: tree-sitter>=0.23.0; extra == 'markdown'
Provides-Extra: pgvector
Requires-Dist: psycopg2-binary>=2.9.0; extra == 'pgvector'
Description-Content-Type: text/markdown

# `andnp-searchkernel`

A domain-agnostic search/indexing kernel for building hybrid vector + keyword + graph search systems with pluggable embedding, LLM, and reranker providers.

## Status

**Pre-alpha, extraction in progress.** This library is being extracted from [`mcp-markdown-ragdocs`](https://github.com/andnp/mcp-markdown-ragdocs) to enable reuse across arbitrary content sources and search backends.

## Optional backends

The core package provides the domain models, ports, search pipeline, and
evaluation primitives. Install only the integrations required by an
application:

```bash
pip install andnp-searchkernel[pgvector,huggingface,markdown]
```

Available extras are `faiss`, `pgvector`, `huggingface`, and `markdown`.
FAISS and pgvector implement the same record-oriented backend contracts; they
can be selected independently or used together during migrations.

## Integration tests

The pgvector integration tests automatically start a temporary
`pgvector/pgvector:pg17` Docker container when `SEARCHKERNEL_PG_DSN` is not
set. Docker must be running:

```bash
uv run pytest tests/integration
```

To use an existing PostgreSQL instance instead, set
`SEARCHKERNEL_PG_DSN` to its connection string. The database must allow the
`vector` extension to be created.

## Releases

Merges to `main` with `feat`, `fix`, or breaking Conventional Commits are
released automatically. The release workflow bumps the SemVer version,
updates `pyproject.toml` and `uv.lock`, pushes a `v*` tag, and dispatches the
PyPI publishing workflow. Documentation, chore, and test-only commits do not
create releases.

## License

MIT License. See [LICENSE](LICENSE) for details.
