Otwarty program do sprawdzania plagiatów.
Jedyny system do wykrywania plagiatów z produkcyjną chmurą i całkowicie open source'owym silnikiem. Ten sam kod działa na noplag.com i jest dostępny na GitHubie pod github.com/NoplagLabs/noplag-engine — możesz go przejrzeć, rozwidlić, uruchomić na własnej infrastrukturze.
Ten sam commit, który sprawdzacie na noplag.com, jest na GitHubie.
Bez półśrodków w otwartoźródłowości. Bez repozytorium wyłącznie SDK z zamkniętym silnikiem. Chunker, fingerprinter, retrieval cascade i report assembler są w tym samym repozytorium Apache 2.0, które buduje nasz produkcyjny kontener.
Silnik wykrywania plagiatów napędzający noplag.com — chunking, winnowing fingerprints, retrieval cascade, alignment, składanie raportu. Apache 2.0.
- JĘZYK
- Python · Rust
- LICENCJA
- Apache 2.0
- KONTRYBUTORZY
- 38
- COMMITY
- 2 847
- OSTATNIE WYDANIE
- v0.4.2 · 3 dni temu
- CI
- przechodzi · 412 testów
Zamknięte źródła były błędem, nie funkcją.
Każdy wcześniejszy wykrywacz plagiatu prosił o zaufanie czarnej skrzynce. Zaufaj wynikowi. Zaufaj metodyce, której nie widać. Zaufaj, że algorytm nie był strojon pod Twój styl pisania. My postawiliśmy odwrotnie.
Czego nie widać, temu nie ufaj
Wynik podobieństwa to liczba bez historii. Czy to dopasowanie fragmentów, przypuszczenie parafrazy, halucynacja AI? Czy uwzględniono Twój styl ESL? Zamknięte wykrywacze nie podadzą — ich przewaga to brak pytań. Nie akceptujemy tego jako 'ceny' za detekcję plagiatów.
Produkt otwartoźródłowy, nie tylko marketing otwartoźródłowy
Repozytorium na licencji Apache 2.0 pod adresem github.com/NoplagLabs/noplag-engine nie jest okrojonym SDK klienta z zamkniętym algorytmem dopasowania. Segmentacja, odcisk palca metodą winnowing, kaskada wyszukiwania, dopasowanie, deduplikacja i generowanie raportów — wszystko buduje ten sam obraz Dockera, który działa na noplag.com. Warstwa chmurowa dodaje korpus i adaptery wyszukiwania internetowego, nie silnik.
Co to znaczy dla Państwa
Można przeczytać algorytm przed zaufaniem wynikowi. Można hostować silnik samodzielnie, jeśli dokumenty nie mogą opuścić infrastruktury. Można forknąć, jeśli nasza roadmapa się rozjedzie. Można sprawdzić, jak kawałki łączą się w ostateczny wynik — i zakwestionować to w publicznym issue, jeśli znajdą Państwo błąd.
Czterowarstwowa kaskada retrieval. Schemat, nie metafora.
Każda warstwa zmniejsza zbiór kandydatów przez kompromis koszt/celność. Każda warstwa jest w otwartym repo. Warstwa chmurowa dodaje korpus + adaptery web-search.
Winnowing fingerprints
GIN-indeksowane 64-bitowe pokrycie na bigint[] w Postgresie. Filtrowanie miliardów fragmentów do top-K w O(log n) na zapytanie.
MinHash LSH — planowane na v1.1
Przybliżony Jaccard dla parafraz i lekkich modyfikacji, by wykrywać przypadki pominięte przez L1 po rzeczywistym przekształceniu tekstu. Zaprojektowane, jeszcze nie zaimplementowane — nie ma tego w publicznym repozytorium.
Osadzenia zdań — planowane na v1.2
Wielojęzyczne wektory SBERT z pgvector ANN, do wykrywania semantycznie równoważnych przeróbek i kopiowania między językami. Zaprojektowane, jeszcze nie zaimplementowane — nie ma tego w publicznym repozytorium.
Weryfikacja w sieci na żywo
Adaptery Google + Brave sprawdzają w czasie rzeczywistym najlepsze N kandydatów bezpośrednio w internecie. Działa w warstwie chmurowej dla płatnych planów; adaptery nie są częścią pakietu open source.
noplag.toml.Co faktycznie jest w repo.
To nie wrapper SDK. Nie okrojony klient. Detekcja plagiatów w całości — ten sam układ pakietu co nasz kontener produkcyjny.
- src/noplag_engine/pakiet
- chunking/chunker zdaniowy i okienkowy
- fingerprinting/winnowing 64-bit hash
- retrieval/Obecnie L1; L2 / L3 / LW jeszcze nie są dostępne w tym pakiecie
- l1_winnowing.pyGIN-overlap top-K
- fingerprint_df.pystatystyki częstości dokumentowej
- stop_list.pyfiltr odcisków palca o niskiej rozróżnialności
- alignment/scalanie przedziałów metodą seed-and-extend
- workflows/Pipeline sprawdzania z orkiestracją czasową
- api/Interfejs HTTP FastAPI
- reports/składanie podświetleń + eksport do PDF
- tests/412 testów · pytest + property + integracyjne
- migrations/migracje schematu Alembic
- Dockerfileten sam obraz co na produkcji
- docker-compose.ymlszybki start dla self-host
- LICENSEApache 2.0
- README.mdarchitektura + szybki start
- 12,4kGwiazdek na GitHubie
- 38kontrybutorów
- 2 847commitów
- 412testów w CI
- 1:1parytet chmura/repo
Trzy rzeczy, których nie sprawdzą Państwo w zamkniętych checkerach.
Zamknięte checkery podają liczbę. Próg “plagiat czy parafraza”, wagi pokrycia n-gramów vs podobieństwa semantycznego, sposób odrzucania krótkich dopasowań — wszystko za zamkniętym kodem. Tego nie powtórzą Państwo, audytor nie sprawdzi, a bug nie ma commita, do którego wskazać.
Co można sprawdzić: każdy próg, każdą wagę, każdą regułę deduplikacji widać w src/noplag_engine/. Tagują Państwo wersję na GitHubie, znajdą commit, na którym uruchomiono sprawdzenie (nagłówek X-Engine-Commit) i prześledzą matematykę linijka po linijce.
Co się dzieje z dokumentem po przesłaniu? Czy jest przechowywany? Dodany do wspólnej bazy submissions, do której mogą trafić inni klienci? Wysłany do podwykonawcy AI-detekcji? Zamknięte systemy odpowiadają w marketingu. Nie pokażą ścieżki kodu.
Co można sprawdzić: workflows/ pokazuje każdy punkt, gdzie submission jest czytany, hashowany, zapisywany, usuwany. migrations/ — każdą kolumnę, którą dotyka. api/ — co opuszcza silnik przez sieć — i gdzie zmienić boundary w forku.
Black-box “63% podobieństwa” to wyrok bez pochodzenia. Czy to 12 fragmentów? Jeden długi akapit? Pomyłka na retrieval? Czy styl ESL Państwa jest punktowany inaczej? Wynik przychodzi; matematyki, która go wydała, nie widać.
Co można sprawdzić: alignment/ pokazuje łączenie seed-and-extend. reports/ — jak per-chunk match przerabia się na procent całościowy. Można ponowić sprawdzenie tego samego dokumentu na tym samym commicie, prześledzić każdy interwał i zakwestionować matematykę na publicznym issue na GitHub.
Dwie opcje uruchomienia tego samego silnika.
Większość użytkowników wybiera warstwę chmurową na noplag.com — zarządzany Postgres + Temporal + Coolify, korpus już zindeksowany, adaptery do wyszukiwania w sieci mają ważne klucze API. Tryb self-host jest dla organizacji, których dokumenty nie mogą opuszczać własnej infrastruktury: sklonuj repozytorium, użyj własnego Postgresa i Redisa, wskaż silnikowi własny korpus (lub zaimportuj OpenAlex + Common Crawl z naszego manifestu) i podłącz własne klucze Google/Brave. Ten sam silnik, te same algorytmy, ten sam format raportu — zmienia się tylko granica operacyjna.
Przeczytaj przewodnik self-hostPytania o otwartoźródłowość, które faktycznie dostajemy.
- Czy silnik to naprawdę ten sam kod co noplag.com?
- Tak. Dockerfile w repo buduje obraz kontenera, którego używamy. Każde sprawdzenie na noplag.com leci na tym commicie, a hash commita wraca w nagłówku X-Engine-Commit, żeby mogli Państwo powiązać sprawdzenie z wersją wydaną. Warstwa chmurowa dodaje korpus i klucze web-search API — algorytm nie jest inny.
- Dlaczego Apache 2.0, a nie AGPL czy BSL?
- Apache 2.0 pozwala firmom na własny hosting bez kosztów przeglądu prawnego. AGPL zmusiłby nas do licencjonowania jako mur, co stoi w sprzeczności z założeniem — chcemy, żeby audytorzy i forkujący mogli użyć tego kodu. Część obronną stanowi korpus i warstwa operacyjna, nie algorytm.
- Czy mogę sam hostować bez chmury?
- Tak. Sklonuj repozytorium, uruchom `docker compose up`, użyj własnego Postgresa i Redisa, zaimportuj manifest publicznego korpusu (OpenAlex + Common Crawl + Wikipedia). Adaptery Layer-W są wymienne — możesz dodać własne klucze API Google/Brave lub pominąć Layer W, jeśli wystarczy Ci dopasowanie do zindeksowanego korpusu.
- Czy Noplag Database (dokumenty zgłaszane przez użytkowników) jest otwarty?
- Nie. Noplag Database to zgłaszane dokumenty i pozostaje w warstwie chmurowej — udostępnianie na Apache 2.0 cudzych tekstów byłoby nie w porządku. Zgłoszone dokumenty są dodawane domyślnie; można to wyłączyć. Kod silnika odpyta korpus — dane nie.
- Co z detektorem AI — też otwarty?
- Tak. Wykrywanie AI pojawi się wkrótce — jest na roadmapie v1.2, nie będzie dostępne na starcie — i będzie udostępnione na tych samych zasadach co reszta: cała logika modelu perplexity, kalibracja, korekta pod ESL i zakresy werdyktów będą w src/noplag_engine/ai_detection/. Wagi modeli są otwartoźródłowe (Qwen 2.5 1.5B 4-bit na warstwie CPU, opcjonalnie Mistral 7B na GPU). W grafie wywołań nie ma zamkniętego detektora zewnętrznego.
- Jak zgłosić błąd w algorytmie dopasowania?
- Otwierają Państwo issue publiczne na GitHubie z minimalnym dokumentem reprodukującym (albo opisem błędnego interwału). Triagujemy otwarcie. Zgłoszenia bezpieczeństwa na security@noplag.com.
- Czy wersja chmurowa zawsze będzie miała algorytm jak repo?
- Tak, zgodnie z polityką. Jeśli kiedykolwiek musielibyśmy wdrożyć funkcję tylko w chmurze na potrzeby testu, byłaby ona za feature flagiem z otwartoźródłową domyślną wersją; główny algorytm pozostaje w main. Jeśli byśmy to złamali, zobaczysz to w nagłówku odpowiedzi i w publicznych release notes.
- Jaki jest model kontrybucji?
- Issues i małe PRy są mile widziane. Większe zmiany — nowe warstwy retrieval, nowe adaptery korpusu, nowe języki — zaczynamy od RFC issue, by publiczna rozmowa architektoniczna była jawna. Nie przyjmujemy PRów dodających zamknięte zależności, telemetrykę czy vendor lock-in.
- Czy istnieje hostowany self-host? (Managed Apache 2.0 deployment)
- Jeszcze nie. Plan Enterprise w chmurze daje dedykowaną infrastrukturę i własny korpus, co pokrywa większość próśb. Osobny managed-self-host jest na roadmapie v1.2.
- Czy to wpływa na ceny?
- Nie. Warstwa cloud jest wyceniana po korpusie + operacyjnych kosztach (Hetzner + Coolify + Stripe + Lago + wydatki na web-search API), nie licencji silnika. Self-host jest bez opłat. Obie opcje pozostają takie.
Przeczytaj algorytm. Potem uruchom samodzielnie.
github.com/NoplagLabs/noplag-engine jest na licencji Apache 2.0. Chmura na noplag.com działa na tym samym commicie. W obu przypadkach korzystasz z tego samego silnika — wybierz model działania odpowiedni do swoich danych.