Skip to main content

tar-rag

Topology-Aware Retrieval for RAG — a vector-store-agnostic Python library that adds structural navigation to any RAG pipeline.

Description

Most RAG pipelines do flat top-K semantic search — every query scans the entire vector space, mixing chunks from unrelated parts of the corpus and diluting the top result. Many teams patch this with an extra LLM call that "routes" the query to a filter; that costs tokens, adds latency, and can hallucinate filters that don't exist.

tar-rag does the routing with math instead of an LLM. It builds a topology map from your corpus's directory layout, scores each branch lexically against the query, and runs ANN search scoped to the hottest branch first — broadening only if confidence isn't high enough.

# Example
query: "How does the OAuth token refresh flow work?"

  ┌────────────────────────────────────────────────────────────┐
  │ auth/oauth        ████████████   0.92   ← start ANN here   │
  │ auth/sessions     █████          0.41                      │
  │ billing/refunds   █              0.08                      │
  │ billing/invoices                 0.02                      │
  └────────────────────────────────────────────────────────────┘

No extra LLM call, no per-query token cost, sub-millisecond on the hot path, no hallucination, fully deterministic. tar-rag does not own embeddings, chunking, the vector store, or the LLM — it decides where retrieval starts and gates weak results before they reach your LLM.

See more about tar-rag on Github

Install

pip install tar-rag

Includes every bundled vector-store adapter (OpenAI, Pinecone, Qdrant, Chroma) and every file extractor (PDF, DOCX, HTML, JSON, CSV, plaintext / source code) — works out of the box.

Use cases

Documentation portals · source code repositories · enterprise knowledge bases · product manuals · SOP trees · API docs · compliance repositories · engineering archives · any filesystem-organized corpus where the directory layout encodes meaning.

Usage example

Index a directory of documents, upload them to an OpenAI Vector Store, and run a query through tar-rag's structural filter + fallback pipeline.

Step 1 — Crawl your corpus

from tar_rag import DirectoryCrawler, build_artifacts

crawler = DirectoryCrawler(
    root="./my-corpus",
    level_names=["service", "module"],  # or None to auto-infer
)
documents = crawler.crawl()
bundle = build_artifacts(documents, level_names=crawler.level_names)
bundle.write("./tar_rag_output/")

print(f"Indexed {len(documents)} document(s).")
print("Tune ./tar_rag_output/confidence_config.json before first query if needed.")

Step 2 — Upload to a vector store (OpenAI shown)

import openai
from tar_rag.manifest import MetadataManifest

client = openai.OpenAI()
manifest = MetadataManifest.load("./tar_rag_output/metadata_manifest.json")

vs = client.vector_stores.create(name=f"my-kb-{manifest.version}")
for doc in manifest:
    with open(doc.relative_path, "rb") as f:
        uploaded = client.files.create(file=f, purpose="assistants")
    client.vector_stores.files.create(
        vector_store_id=vs.id,
        file_id=uploaded.id,
        attributes={k: v for k, v in doc.metadata.items() if v is not None},
    )

print(f"Uploaded {len(manifest)} document(s) to vector store {vs.id}.")

Step 3 — Query through tar-rag

import openai
from tar_rag import TarRag
from tar_rag.adapters import OpenAIVectorStoreAdapter

tar = TarRag.from_artifacts("./tar_rag_output/")
tar.set_adapter(OpenAIVectorStoreAdapter(
    client=openai.OpenAI(),
    vector_store_id="vs_xxx",
    top_k=6,
))

result = tar.search("How does the OAuth token refresh flow work?")

print(f"confidence={result.confidence}  top_score={result.top_score:.2f}")
print(f"reason={result.reason}  attempts_made={result.attempts_made}")

if result.should_answer:
    for chunk in result.results:
        print(chunk.score, chunk.snippet[:200])
else:
    print("Confidence below the gate — forwarding zero chunks to the LLM.")

The same tar.search(...) call works against Pinecone, Qdrant, Chroma, or any custom adapter — only the constructor changes. See the full GitHub README for the system architecture diagram, the how-to guide for tuning / custom adapters / async, and benchmarks/benchmark.md for measured comparisons.


"Data should empower, not overwhelm"

Metadata

Release files for tar-rag 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for tar-rag 0.2.0
File Size Uploaded Provenance Actions
tar_rag-0.2.0.tar.gz 88.1 kB With provenance Details for tar_rag-0.2.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for tar-rag 0.2.0
File Interpreter ABI Platform Actions
tar_rag-0.2.0-py3-none-any.whl Python 3 none any Details for tar_rag-0.2.0-py3-none-any.whl

Total release size: 146.7 kB

Release files / tar_rag-0.2.0.tar.gz

Download URL tar_rag-0.2.0.tar.gz
Size 88.1 kB
Tags Source
SHA-256 checksum
How to use checksums
557cca1863115c4d061cbd1a22806a7b460c181a1c9d7911003df1f59aad5689
BLAKE2b-256 checksum
How to use checksums
839e7dd98bb21c612eb2570f751bacc7c52998dc67d4a1f25ab6c4d043910e35
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on May 16, 2026.

Transparency log

Release files / tar_rag-0.2.0-py3-none-any.whl

Download URL tar_rag-0.2.0-py3-none-any.whl
Size 58.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0928459824a592db0a399bafe640a6c843620b625e5a1e427b9cd2943a7cf21c
BLAKE2b-256 checksum
How to use checksums
ebf17b5656b707eaee1f2c5c1a3a70655458ac0097da2a46f00b175cc549f76d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on May 16, 2026.

Transparency log

Security for tar-rag 0.2.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for tar_rag-0.2.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on May 16, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page