Skip to main content

Crawl OpenReview submissions and run embedding-based semantic search.

Project description

embed-papers

embed-papers crawls OpenReview submissions and runs semantic search with OpenAI embeddings.

This is a helper package for my agentic research workflow. Originally forked from gyj155/SearchPaperByEmbedding.

For Agents

CLI contract

  • stdout always prints one JSON object
  • stderr is reserved for logs/progress
  • non-zero exit codes still emit JSON on stdout

Success envelope:

{
  "ok": true,
  "schema_version": "1",
  "command": "search",
  "data": {}
}

Error envelope:

{
  "ok": false,
  "schema_version": "1",
  "command": "search",
  "error": {
    "type": "InvalidPapersFileError",
    "message": "..."
  }
}

CLI usage

Crawl

embed-papers crawl --venue-id "ICLR.cc/2026/Conference" --skip-if-exists

By default, crawl fails when zero papers are found (to catch wrong venue ids early).

Use --skip-if-exists to reuse an existing output file and skip calling OpenReview.

If --output-file is omitted, crawl defaults to:

  • ~/.cache/embed-papers/papers/<venue-id-slug>.json

Warm cache

export OPENAI_API_KEY="<your-key>"
embed-papers warm-cache \
  --papers-file iclr2026_papers.json \
  --venue-id "ICLR.cc/2026/Conference"

--papers-file is optional if --venue-id is provided. In that case, it defaults to ~/.cache/embed-papers/papers/<venue-id-slug>.json.

If --cache-dir is omitted, embeddings default to:

  • ~/.cache/embed-papers/embeddings

Search

embed-papers search \
  --papers-file iclr2026_papers.json \
  --venue-id "ICLR.cc/2026/Conference" \
  --query "foundation models for planning" \
  --top-k 20

--papers-file is optional if --venue-id is provided. In that case, it defaults to ~/.cache/embed-papers/papers/<venue-id-slug>.json.

search uses the same default embeddings cache dir (~/.cache/embed-papers/embeddings) unless --cache-dir is provided.

For Human

Make sure you have set an OPENAI_API_KEY in your shell. In the command line, run:

embed-papers host

This launches a local Streamlit UI in your browser for interactive use.

Viewer flow:

  • enter conference abbreviation + year (auto-builds venue id)
  • choose direct query or examples upload
  • set top-k and run search
  • auto-crawl papers if missing
  • auto-build embeddings cache if missing

Cache directories used by viewer:

  • ~/.cache/embed-papers/papers
  • ~/.cache/embed-papers/embeddings

Python API

1) Crawl conference papers

from embed_papers import crawl_papers

_ = crawl_papers(
    venue_id="ICLR.cc/2026/Conference",
    output_file="iclr2026_papers.json",
)

2) Warm cache / search

from embed_papers import PaperSearcher

searcher = PaperSearcher(
    papers_file="iclr2026_papers.json",
    venue_id="ICLR.cc/2026/Conference",
    model_name="text-embedding-3-large",
)

searcher.ensure_embeddings()
results = searcher.search(query="robotics planning language model", top_k=100)
searcher.display(results, n=10, show_abstract=True, abstract_max_chars=500)
searcher.save(results, "results.json")

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

embed_papers-0.4.2.tar.gz (115.9 kB view details)

Uploaded Source

Built Distribution

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

embed_papers-0.4.2-py3-none-any.whl (18.5 kB view details)

Uploaded Python 3

File details

Details for the file embed_papers-0.4.2.tar.gz.

File metadata

  • Download URL: embed_papers-0.4.2.tar.gz
  • Upload date:
  • Size: 115.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for embed_papers-0.4.2.tar.gz
Algorithm Hash digest
SHA256 e7249162724a17a77b5dd6ec7269b7a12201579198f826c4dfb7f05dacbf3e66
MD5 9f1ddcc46db96f523c573b058582ac27
BLAKE2b-256 c7ac53c342e81f9cdde1269a60d004c39dbf0f98cee2c675ac67d712e7909605

See more details on using hashes here.

Provenance

The following attestation bundles were made for embed_papers-0.4.2.tar.gz:

Publisher: release-wheel.yml on CodeBoyPhilo/Embed-Papers

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

File details

Details for the file embed_papers-0.4.2-py3-none-any.whl.

File metadata

  • Download URL: embed_papers-0.4.2-py3-none-any.whl
  • Upload date:
  • Size: 18.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for embed_papers-0.4.2-py3-none-any.whl
Algorithm Hash digest
SHA256 9facfb0e3d0fc972a1e7c66881e6cc6b7479ade53b3fa974a4dba84e1e652abd
MD5 f4582e2f71ae51d3b80eb91bcb8f7ada
BLAKE2b-256 8a44006b3e7878e963dcbcad7f193ed20c589c42cec33dba6fce65d91517ae54

See more details on using hashes here.

Provenance

The following attestation bundles were made for embed_papers-0.4.2-py3-none-any.whl:

Publisher: release-wheel.yml on CodeBoyPhilo/Embed-Papers

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