Skip to main content

Persistent storage, dedup, metadata queries, and semantic search for acatome bundles (Postgres + pgvector)

Project description

acatome-store

Persistent storage, deduplication, metadata queries, and semantic search for scientific paper bundles.

Features

  • SQLAlchemy ORM — portable across SQLite, Postgres, MySQL
  • Refs + Papers split — identity table (refs) separate from ingested content (papers)
  • Citation graph — directed citing → cited edges, works for ingested + stub papers
  • Supplements — ingest supplementary PDFs with scoped block retrieval
  • Retractions — flag papers as retracted with notes
  • Vector search — ChromaDB (default) or pgvector (zero text duplication)
  • CLIacatome-store command for ingest, reingest, query, retract, and stats
  • Schema managementreset_schema() and reingest --drop for clean rebuilds

Installation

uv pip install -e .

With Postgres support:

uv pip install -e ".[postgres]"

Usage

from acatome_store import Store

store = Store()
ref_id = store.ingest(bundle_path)
paper = store.get(ref_id)
results = store.search_text("transformer attention", top_k=5)
# hits include paper info, block summaries, and text

CLI

acatome-store ingest /path/to/bundle.acatome    # single bundle
acatome-store ingest /path/to/dir/               # directory of bundles
acatome-store reingest                            # re-ingest all from ~/.acatome/papers/
acatome-store reingest --drop                     # drop schema + re-ingest (confirm prompt)
acatome-store reingest --path /other/dir          # custom bundle directory
acatome-store stats
acatome-store search "CO2 capture"
acatome-store list
acatome-store info doi:10.1234/example
acatome-store retract doi:10.1234/fake --note "Fabricated data"

Schema Reset

If the database schema drifts from the model (e.g. after upgrading acatome-store), use reingest --drop to drop all tables, recreate from the current SQLAlchemy model, and re-ingest all .acatome bundles. No data is lost since bundles are the source of truth.

acatome-store reingest --drop
# prompts for confirmation, then:
# 1. Drops all tables (refs, blocks, papers, links, etc.)
# 2. Recreates schema from current model
# 3. Re-ingests all bundles from ~/.acatome/papers/

Programmatically:

store = Store()
store.reset_schema()  # drop + recreate tables

Testing

uv run python -m pytest tests/ -v

License

LGPL-3.0-or-later — see LICENSE.

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

acatome_store-1.0.0.tar.gz (59.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

acatome_store-1.0.0-py3-none-any.whl (40.5 kB view details)

Uploaded Python 3

File details

Details for the file acatome_store-1.0.0.tar.gz.

File metadata

  • Download URL: acatome_store-1.0.0.tar.gz
  • Upload date:
  • Size: 59.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for acatome_store-1.0.0.tar.gz
Algorithm Hash digest
SHA256 f37523cdbf8d45aa8bfb4b133a301458bfd65330952b519f4b7f4de788607dea
MD5 c0cb79c4c943ad8f32d02a186c4e860c
BLAKE2b-256 5a796ed100c73ec865fbf4c18a203653d7ea3ca409f92ffbc6e3a71936c21ab5

See more details on using hashes here.

Provenance

The following attestation bundles were made for acatome_store-1.0.0.tar.gz:

Publisher: publish.yml on retospect/acatome-store

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file acatome_store-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: acatome_store-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 40.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for acatome_store-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7b9a96a9146f97f7f20775136b20a1dfeca0a9c462d722f32e22a2ed60117705
MD5 87e2fb2f9a6e5a47a08579fc7c2a3dd4
BLAKE2b-256 f8103f19b29a752e98c578d6e2199f2be662cdc36f1fe09e4b55ba7a2809c16e

See more details on using hashes here.

Provenance

The following attestation bundles were made for acatome_store-1.0.0-py3-none-any.whl:

Publisher: publish.yml on retospect/acatome-store

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page