Plagiatkontroll med öppen källkod.
Den enda plagiatkontrollen med ett produktionsklart molnlager och en helt öppen källkodsmotor. Samma kod som körs på noplag.com finns på GitHub på github.com/NoplagLabs/noplag-engine — granska, forka eller självhosta den.
Samma commit du kontrollerar på noplag.com är commiten på GitHub.
Ingen "nästan öppen källkod". Inget SDK-endast repo där motorn är stängd. Chunker, fingerprinter, retrieval cascade och rapportgenerator finns alla i samma Apache 2.0-repo som bygger vår produktionscontainer.
Motorn för plagiatkontroll som driver noplag.com — chunking, winnowing fingerprints, retrieval cascade, alignment och rapportmontering. Apache 2.0.
- SPRÅK
- Python · Rust
- LICENS
- Apache 2.0
- BIDRAGARE
- 38
- COMMITS
- 2,847
- SENASTE SLÄPP
- v0.4.2 · 3 dagar sedan
- CI
- godkänd · 412 tester
Stängd källkod var en bugg, inte en funktion.
Alla andra plagiatkontroller ville att De skulle lita på en black box. Lita på poängen. Lita på metodologin De inte kan se. Lita på att algoritmen inte var inställd för att överflagga deras skrivstil. Vi valde motsatt väg.
Det De inte kan granska, kan De inte lita på
En likhetspoäng är bara en siffra utan ursprung. Var det meningsmatchning, parafrasgissning, AI-detektor-“hallucination”? Var deras ESL-skrivstil kalibrerad för? Stängda kontroller säger inget — deras fördel ÄR att De inte kan fråga. Vi accepterar inte det som priset för plagiatkontroll.
Produkt med öppen källkod, inte bara marknadsföring om öppen källkod
Apache 2.0-repot på github.com/NoplagLabs/noplag-engine är inte ett nedbantat klient-SDK där matchningsalgoritmen är dold. Chunker, winnowing-fingerprinter, retrieval-cascade, alignment, deduplicering och rapportgenerering bygger alla samma Docker-container som körs på noplag.com. Molnlagret lägger till korpus och webbsöksadaptrar, inte motorn.
Vad det innebär för er
Läs algoritmen innan De litar på poängen. Självhosta motorn på egen infrastruktur om dokument inte kan lämna den. Forka vår kod om våra planer skiljer sig från Deras behov. Granska hur chunk-intervaller slås samman till ett likhetstal — och invänd öppet om De hittar en bugg.
Fyra lager retrieval-cascade. Diagram, inte metafor.
Varje lager minskar kandidatuppsättningen utifrån billigare-mot-dyrare noggrannhet. Varje lager är fullt öppet. Molnet lägger till korpus + webbsöksadaptrar.
Winnowing-fingerprints
GIN-indexerad 64-bitars överlappning på bigint[]-kolumner i Postgres. Filtrerar miljarder chunkar ner till top-K i O(log n) per fråga.
MinHash LSH — v1.1-plan
Approximerad Jaccard för parafraserade och lätt modifierade kopior, för att hitta det L1 missar efter verklig omformulering. Designad, men ännu inte implementerad — finns inte i det publika repot.
Meningsinbäddningar — v1.2-plan
Flerspråkiga SBERT-vektorer med pgvector ANN, för semantiskt likvärdiga omskrivningar och kopiering mellan språk. Designad, men ännu inte implementerad — finns inte i det publika repot.
Webbverifiering i realtid
Google- och Brave-adaptrar kontrollerar de N bästa kandidaterna mot webben i realtid. Körs i molnlagret för betalda planer; adaptrarna ingår inte i open source-paketet.
noplag.toml.Vad som faktiskt finns i repot.
Ingen SDK-omslag. Ingen avskalad klient. Detekteringsalgoritmen i sin helhet — samma paketupplägg som bygger produktionscontainern.
- src/noplag_engine/paketet
- chunking/menings- + glidande fönsterchunker
- fingerprinting/winnowing 64-bitars hash
- retrieval/L1 idag; L2 / L3 / LW ingår ännu inte i detta paket
- l1_winnowing.pyGIN-overlapp top-K
- fingerprint_df.pystatistik för dokumentfrekvens
- stop_list.pyfilter för icke-diskriminerande fingeravtryck
- alignment/seed-and-extend-intervall-sammanslagning
- workflows/Temporalt orkestrerad kontrollkedja
- api/FastAPI HTTP-gränssnitt
- reports/markeringssammanställning + PDF-export
- tests/412 tester · pytest + property + integration
- migrations/Alembic-schemaändringar
- Dockerfilesamma image som produktion
- docker-compose.ymlsnabbstart för egen drift
- LICENSEApache 2.0
- README.mdarkitektur + snabbstart
- 12.4kGitHub-stjärnor
- 38bidragare
- 2,847commits
- 412tester i CI
- 1:1moln-/repo-paritet
Tre saker en stängd plagiatkontroll aldrig kan låta er granska.
Stängda kontroller levererar bara en siffra. Tröskelvärde för “plagiat vs parafras”, vikten mellan n-gram-överlapp och semantisk likhet, hur korta träffar ignoreras — allt bakom stängd kod. De kan inte reproducera den, revisor kan inte granska, och en bugg får aldrig ett referens-commit.
Vad De kan granska: alla trösklar, alla vikter, alla dedupe-regler finns i src/noplag_engine/. Öppna en taggad release på GitHub, hitta exakta committen som kördes (i X-Engine-Commit-headern), och läs matematikrad för rad.
Vart tog Deras dokument vägen efter inlämning? Sparades det? Lades det till i en databas en annan kund kan se? Skickades det till ett AI-detekteringsbolag för granskning? Stängda kontrollanter kan svara endast genom marknadsföringstexter, inte kod.
Vad De kan granska: workflows/-paketet visar varje ställe en inlämning läses, hashas, lagras och rensas. migrations/-katalogen visar alla kolumner som berörs. api/-paketet visar vad som lämnar motorn över nätet — och var De kan byta ut gränsen i en fork.
En blackbox-”63% lik” är en slutsats utan ursprung. Var det 63% i 12 korta fragment? Ett långt stycke? Fel i träff? Vägs Deras ESL-skrivstil annorlunda? Poängen kommer, men matematiken bakom syns aldrig.
Vad De kan granska: alignment/ exponerar seed-and-extend-slagningslogik. reports/ visar hur chunk-träffar summeras till ett totalt procenttal. De kan köra samma dokument mot samma commit, inspektera alla intervall, och invända öppet mot matten.
Två sätt att köra samma motor.
De flesta väljer molnlagret på noplag.com — hanterad Postgres + Temporal + Coolify, korpusen är redan indexerad och webbsöksadaptrarna har giltiga API-nycklar. Självhostning är för organisationer vars dokument inte får lämna den egna infrastrukturen: klona repot, använd egen Postgres och Redis, peka mot egen korpus (eller importera OpenAlex + Common Crawl från vår manifestfil), och koppla in egna Google/Brave-nycklar. Samma motor, samma algoritmer, samma rapportformat — bara den operativa gränsen flyttas.
Läs självhost-guidenDe frågor om öppen källkod vi faktiskt får.
- Är motorn verkligen samma kod som på noplag.com?
- Ja. Dockerfilen i repot bygger den container vi kör. All kontroll på noplag.com kör det commit, och commit-hashen returneras i X-Engine-Commit-headern så att De kan binda en kontroll till en taggad release. Molnnivån lägger till korpus och webbsöks-API-nycklar — inte annan algoritm.
- Varför Apache 2.0 och inte AGPL eller BSL?
- Apache 2.0 låter organisationer självhosta utan juridisk genomgång. AGPL skulle tvinga oss till licens-som-mur, vilket strider mot målet — vi vill att granskare och forkers ska kunna använda detta. Det skyddsvärda är korpus och drift, inte algoritmen.
- Kan jag självhosta utan molnnivån?
- Ja. Klona repot, kör `docker compose up`, använd egen Postgres + Redis och importera manifestet för publika korpusar (OpenAlex + Common Crawl + Wikipedia). Layer-W-adaptrarna är utbytbara — lägg in egna Google/Brave API-nycklar, eller hoppa över Layer W helt om du bara behöver matchning mot indexerad korpus.
- Är Noplag Database (inskickade användardokument) öppet?
- Nej. Noplag Database innehåller användarinlämningar och finns endast på molnnivån — Apache-2.0 på andras dokument vore uppenbart fel. Inskickade dokument läggs till i det som standard; De kan stänga av det. Motorkoden som frågar det är öppen; datan är det inte.
- Kommer AI-detektorn vara öppen också?
- Ja. AI-detektering kommer snart — det finns på v1.2-roadmapen, men är inte aktivt vid lansering — och levereras öppet som allt annat: koppling till perplexity-modellen, kalibrering, ESL-biasjustering och bedömningsintervall finns i src/noplag_engine/ai_detection/. Modellvikterna är öppna (Qwen 2.5 1.5B 4-bit på CPU-lagret, valfri Mistral 7B på GPU-lagret). Ingen sluten tredjepartsdetektor i anropskedjan.
- Hur rapporterar jag en bugg i matchningsalgoritmen?
- Öppna ett publikt GitHub-issue med ett minimalt testdokument (eller beskriv det falska intervallet/flaggan). Vi triagerar öppet. Säkerhetsproblem går till security@noplag.com först.
- Kommer molnnivån alltid köra samma algoritm som repot?
- Ja, enligt policy. Om vi någonsin skulle behöva lansera molnspecifik funktionalitet för ett experiment, skulle det ligga bakom en feature flag med öppen källkod som standard; huvudalgoritmen ligger kvar i main. Om vi avviker från det syns det i response header och i publika release notes.
- Hur funkar bidragsmodellen?
- Issues och små PR är välkomna. För större ändringar — nya retrieval-lager, nya korpusadaptrar, nya språk — börja med RFC-issue så att diskussionen är öppen. Vi accepterar inte PR som lägger till stängda beroenden, telemetri hem, eller vendor lock-in.
- Finns det hostad självhost? (Managerad Apache 2.0)
- Inte än. Enterprise-planen på molnnivån ger dedikerad infrastruktur och BYO-korpuset, vilket täcker det mesta folk frågar efter. En managerad-självhost-version finns i v1.2-roadmap.
- Påverkar det här prissättningen?
- Nej. Molnnivån prissätts på korpus + driftkostnad (Hetzner + Coolify + Stripe + Lago + webbsöks-API-kostnad), inte motorns licensiering. Självhost är gratis. Båda förblir så.
Läs algoritmen. Kör den själv.
github.com/NoplagLabs/noplag-engine är Apache 2.0. Molntjänsten på noplag.com kör samma commit. Båda alternativen ger dig samma motor — välj den driftsgräns som passar din data.