Skip to main content

Context Fabric

Context-Fabric

A graph-based corpus engine for annotated text with efficient traversal and search.

Overview

Context-Fabric provides a powerful data model for working with annotated text corpora as graphs. It enables efficient navigation, feature lookup, and pattern-based search across large textual datasets.

Forked from Dirk Roorda's Text-Fabric.

Installation

pip install context-fabric

Quick Start

from cfabric.core import Fabric

# Load a dataset
CF = Fabric(locations='path/to/data')
api = CF.load('feature1 feature2')

# Navigate nodes
for node in api.N.walk():
    print(api.F.feature1.v(node))

# Use locality
embedders = api.L.u(node)
embedded = api.L.d(node)

Core API

  • N (Nodes) - Walk through nodes in canonical order
  • F (Features) - Access node feature values
  • E (Edges) - Access edge feature values
  • L (Locality) - Navigate between related nodes
  • T (Text) - Retrieve text representations
  • S (Search) - Search using templates

Performance

Context-Fabric uses memory-mapped numpy arrays for dramatically faster loading and reduced memory consumption compared to Text-Fabric's pickle-based caching.

Benchmarks (BHSA Hebrew Bible corpus — 1.4M nodes, 109 features)

Metric Text-Fabric Context-Fabric Improvement
Load Time 7.9s 0.7s 11x faster
Memory Usage 6.3 GB 305 MB 95% reduction
Compile Time 8s 91s one-time cost
Cache Size 138 MB 859 MB 6x larger

Performance Comparison

The key insight: compilation happens once, loading happens every session. Context-Fabric trades one-time compile cost for dramatic runtime efficiency:

  • Memory-mapped arrays: Data stays on disk, accessed on-demand
  • Efficient sparse iteration: Uses numpy vectorized operations instead of Python loops
  • Cached materialization: Dictionary views computed once per session

Parallel Worker Scaling

Memory-mapped arrays enable efficient parallel processing. Multiple workers share the same mmap'd data instead of each loading a full copy into RAM.

Spawn mode (cold start — each worker loads independently):

Metric Text-Fabric Context-Fabric Savings
Total (4 workers) 7.7 GB 1.3 GB 84% less
Per worker 1.9 GB 315 MB 6x less

Fork mode (API scenario — pre-load then fork workers):

Metric Text-Fabric Context-Fabric Savings
Total (4 workers) 6.3 GB 398 MB 94% less
Per worker 1.6 GB 99 MB 16x less

Memory measured as total RSS after loading from cache on BHSA corpus.

Run the benchmark yourself:

python benchmarks/compare_performance.py --source path/to/tf/data --workers 4

Testing

See TESTING.md for how to run tests.

Authors

  • Cody Kingham
  • Dirk Roorda

License

MIT License - see LICENSE for details.

Metadata

Release files for context-fabric 0.5.8

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

Source distribution (sdist)

Source distribution for context-fabric 0.5.8
File Size Uploaded
context_fabric-0.5.8.tar.gz 143.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for context-fabric 0.5.8
File Interpreter ABI Platform
context_fabric-0.5.8-py3-none-any.whl Python 3 none any Details

Total release size: 304.6 kB

Release files / context_fabric-0.5.8.tar.gz

Download URL context_fabric-0.5.8.tar.gz
Size 143.2 kB
Tags Source
SHA-256 checksum
How to use checksums
7d48c42d627b9cfad826cf7edb19389a3bf18feb33cca44c355173f109466e0b
BLAKE2b-256 checksum
How to use checksums
0060d39ea4faa24235af35475252d900d4d95aa0364e57869cf1272527c4d9bf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Release files / context_fabric-0.5.8-py3-none-any.whl

Download URL context_fabric-0.5.8-py3-none-any.whl
Size 161.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
2ba8b276d93a9adf01e2cdd0e5ff3854222353315a85383564dba2d5933fb4d6
BLAKE2b-256 checksum
How to use checksums
6fac2911b94112e6399e6fad944d099050a30a54828543fa0788b76c7da5f608
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Release history Release notifications | RSS feed

This release

0.5.8 This release

2 release files

0.5.7

2 release files

0.5.6

2 release files

0.5.5

2 release files

0.5.3

2 release files

0.5.2

2 release files

0.5.1

2 release files

0.5.0

2 release files

0.4.1

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.0

2 release files

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