A
B
Upload a document as the current user. Your position and department are stored from your profile, not from the form. Fill in an example below, or paste your own text.
Title
Text
Source
Owner (accountable)
Country (empty = all)
Department
Site
Language
Tags (comma separated)
Last updated
Valid from
Valid until
Share with groups (only groups you belong to)
Scenario
A payroll consultant searches for double holiday pay and finds three versions: an official 2025 policy, a copy pasted from Teams with a different percentage, and an old intranet FAQ. Which one should they trust?
The pipeline
- Access control. PostgreSQL row-level security only returns documents shared with your groups. Hidden documents never take a slot in the results. See What I can see.
- Filters (optional). Country, department, source, language, tag, in force on a date. Run in SQL before ranking.
- Relevance. Keyword = BM25 computed in SQL (shows matched terms). Meaning = multilingual embeddings in pgvector (Dutch queries find English documents). Hybrid fuses both rankings with reciprocal rank fusion.
- Rerank (optional). A cross-encoder (multilingual jina-reranker-v2) reads the question together with each of the top 20 candidates and re-scores them. More accurate than the first pass, too slow to run on everything, so it only sees the shortlist.
- Context ranking. Each result is scored against who you are and how trustworthy it is. Every adjustment is a sentence you can read: green reasons, amber warnings. Switch each signal off in the sidebar to see its effect.
- Duplicate detection on upload. Near-copies notify the uploader, the other uploader and group managers, without naming documents they cannot read.
Context signals and weights
| Signal | Up | Down |
|---|---|---|
| country | +30% your country | −50% another country |
| department | +20% your department | −20% another department |
| location | +10% your site | |
| validity | −60% expired, −30% not yet valid | |
| freshness | +20% updated within a year | −30% older than 3 years |
| source | +20% official policy | −10% Teams / email / chat |
| owner | −10% no accountable owner | |
| uploader | +10% uploaded by a manager of its group |
Final score = relevance × (1 + sum of adjustments), never below 10% of relevance. With rerank on, relevance is the cross-encoder's score (0 to 100%).