Inschigniaria · transparenta
Metodologia
Co che OpenCaseLaw chatta, ponderescha e verifitgescha decisiuns giudicialas svizras — da la fin a la fin, cun mintga ponderaziun e mintga valur da sava revelada. Questa pagina è la referenza decisiva; quai che Vus legias autruvi duessi correspunder a quai ch'è qua fixà — uschiglio vala il code.
1. Corpus & actualisaziun
Il corpus cumpiglia 1’050’000+ decisiuns giudicialas svizras publitgadas da 118 dretgiras, en trais linguas (DE 499’642; FR 459’825; IT 90’776), cun in temp da 1875 – 2026. Otg dretgiras federalas (BGer 192’049; BVGer 108’135; BGE 50’459; plinavant BStGer, BPatGer, MKG e dapli), 26 giurisdicziuns chantunalas sco er la CEDH-Svizra (~2’800 decisiuns da translaziuns BGE, HUDOC, chombra/gronda chombra/cumissiun).
Mintga decisiun vegn obtegnida da sia funtauna primara — nua disponibel dal portal da publicaziun da la dretgira sezza (tut ils 26 chantuns vegnan retschavids directamain via LexWork / SIL / ZH OpenData / TI RL, cun ina opziun da return PDF LexFind che cumplettescha decrets mancants en 4 chantuns), per actualisaziuns federalas dal back-end da tschertga uffizial dal TF. 40 dals 51 shards d'entscheidsuche.ch vegnan spievlads da noss agens scrapers directs; las datas d'entscheidsuche s'imponan tar la deduplicaziun mo là nua che nus n'avain betg in agen equivalent en temp real. Ils set ulteriurs shards exclusivs d'entscheidsuche (≈142’000 endataziuns: vd_findinfo, vd_omni, ch_vb, sg_gerichte, be_bvd, be_weitere, be_steuerrekurs) èn archivs istorics serrads — lur portals a muntada èn vegnids serrads, remplazzads u temporarmain serrads. Nus legian entscheidsuche mintga emna sco assicuranza da cumplettadad; ils ultims sis runs emnils n'han dà nagina nova decisiun. Vesair Cuvertura → archivs cumplementars per la repartiziun cumpletta. Il pipeline s'actualisescha tenor trais plans da temp:
- Mintga 15 minutas ils dis da lavur da las 05:00–16:00 UTC — il poller BGer publitgescha novas decisiuns federalas incrementalmain en la banca da datas viva, entaifer paucas minutas suenter lur libraziun da vart da la dretgira.
- Mintga di a las 01:00 UTC — mintga scraper chantunal activ gira; ina politica da soft-fail è collià als 5 scrapers federals critics ed a in valur da sava da quota d'errurs da 15 % sur ils ulteriurs.
- Mintga di a las 03:30 UTC — reconstrucziun cumpletta da FTS5, reconstrucziun dal graf da citaziuns, gate da qualitad, actualisaziun da statisticas, midada atomara senza temp da fastiz. Ils workers cuntinueschan a servir la banca da datas existenta fin che la nova ha surpassà la controlla d'integritad.
Il corpus cumplain vegn ultra da quai publitgà sco Parquet sin Hugging Face (voilaj/swiss-caselaw) sut CC0; il delta da mintgadi vegn agiuntà automaticamain.
2. Index dal text cumplain
SQLite FTS5 cun il tokenizer unicode61 remove_diacritics 2. La tabella da las decisiuns nutrescha l'index via questas colonnas, cun pais BM25 per colonna calibrads empiricamain cunter in golden set da 100 dumondas:
| Colonna | Pais BM25 | Motivaziun |
|---|---|---|
| title | 6.0 | Il segnal il pli ferm — curt, conscient. |
| regeste | 5.5 | Resumaziun tematica da la dretgira sezza. |
| docket_number | 2.0 | Per il retschav exact via il numer da dossier. |
| full_text | 1.2 | Lung, cun canera — anker, betg motor. |
| court / canton / language / decision_id | 0.8 | Metadatas, betg cuntegn. |
L'index vegn reconstruì atomaramain: build_fts5.py scriva en decisions.db.tmp e remplazza lura il file via os.replace(). Workers che dovran l'URI SQLite ?immutable=1 mantegnan lur handles da file averts sin l'inode vegl fin ch'els sa collieschan danovamain — la midada resta invisibla per lecturs activs.
build_fts5.py · pais BM25 configurads en mcp_server.py enturn las lingias 431–442 · tokenizer diacritic spievlà en decision_structure.db per la tschertga per alinea.
3. Chapientscha da la dumonda
Ina dumonda en lingua natirala n'arriva mai a FTS5 nunelavurada. Avant passa ella tras ina nettegiada (_sanitize_fts5): apostrofs, lingias da partiziun e puncts senza segn da pled vegnan reducids a spazis; tokens reservads (AND, OR, NOT, NEAR) restan mo mantegnids sch'els han operands sin omaduas varts; il sulet token giuridic svizzer «OR» (scursanida per il dretg d'obligaziuns) vegn adina forzà en virgulettas, uschiglio vegniss el interpretà sco operatur boolean.
En parallel vegn la dumonda manada a Claude Haiku 4.5 per ina analisa structurada da 2 secundas: renviaments giuridics, noziuns dotrinalas en DE/FR/IT, menziuns da BGE decisivs, sinonims ed il sectur giuridic vegnan extrahids sco JSON deterministic. L'output vegn memorisà tenor la dumonda en minusclas per la durada da la sesida.
Trais normalisaziuns rendan il vocabulari giuridic svizzer tschertgabel tras sias variantas stilisticas, ortograficas e translinguisticas:
- Tokenisaziun insensibla a diacritics. Il tokenizer FTS5
unicode61 remove_diacritics 2stizza diacritics tar l'index sco tar la dumonda — uschia battan «Prüfung», «PRÜFUNG» ed ina dumonda per «Prufung» tut la medema glista da resultats. - Unifitgaziun da las scripturas d'umlaut. La scrittura senza diacritics
ae/oe/ue(derasada en sentenzas pli veglias ed en mintga ambient avant Unicode) vegn reducida aa/o/u, quai che il tokenizer unifitgescha lura cun ilsä/ö/üliberads da diacritics. Uschia chatta «Pruefung» er «Prüfung». - Expansiun da sinonims tras LLM. L'analisa structurada da Claude Haiku producescha 2–4 noziuns giuridicas alternativas en DE/FR/IT per dumonda, spontanamain — betg ord ina tabella statica. Uschia vegn «qualité pour recourir» colliada cun «Beschwerdebefugnis» / «Beschwerdelegitimation» / «legittimazione», era sche Vossa dumonda cuntegneva mo ina da quellas.
4. Retschav & fusiun
La dumonda sa derasa en 10–12 strategias che giran sco dumondas FTS5/graf independentas. Mintga strategia porta in pais; il resultat da rang 1 d'ina strategia ed il resultat da rang 1 d'in'autra vegnan fusionads cun agid da la Reciprocal Rank Fusion (constanta da rang RRF = 60).
| Strategia | Pais | Effect |
|---|---|---|
| nl_and | 1.8 | AND en lingua natirala sur las noziuns. |
| raw | 1.5 | Dumonda pled per pled. |
| regeste_focus | 1.4 | Limità a la colonna da la regesta. |
| nl_or | 1.2 | Opziun da return OR (interrupziun baud conscienta dals custs). |
| structured_doctrine | 1.1–3.5 | Noziuns dotrinalas da l'analisa Haiku. |
| quoted_explicit | 1.1 | Correspundenza da frasa sche virgulettas vegnan renconuschidas. |
| nl_or_expanded | 1.0 | OR + expansiun da sinonims / umlauts / composits. |
| title_focus | 0.95 | Correspundenza limitada a la colonna dal titel. |
| doctrine_regeste / doctrine_title | 2.5 / 1.6 | Strategias per translatar noziuns. |
Sur FTS5 ora retschaiva il medem pool RRF era:
- Candidats dal graf legislativ — decisiuns colliadas cun ils artitgels da lescha parsads ord la dumonda, integrads sco glista da rang parallela.
- Tschertgas BGE directas — sche la dumonda (u sia analisa) numna in renviament BGE precis, vegn questa decisiun fixada a la spitza.
- Correspundenzas dal numer da dossier — sequenzas sco
6B_1234/2025vegnan manadas ad ina tschertga exacta dal numer da dossier, quai che surpassa la gronda part dal pipeline.
Il pool da candidats fusionà vegn dimensiunà dinamicamain (da standard ~300–400 per ina dumonda top-50) e limità a 2’500 lingias avant il cumenzament da la reponderaziun.
5. Reponderaziun
Mintga candidat retschaiva in vector da segnals; il valur final è ina cumbinaziun lineara calibrada cunter il golden set. Pais dals segnals (_rerank_rows):
| Segnal | Pais | Limits / remartgas |
|---|---|---|
| Valur RRF | 32.0 | Aggregat da tut ils rangs da strategia. |
| Numer da dossier exact / parzial | 6.0 / 2.0 | Correspundenza a nivel da la sequenza dal numer da dossier. |
| Cuvertura dal titel | 3.0 | Part dals tokens da la dumonda en il titel. |
| Cuvertura da la regesta | 3.0 | Il medem, cunter la regesta. |
| Menziuns da leschas | 3.5 · 0.5 · 2.0 | Colliaziuns da decisiun ad artitgel. |
| Correspundenzas da citaziun | 2.4 · 0.30 · 1.2 | Cumprovas da citaziun tranter ils resultats. |
| Autoritad (citaziuns entrantas) | 0.03 · 1.0 | Pertge ch'ina decisiun da princip crescha. |
| Concordanza linguistica | +2.0 | Sche la lingua dal resultat correspunda a quella da la dumonda. |
| Cuvertura extendida | 1.5 / 0.8 | Credit per correspundenzas da sinonims + composits. |
| Euristicas dal sectur giurisdicziunal | ±0.2 – +1.7 | Ponderaziun asil-BVGer + dretgira suprema-BGer en cas d'intenziun correspundenta. |
Suenter il scorer linear vegn activà sche necessari in passagi da reponderaziun tras LLM:
- Model: Claude Haiku 4.5; Top-N: 15; timeout: 3 s; pais: 3.0 cun reducziun lineara
w × max(0, 1 − rang/15). - In gate da confidenza sursegl cumplettamain la clamada sche il valur lexical top-1 correspunda gia a ≥ 2× il valur top-2 (la resposta è univoca; la reponderaziun è mo cust).
- Il passagi vegn ultra da quai sursagliì tar dumondas dal numer da dossier (ina correspundenza exacta na dovra nagin LLM).
6. Endrins exacts en funcziun · matg 2026
Mintgin dals tschintg meglers resultats da tschertga e mintgin dals trais meglers resultats da decisiuns da princip porta in champ pinpoint che numna il considerand il pli relevant per la dumonda (alinea cun la decisiun giuridica). Il resolver curra sur in index FTS5 d'alineas per decisiun en decision_structure.db (≈8,8 mio. alineas sur 807’000 decisiuns). Il design a duas fasas:
- Passagi per frasa. La dumonda vegn exequida sco frasa FTS5 exacta — auta precisiun sche la formulaziun da l'utilisader correspunda a quella da la dretgira.
- Passagi OR bag-of-words. Sche la frasa na furnescha nagut, vegnan ils medems tokens sblundregiads sco dumonda OR, per in retschav pli vast.
In scorer da confidenza (_score_pinpoint_confidence) cumbinescha trais segnals independents per marcar il resultat:
- Distanza BM25. Valur da rang 1 sur quel da rang 2; ina relaziun > 1,5 dat «aut», > 1,2 dat «mez».
- Forza absoluta. Tar correspundenzas d'ina suletta lingia senza rang 2 per la cumparegliaziun: |BM25| absolut > 2,0 per «aut», > 1,0 per «mez». Ina versiun pli veglia da questa rama dovrava per correspundenzas d'ina suletta lingia in valur sentinella da 999,0, che augmentava taciturnamain correspundenzas flaivlas a «aut»; quai era l'errur da fauss'confidenza reparada en matg 2026.
- Cuvertura da tokens. Tokens univocs da la dumonda (> 2 caracters, cun ~70 pleds vids generics dal discurs giuridic svizzer filtrads) che cumparan en l'alinea chattà. Dumondas cun plirs tokens ed ina cuvertura < 50 % vegnan suprimidas dal tut; < 70 % vegn limità a «mez».
Salvament semantic infrastructura derasada · corpus ~33 % codifitgà entervegn sche il passagi lexical na furnescha nagut. La dumonda vegn codifitgada cun sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2 (117 mio. parameters, vectors normads da 384 dimensiuns, plurilingual DE/FR/IT/RM plus 47 ulteriurs); la sumeglientscha cosinus vegn calculada sur las < 300 integraziuns d'alineas da la decisiun; in resultat cumpara sco «aut» sche il cosinus ≥ 0,70, sco «mez» tar ≥ 0,55, uschiglio nagin. In modus hibrid, activà suenter la conclusiun da la codificaziun, lascha currer omadus segnals e tracta la concordanza sin il medem considerand sco cumprova tranter ils segnals — la confidenza vegn auzada a «aut», source: "hybrid_agreement".
L'URL da pinpoint è construì uschia che il navigatur sa serra automaticamain a l'alinea chattà e l'auzescha or: ?highlight=<frasa pled per pled>&e=2.3#e-2-3. Il parameter da dumonda controllescha in'evidenziaziun da vart dal server; il fragment hash declantscha il scrollar automatic natural dal navigatur.
7. Graf da citaziuns
Il text da mintga decisiun vegn parsà per citaziuns d'autras decisiuns (renviaments BGE, numers da dossier BGer, renviaments BVGer). Il nivel brut cuntegna 8,65 mio. lingias; il resolver auza 8,09 mio. da quellas (92,9 %) sin IDs da decisiun canonics. Ils restants 7 % èn decisiuns realas che nus n'avain anc betg (BGE pli vegls avant 1875, publicaziuns giudicialas retratgas, renviaments donnegiads tras OCR).
La resoluziun sa fa en quatter passagis en cascada:
- Join standard dal numer da dossier. Numer da dossier normalisà da la citaziun = numer da dossier normalisà da la finamira. Cuvra dapli che 80 % da las lingias.
- Prefix BGE bidirecziunal. Chatta correspundenzas independentamain dal fatg sche la citaziun cuntegna il prefix
BGEu betg, intgant che la finamira po esser memorisada en omaduas furmas. Questa suletta correctura da mars 2026 ha quasi triplitgà la resoluziun dals BGE. - Numers BGE nivs. Finamiras che correspundan a
volum partiziun paginavegnan tractadas sco renviaments BGE nivs e prefixadas cunBGE. - Resoluziun da pin-cite. Sch'ina citaziun cuntegna in numer da pagina che n'è betg avant maun en nossas finamiras (p.ex.
BGE 125 V 352, nua che la emprima pagina è 351), tschertgain nus la pli gronda emprima pagina ≤ 352 entaifer il medem (volum, partiziun) ed entaifer 30 paginas. La confidenza vegn reducida da 0,10 per reflectar la conclusiun.
Autoritad la pli citada (calculada viva ord reference_graph.db ils 2026-05-11): BGE 125 V 351 cun 85’108 citaziuns entrantas, suandà da BGE 134 V 231 e BGE 122 V 157, mintgamai en l'urden da diesch milli. Quests dumbers returnan sco segnal d'autoritad en la reponderaziun da tschertga (pais 0,03 per citaziun, limità a 1,0) — perquai crescan decisiuns da princip classicas vers ensi, era sche lur correspundenzas linguisticas n'èn betg pli fermas che quellas dad auters candidats.
8. Garanzia da qualitad
Mintga publicaziun da notg vegn assicurada tras in rahmenwerk da QS da 4 nivels. L4 (il gate da publicaziun che exequescha la sutquantitad CRITICA da L1) è la bloccada dira: sche el faglia, vegn la midada refusada ed ils utilisaders mantegnan il corpus dad ier fin che il problem è examinà. Ils auters nivels èn assicuranzas cuntinuantas — L2 curra tar mintga commit en CI, L3 mintga 5 minutas sin il server viv.
- L1 — controllas dal set da datas (63 sur 20 moduls). Drift per dretgira, renconuschientscha da duplicats, renconuschientscha da text curt / OCR, quota da resoluziun dal graf da citaziuns, cuvertura da las colliaziuns da leschas, plausibilitad da data / numer da dossier, dumbri da champs mancants sco er controlla a chaschun tras LLM sin ina selecziun rotanta.
- L2 — suite pytest (actualmain 516 surpassads). Tests da unitad cuvran mintga primitiva da parsing, dedup e ranking; novas regressiuns vegnan agiuntadas sco novs tests tenor il muster «incident → test da regressiun».
- L3 — smoke test (mintga 5 minutas). Sonda da sanadad da producziun:
/health, ina pagina da decisiun-anker ed il pipeline d'export PDF. Trais insetgns consecutivs escaleschan ad in alarm INVESTIGATE. - L4 — gate da publicaziun. Da las controllas L1 ston quellas marcadas sco CRITICAS surpassar avant che il nov corpus vegn commità e pushà; sch'ina faglia, refusescha la publicaziun la midada e las datas dad ier restan vivas. Il dashboard sin /quality.html mussa l'ultim status ed il decurs da mintga controlla.
Sur la QS ora passan ils workflows LLM che citeschan decisiuns tras in audit final da tschintg binaris (attest_response) che chatscha quatter classas d'alluschinaziun — citaziun inventada, citat inventà, text da lescha inventà, data inventada — sco er in tschintgavel derschader da grounding facultativ, che controllescha sche l'affirmaziun che l'LLM ha attribuì ad in alinea citada vegn propi sustegnida dal text da quel alinea.
9. Testà ed sbittà
Decisiuns tecnicas vegnan pli fidablas sche las stradas senza ischida èn visiblas. Las suandantas tecnicas èn vegnidas mesiradas sin il medem golden set sco il rest e n'han betg merità lur plaz:
- Reponderaziun tras cross-encoder (
cross-encoder/mmarco-mMiniLMv2-L12-H384-v1sco plazzategnent actual) sbittà Cross-encoders plurilinguals trenads sin QA web generic na sa transferivan betg net sin il vocabulari giuridic svizzer sin il golden set — els donnegiavan l'MRR enstagl dad gidar. Il gidonz resta en il code suenter_apply_cross_encoder_boostsper experiments da fine-tuning futurs, ma na vegn betg clamà en producziun. - Vectors diens BGE-M3 prefabritgads sbittà Il corpus codifitgà, l'RRF vectorial agiuntà sco quarta strategia. Nagina meglieraziun envers BM25 + RRF + Haiku, cun nagin pais vectorial. La
vectors.dbè vegnida allontanada en mars 2026. Las integraziuns semanticas per alinea furnidas questa emna èn in intervent separà e pli stretg — ellas valiteschan mo entaifer las alineas d'ina suletta decisiun, nua che BM25 ha limits bain enconuschents. - Top-N Haiku pli grond sbittà La reponderaziun dal top-30, top-50 enstagl dal top-15 n'ha purtà nagin gudogn da MRR ed in augment linear dals custs. Il top-15 è il punct optimal empiric per la reponderaziun manada da la confidenza.
- Pool da candidats pli grond sbittà Engrondir il pool sur ~400 candidats (tar dumondas standard) n'ha betg movì il recall en moda notabla; la cumbinaziun da FTS5 + RRF fa gia vegnir ils dretgs candidats a la surfatscha entaifer las emprimas pèr tschient resultats. Il limit da 2’500 resta sco limit da segirezza.
10. Access avert
Il corpus è CC0 (dedicaziun al domain public). Il code è sut MIT, hostà sin github.com/jonashertner/opencaselaw — mintga ponderaziun, mintga valur da sava e mintga euristica da questa pagina è controllabla en il code da funtauna. Nagins contos, nagins cookies; tge che il server registrescha, inclusiv dumondas da tschertga, e per quant temp, è documentà en la decleraziun da protecziun da datas: /datenschutz/.
Access programmatic:
- API REST. mcp.opencaselaw.ch/docs — OpenAPI 3.0.3 cun 47 puncts finals (tschertga, retschav, decisiuns da princip, tendenzas, graf da citaziuns, decrets, cumentaris, Botschaft, exports, endrins exacts, attestaziun).
- Server MCP. mcp.opencaselaw.ch/sse — transport Server-Sent Events che porscha 38 utensils. Collià da Claude, ChatGPT (OpenAI MCP), Cursor, Microsoft Copilot Studio, Perplexity e auters.
- Set da datas Hugging Face. voilaj/swiss-caselaw — shards Parquet, publitgads mintga di sco delta.
- Add-in Word. opencaselaw.ch/word/ — add-in Office per Microsoft Word; porscha il medem stack da tschertga + pinpoint entaifer il document.
Questa pagina spievla il sistem viv. Sche Vus chattais ina divergenza tranter quai ch'è descrit qua e quai che il code da funtauna di, vala il code da funtauna — avrid in issue, e nus correzin in dals dus.