Context filtering module that scans your data and returns only relevant portions based on a query.
Project description
nzachapy
Context Filtering for LLMs — Scan your entire dataset and return only the portion relevant to your query.
When working with large datasets and language models, stuffing everything into the context window is noisy and expensive. nzachapy solves this by chunking your data, embedding it semantically, and returning only the chunks most relevant to a given query — so your model sees signal, not noise.
Installation
pip install nzachapy
Quick Start
from nzachapy import Nzacha
# Initialize the module
nz = Nzacha()
# Add your dataset (must be a string)
nz.add_by_words(data)
# Query for relevant context
results = nz.query("your query here")
⚠️ Important: Your dataset must be converted to a string before passing it to
add_by_words().
Configuration
When initializing Nzacha, you can customize the following parameters. If left unset, the defaults are used.
| Parameter | Default | Description |
|---|---|---|
chunk_size |
200 |
Number of words per chunk |
overlap |
20 |
Number of overlapping words between consecutive chunks |
openai_api_key |
None |
OpenAI API key for semantic embeddings (optional) |
threshold |
0.6 |
Minimum similarity score for a chunk to be returned |
Example with custom config
nz = Nzacha(
chunk_size=150,
overlap=30,
openai_api_key="sk-...",
threshold=0.75
)
Embedding Backends
nzachapy supports two embedding strategies:
- OpenAI — Provide your
openai_api_keyat initialization to use OpenAI's embedding models for higher-quality semantic search. - Sentence Transformers (default) — If no API key is provided, the module falls back to a local
sentence-transformersmodel. No API key required.
How It Works
-
Chunking —
add_by_words(data)splits your string dataset into overlapping word-based chunks.chunk_sizecontrols how many words each chunk contains;overlapcontrols how many words are shared between adjacent chunks to preserve context across boundaries. -
List —
add_by_words(data)if data is a list, embed each element in the list,chunk_sizeandoverlapare not used here -
Embedding — Each chunk/element is embedded into a vector using either OpenAI or Sentence Transformers.
-
Retrieval — When you run a query, it is embedded the same way and compared against all chunk/element embeddings. Only chunks/elements that meet or exceed the
thresholdsimilarity score are returned.
API Reference
Nzacha(chunk_size, overlap, openai_api_key, threshold)
Initializes the context filter with the given configuration.
nz.add_by_words(data: str | list)
if data: str Chunks the provided string dataset by word count and stores the embeddings internally else just stores the embeddings if each list element internally. Must be called before querying.
data— Your full dataset as a string or list. Convert any other structure to a string or a list first.
Notes
- Always pass data as a plain string or a list. Use
str(),json.dumps(), or.to_string()(for DataFrames) to convert before callingadd_by_words(). - A lower
thresholdreturns more (but less precise) chunks. A higher threshold is stricter. - Chunk
overlaphelps avoid losing context that falls on chunk boundaries — tune it based on your data's structure.
Contributing
Contributions are welcome! If you spot an area for improvement — whether it's a new chunking strategy, a better embedding backend, performance optimizations, or additional retrieval methods — feel free to open an issue or submit a pull request.
Please make sure any changes are well-tested and clearly documented.
License
MIT
Project details
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 nzachapy-0.1.1.tar.gz.
File metadata
- Download URL: nzachapy-0.1.1.tar.gz
- Upload date:
- Size: 10.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4741a74df1217a0419d77ba866c4b93901334f0568e4f295a4ee80bf5e7848f6
|
|
| MD5 |
1f94ef2d5c22b74cd69a7634ac507365
|
|
| BLAKE2b-256 |
f9baf5a64682b8728e88127a51e1d29712dfac30d8b0f7ccf33a06ff7f95f913
|
File details
Details for the file nzachapy-0.1.1-py3-none-any.whl.
File metadata
- Download URL: nzachapy-0.1.1-py3-none-any.whl
- Upload date:
- Size: 5.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
950e9f553cffc8e56c9d1a0301002d88a13aaed2565e50caf84af0b80151bc5a
|
|
| MD5 |
5e627612f48d4da037cb9c4119c766cf
|
|
| BLAKE2b-256 |
222343ffa9b44ee2b5ff6d1546c68c506796c71a8cc2f8b20ef9cf189ad3a9b6
|