Find the source.
Make the next decision clearer.
Give a team a useful starting point in its documents. This case shows how I compare search methods and decide whether the extra complexity earns its place.
Independent implementation · Measured public-data evaluation
The next decision needs the right source.
A useful document may use different words from the question. A team needs to find the relevant source, inspect it and recognise when search has not found enough.
What I built
An evaluated retrieval pipeline comparing keyword, embedding and combined search over the same documents. It keeps the sources and missed results visible, so the method can be chosen on evidence.
Does the AI method actually help?
Queries with at least one judged relevant source in the first ten results. The combined method found one for eight more queries; embedding search alone did not beat keyword search overall.
Choose the extra complexity only when it earns its place- 01Start with a question
- 02Search the collection
- 03Compare the sources
- 04Inspect what was missed
5,183 documents and 300 judged queries. All rankings and failures are retained. The combined method was added after the first results, so its improvement still needs a fresh test.
Independent implementation on attributed public data. The code, source records and complete evaluation are inspectable; confidential freelance work is described separately.
Inspect the evaluation belowWhat the build covers.
Document processing, three retrieval methods, comparative evaluation and source-linked inspection.
Prepare the collection
Process titles and abstracts with retained document identities, source checksums and explicit text limits.
Implement the retrieval
Build keyword and embedding search, then combine their ranked candidates without treating different score scales as interchangeable.
Compare and document
Evaluate every judged query, preserve the misses and expose the original source records with reproducible scripts.
The browser explores recorded benchmark searches. Private document ingestion, access controls and generated answers are outside this implementation.
Python · BM25 · pretrained embeddings · ONNX Runtime · retrieval evaluation · React · TypeScript
Project scope and implementation notes