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
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 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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e7249162724a17a77b5dd6ec7269b7a12201579198f826c4dfb7f05dacbf3e66
|
|
| MD5 |
9f1ddcc46db96f523c573b058582ac27
|
|
| BLAKE2b-256 |
c7ac53c342e81f9cdde1269a60d004c39dbf0f98cee2c675ac67d712e7909605
|
Provenance
The following attestation bundles were made for embed_papers-0.4.2.tar.gz:
Publisher:
release-wheel.yml on CodeBoyPhilo/Embed-Papers
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
embed_papers-0.4.2.tar.gz -
Subject digest:
e7249162724a17a77b5dd6ec7269b7a12201579198f826c4dfb7f05dacbf3e66 - Sigstore transparency entry: 947446420
- Sigstore integration time:
-
Permalink:
CodeBoyPhilo/Embed-Papers@4042f2cc53b5323e9b6c19b3b1ea344871bc6a1e -
Branch / Tag:
refs/tags/v0.4.2 - Owner: https://github.com/CodeBoyPhilo
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release-wheel.yml@4042f2cc53b5323e9b6c19b3b1ea344871bc6a1e -
Trigger Event:
push
-
Statement type:
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9facfb0e3d0fc972a1e7c66881e6cc6b7479ade53b3fa974a4dba84e1e652abd
|
|
| MD5 |
f4582e2f71ae51d3b80eb91bcb8f7ada
|
|
| BLAKE2b-256 |
8a44006b3e7878e963dcbcad7f193ed20c589c42cec33dba6fce65d91517ae54
|
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
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
embed_papers-0.4.2-py3-none-any.whl -
Subject digest:
9facfb0e3d0fc972a1e7c66881e6cc6b7479ade53b3fa974a4dba84e1e652abd - Sigstore transparency entry: 947446422
- Sigstore integration time:
-
Permalink:
CodeBoyPhilo/Embed-Papers@4042f2cc53b5323e9b6c19b3b1ea344871bc6a1e -
Branch / Tag:
refs/tags/v0.4.2 - Owner: https://github.com/CodeBoyPhilo
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release-wheel.yml@4042f2cc53b5323e9b6c19b3b1ea344871bc6a1e -
Trigger Event:
push
-
Statement type: