Summary

After the benchmark showed text-embedding-3-small as the practical hosted winner and MPNet as the strongest local baseline, I started turning the experiment into the actual retrieval pipeline. The goal was to stop treating the benchmark as a one-off experiment and make the chosen model usable in the product workflow.

Decision

Use text-embedding-3-small as the production default embedding model for Signora retrieval.

Keep all-mpnet-base-v2 as the local/offline fallback and baseline.

The reasoning is simple: text-embedding-3-small led the core retrieval metrics in the benchmark while being cheaper than text-embedding-3-large. MPNet remains important because it is the strongest local baseline and produced the strongest held-out local abstention result.

What changed in the code

I added a production retrieval model adapter:

This file defines explicit embedding profiles:

I added the production index builder:

This builds dataset/index/ from the processed feedback atoms. By default, it uses text-embedding-3-small. It also writes a self-describing index_manifest.json recording the embedding profile, model name, backend, corpus hashes, document recipe, record count, embedding dimensions, and ranking defaults.

I added the production query script:

This loads the generated index, uses the same embedding model recorded in the manifest, embeds the user query, ranks atoms with dense semantic similarity plus keyword fusion, applies metadata filters, deduplicates results by feedback ID and statement, and returns citation-ready atom/feedback evidence.