Kristian Rickert created OPENNLP-1911:
-----------------------------------------

             Summary: Add reproducible evaluation tooling for bounded in-memory 
embedding search
                 Key: OPENNLP-1911
                 URL: https://issues.apache.org/jira/browse/OPENNLP-1911
             Project: OpenNLP
          Issue Type: New Feature
            Reporter: Kristian Rickert
            Assignee: Kristian Rickert


Add a reproducible evaluation harness for the bounded, single-JVM vector 
indexes provided by OpenNLP.

The harness should compare exact full-precision search with TurboQuant search 
over a documented corpus. It should measure quantization fidelity, proxy 
retrieval quality, build time, single-thread query throughput, and serialized 
storage footprint.

The evaluation uses tasks that can be reproduced without manually labeled 
relevance judgments, including definition-to-headword retrieval and retrieval 
of one passage segment from another segment of the same passage. These are 
diagnostic proxy tasks, not claims of general search quality.

Include a Lucene HNSW comparison as a test-scope baseline. Lucene must not 
become a runtime dependency or a shipped OpenNLP search provider (lucene 
support would be better scoped for OpenNLP gRPC after it lands or during 
development on another ticket). The comparison exists to distinguish exact 
scan, quantized scan, and graph-index tradeoffs.

Results should be emitted in both human-readable Markdown and machine-readable 
TSV forms. Corpus acquisition and normalization must have explicit provenance, 
licensing documentation, and reproducible commands.
h3. Acceptance criteria
 - Provide a command for evaluating an OpenNLP static embedding model over a 
bounded passage corpus.
 - Compare exact full-precision and TurboQuant indexes using the same vectors 
and queries.
 - Report:
 ** recall at k against the exact index
 ** rank-1 agreement
 ** definition-to-headword retrieval
 ** half-passage retrieval
 ** index build time
 ** single-thread query throughput
 ** serialized storage footprint per vector
 ** total and indexable input counts
 - Emit equivalent Markdown and TSV reports.
 - Make randomized operations deterministic through an explicit seed.
 - Define and test handling of:
 ** empty inputs
 ** zero embeddings
 ** {{k}} larger than an index
 ** malformed corpus records
 ** missing or duplicate identifiers
 ** non-finite measurements
 - Include reproducible corpus acquisition and normalization tooling.
 - Record corpus provenance, source URLs, snapshots or checksums, and licensing.
 - Provide small repository fixtures so tests do not require network access.
 - Include a Lucene HNSW comparison only in test scope.
 - Ensure the shipped OpenNLP module gains no Lucene runtime dependency.
 - Document exact commands for reproducing the reports.
 - Describe benchmark numbers as measurements from a particular environment, 
not universal performance guarantees.

h3. Out of scope
 - A production Lucene or HNSW provider
 - General web, lexical, or hybrid search evaluation
 - Distributed search evaluation
 - Persistent search services
 - Claims about production relevance without labeled judgments
 - Comparing every available ANN implementation
 - Treating serialized index size as JVM memory consumption
 - gRPC service benchmarks

h3. Dependencies
 - OPENNLP-1877, static embeddings
 - OPENNLP-1895, quantized vector storage
 - The new bounded in-memory {{VectorIndex}} ticket



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to