Describe the retrieval that runs, not the one that is designed - #14
Merged
Conversation
The stack card explained a design decision for a component that is not wired. psycopg and the pgvector Python package are declared in praxis's api extra and imported nowhere in its source tree; src/praxis/index/ is a lone schema.sql; and docker-compose starts a db service the app does not depend on and never connects to. What actually serves dense retrieval is a matrix-vector product over vectors held in memory and cached to disk, with a pure standard-library fallback so the offline image and CI run without NumPy at all. The card now says that, and names the Postgres path as designed rather than present. This was my error: I inferred the architecture from the compose file and the extras instead of reading the retrieval path, which is the mistake rule three exists to prevent. Context and the options for closing the gap: DrobyshevDev/praxis#26.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The Stack card explained a design decision for a component that is not wired.
psycopgand the Pythonpgvectorpackage are declared in praxis'sapiextra and imported nowhere.docker-compose.ymlstarts adbservice theappservice does notdepends_onand never connects to.What actually serves dense retrieval, per its own docstring in
retrieve/dense.py, is a matrix-vector product over vectors held in memory and cached to disk, with a pure standard-library fallback so the offline image and CI run without NumPy at all.What the card says now
FastAPI · NumPy, describing that path, and naming the Postgres index as designed and not yet wired — the schema is in the repository, the retriever is not.Why this matters more than a wording fix
The eval figures this site prints — recall@5 0.92, MRR 0.94 — come from the NumPy path. A reader who sees "Postgres · pgvector" reasonably assumes they were measured on an HNSW index with
vector_cosine_ops. The numbers are honest about what they measured; the stack line was not honest about what produced them.This was my error rather than an inherited one: I inferred the architecture from the compose file and the extras instead of reading the retrieval path. That is precisely the mistake rule three exists to prevent, on the page that prints rule three.
Context and the three options for closing the gap: DrobyshevDev/praxis#26.
Verified
check_site.pypasses on all four pages. "Postgres" now appears once per language page, in the sentence that says it is not connected.