Atvirojo kodo plagijavimo tikrinimo įrankis.
Vienintelis plagijavimo tikrinimo produktas su gamybine debesijos pakopa ir visiškai atviro kodo varikliu. Tas pats kodas, kuris veikia noplag.com, yra GitHub adresu github.com/NoplagLabs/noplag-engine — galite jį peržiūrėti, išsišakoti, diegti savo infrastruktūroje.
Tas pats commit, kurį tikrinate noplag.com, yra GitHub'e.
Jokių „atvirojo kodo“ dviprasmybių. Jokių tik SDK saugyklų, kai variklis lieka uždaro kodo. „Chunker“, „fingerprinter“, paieškos kaskada ir ataskaitų generatorius yra tame pačiame Apache 2.0 saugykloje, kuri naudojama mūsų gamybiniam konteineriui kurti.
Plagiato aptikimo variklis, naudojamas noplag.com — chunkinimas, winnowing pirštų atspaudai, retrieval kaskada, sulyginimas, ataskaitų sudarymas. Apache 2.0.
- KALBA
- Python · Rust
- LICENCIJA
- Apache 2.0
- DALYVIAI
- 38
- KOMITAI
- 2 847
- NAUJAUSIAS LEIDIMAS
- v0.4.2 · prieš 3 dienas
- CI
- praeita · 412 testų
Uždaro kodo buvo trūkumas, ne privalumas.
Iki mūsų visos plagiato tikrinimo sistemos prašė pasitikėti juodu dėžute. Pasitikėti skaičiumi. Pasitikėti metodika, kurios nematote. Pasitikėti, kad algoritmas nebuvo sureguliuotas per daug žymėti jūsų rašymo stilių. Pasirinkome priešingą kelią.
Ko nematote, tuo nepasitikite
Panašumo skaičius — tai tik skaičius be aiškaus pagrindo. Ar tai buvo sakinio dubliavimas, parafrazė, AI-detektoriaus klaida? Ar buvo atsižvelgta į jūsų ESL rašymo stilių? Uždaro kodo tikrintojai to neatskleidžia — jų privalumas IR YRA, kad negalite klausti. Mes nesutinkame, kad tai būtų plagiato tikrinimo kaina.
Atvirojo kodo produktas, o ne atvirojo kodo rinkodara
Apache 2.0 saugykla github.com/NoplagLabs/noplag-engine nėra supaprastintas kliento SDK, kur tikrinimo algoritmas paslėptas už uždaro kodo. Segmentavimas, winnowing pirštų atspaudų kūrimas, paieškos kaskada, sulyginimas, dublikatų šalinimas ir ataskaitų generavimas — visa tai sudaro tą patį Docker konteinerį, kuris veikia noplag.com. Debesijos pakopa prideda korpusą ir žiniatinklio paieškos adapterius, bet ne variklį.
Ką tai reiškia jums
Perskaitykite algoritmą prieš pasitikėdami rezultatu. Diekite variklį savo infrastruktūroje, jei dokumentai negali jos palikti. Fork'inkite, jei mūsų kelias skiriasi nuo jūsų. Audituokite, kaip chunk lygio intervalai virsta panašumo skaičiumi — ir viešai nesutikite GitHub issue, jei radote klaidą.
Keturių lygių retrieval kaskada. Diagrama, ne metafora.
Kiekvienas sluoksnis mažina kandidatų kiekį nuo pigiausio iki brangiausio tikslumo etapo. Visi sluoksniai atviri repo. Debesis prideda korpusą + paieškos adapterius.
Winnowing pirštų atspaudai
GIN-indeksuotas 64-bitų sutapimas per bigint[] stulpelius Postgres. Filtruoja milijardus chunk'ų iki top-K per O(log n) užklausą.
MinHash LSH — v1.1 planas
Apytikslis Jaccard rodiklis aptinka parafrazuotas ir šiek tiek pakeistas kopijas, kad būtų galima rasti tai, ko L1 neaptinka po tikro perrašymo. Sukurta, bet dar neįgyvendinta — viešoje saugykloje nėra.
Sakinio įterpiniai — v1.2 planas
Daugiakalbiai SBERT vektoriai su pgvector ANN semantiškai lygiaverčiams perrašymams ir kopijavimui tarp kalbų. Sukurta, bet dar neįgyvendinta — viešoje saugykloje nėra.
Tikrinimas su gyvu žiniatinkliu
Google ir Brave adapteriai realiu laiku tikrina geriausius N kandidatus internete. Veikia debesijos plane mokantiems naudotojams; adapteriai nėra atvirojo kodo paketo dalis.
noplag.toml.Kas iš tikrųjų yra repozitorijoje.
Ne SDK apvalkalas. Ne apkarpytas klientas. Visas tikrinimo algoritmas — tokia pati struktūra kaip gamybiniame konteineryje.
- src/noplag_engine/paketas
- chunking/sakinyje + slenkanti lango chunk'eriavimas
- fingerprinting/winnowing 64 bitų hash'ai
- retrieval/Šiuo metu L1; L2 / L3 / LW šiame pakete dar nėra
- l1_winnowing.pyGIN-overlap top-K
- fingerprint_df.pydokumentų dažnio statistika
- stop_list.pynediskriminuojančių pirštų atspaudų filtras
- alignment/seed-and-extend intervalų sujungimas
- workflows/Temporal pagrindu orkestruota tikrinimo seka
- api/FastAPI HTTP sąsaja
- reports/paryškinimo surinkimas + PDF eksportas
- tests/412 testų · pytest + property + integraciniai
- migrations/Alembic schemos migracijos
- Dockerfiletaip pat kaip gamybinis įvaizdis
- docker-compose.ymlsavavaldžio diegimo greitoji pradžia
- LICENSEApache 2.0
- README.mdarchitektūra + greitoji pradžia
- 12,4 tūkst.GitHub žvaigždžių
- 38dalyvių
- 2 847komitų
- 412testų CI
- 1:1debesis / repo atitikimas
Trys dalykai, kurių uždaro kodo tikrintojas neleis jums patikrinti.
Uždari tikrintojai grąžina tik skaičių. Kur riba tarp „plagiato ir parafrazės“, kaip vertinamas n-gramų sutapimas ar semantinis panašumas, kaip atmetami trumpi atitikmenys — viskas lieka paslėpta. Negalite atkurti, auditorius negali peržiūrėti, o klaidos atveju nėra reference commit'o.
Ką galite patikrinti: visi slenksčiai, visi svoriai, visos deduplikacijos taisyklės yra src/noplag_engine/. Atverkite pažymėtą leidimą GitHub'e, raskite commit'ą, ant kurio buvo atliktas jūsų tikrinimas (nurodytas X-Engine-Commit antraštėje), ir peržiūrėkite matematiką eilute po eilutės.
Kur nukeliavo jūsų dokumentas po pateikimo? Buvo išsaugotas? Įkeltas į bendrą duomenų bazę, prieinamą kitam klientui? Nusiųstas trečiajai šaliai AI-detektoriui? Uždaro kodo tikrintojai atsako rinkodaros tekstais. Kodo kelio parodyti negali.
Ką galite patikrinti: workflows/ paketas rodo visas vietas, kur įvyksta įkėlimas, hash'inimas, saugojimas ir ištrynimas. migrations/ kataloge matysite visas liečiamas stulpelius. api/ rodo, kas išeina per tinklą — ir kur galima keisti ribą fork'e.
Juodos dėžės „63 % panašumo“ yra nuosprendis be pagrindo. Ar 63 % — dėl 12 trumpų fragmentų? Vienos pastraipos? Retrieval klaidos? Ar jūsų ESL rašymo stilius įvertinamas kitaip? Skaičius gaunate, bet matematikos, kuri jį pagamino, — ne.
Ką galite patikrinti: alignment/ rodo intervalų jungimą seed-and-extend metodu. reports/ parodo, kaip atskiri atitikmenys susumojami į bendrą procentą. Galite iš naujo paleisti tą patį dokumentą ant to paties commit'o, apžiūrėti kiekvieną intervalą, nesutikti su skaičiavimu viešame GitHub issue.
Du būdai paleisti tą patį variklį.
Dauguma naudotojų renkasi debesijos planą noplag.com — valdomas Postgres, Temporal ir Coolify, korpusas jau indeksuotas, o žiniatinklio paieškos adapteriai turi galiojančius API raktus. Savarankiškas diegimas skirtas organizacijoms, kurių dokumentai negali palikti jų infrastruktūros: nukopijuokite repozitoriją, naudokite savo Postgres ir Redis, nurodykite varikliui savo korpusą (arba importuokite OpenAlex ir Common Crawl iš mūsų manifesto), prijunkite savo Google/Brave raktus. Tas pats variklis, tie patys algoritmai, ta pati ataskaitos struktūra — keičiasi tik veikimo riba.
Perskaitykite savarankiško diegimo instrukcijąKlausimai apie atvirąjį kodą, kuriuos iš tikrųjų gauname.
- Ar variklis tikrai toks pat kaip noplag.com?
- Taip. Repo Dockerfile surenka konteinerį, kurį ir paleidžiame. Kiekvienas tikrinimas noplag.com paleidžiamas ant to commit'o, o commit'o hash grįžta X-Engine-Commit antraštėje, kad galėtumėte prisegti tikrinimą prie žymėto leidimo. Debesis prideda korpusą ir paieškos raktus — algoritmas nesiskiria.
- Kodėl Apache 2.0, o ne AGPL ar BSL?
- Apache 2.0 leidžia organizacijoms diegtis patiems be teisinės rizikos. AGPL verstų mus naudoti licenciją-kaip-užtvarą strategiją, o tai prieštarauja mūsų požiūriui — norime, kad auditoriai ir fork'intojai iš tikrųjų naudotų šį kodą. Svarbiausia saugoma dalis — korpusas ir operacinis lygmuo, ne algoritmas.
- Ar galima įsidiegti visiškai be debesies paslaugos?
- Taip. Nukopijuokite repozitoriją, paleiskite `docker compose up`, naudokite savo Postgres ir Redis, importuokite viešojo korpuso manifestą (OpenAlex, Common Crawl, Wikipedia). Layer-W adapteriai yra keičiami — galite įdėti savo Google/Brave API raktus arba visai nenaudoti Layer W, jei reikia tik indeksuoto korpuso atitikmenų.
- Ar Noplag Database (pateikti naudotojų dokumentai) atviri?
- Ne. Noplag Database sudaro naudotojų įkelti dokumentai, jie lieka tik debesies sluoksnyje — Apache-2.0'inti kitų žmonių tekstus būtų tiesiog neteisinga. Įkėlus dokumentai pagal nutylėjimą įtraukiami, galima atsisakyti. Variklio kodas, kuris juos pasiekia, yra atviras; duomenys — ne.
- O kaip AI detektorius — irgi bus atviras?
- Taip. AI aptikimas bus netrukus — jis numatytas v1.2 veiksmų plane, bet paleidimo metu dar neveiks — ir bus pateikiamas atvirai kaip ir visa kita: sudėtingumo modelio sujungimas, kalibravimas, ESL šališkumo korekcija ir sprendimo ribos bus src/noplag_engine/ai_detection/ kataloge. Pačių modelių svoriai yra atvirojo kodo (Qwen 2.5 1.5B 4-bit CPU sluoksnyje, pasirinktinai Mistral 7B GPU sluoksnyje). Jokio uždaro trečiųjų šalių detektoriaus kvietimų grandinėje.
- Kaip pranešti apie bug'ą tikrinimo algoritme?
- Atviras GitHub issue su minimaliai atkuriamu dokumentu (arba aprašykite klaidingą atitikmenį). Triage vyksta viešai. Saugumo nesklandumams — security@noplag.com.
- Ar debesies paslauga visada veiks su tokiu pat algoritmu kaip repo?
- Taip, pagal politiką. Jei kada nors reikėtų įdiegti tik debesijai skirtą funkcionalumą eksperimentui, jis būtų už funkcijos žymos su atvirojo kodo numatytąja reikšme; pagrindinis algoritmas liktų pagrindinėje šakoje. Jei to nesilaikytume, tai matytumėte atsakymo antraštėje ir viešuose leidimo užrašuose.
- Kokia prisidėjimo tvarka?
- Issue ir smulkūs PR laukiami. Didesniems pakeitimams — nauji retrieval sluoksniai, korpuso adapteriai, naujos kalbos — pradėkite nuo RFC issue, kad architektūros diskusija būtų vieša. PR su uždaro kodo priklausomybėmis, telemetrija ar vendor lock-in nepriimami.
- Ar yra priglobtas savarankiškas diegimas? (Valdomas Apache 2.0 diegimas)
- Kol kas ne. Įmonių planas debesyje siūlo dedikuotą infrastruktūrą ir BYO korpusą, tai atitinka dažniausius klausimus. Pilnai valdomas diegimas roadmap'e v1.2.
- Kaip tai įtakoja kainodarą?
- Nedaro. Debesies paslauga apmokestinama už korpusą + veiklos kaštus (Hetzner + Coolify + Stripe + Lago + paieškos API išlaidos), ne už variklio licenciją. Savarankiškas diegimas — nemokamai. Abu taip ir liks.
Perskaitykite algoritmą. Paleiskite patys.
github.com/NoplagLabs/noplag-engine yra Apache 2.0 licencijuotas. Debesijos versija noplag.com naudoja tą patį commit. Abu variantai suteikia tą patį variklį — pasirinkite veiklos ribas pagal savo duomenis.