v0.4.2Wersja produkcyjna — ten sam commit co dzisiaj na noplag.com

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.

github.com/NoplagLabs/noplag-engineApache 2.012 400 gwiazdek
REPOZYTORIUM

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.

noplag/enginePubliczne
Gwiazdka12,4kFork892

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
ZAŁOŻENIE

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.

01

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.

02

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.

03

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.

ARCHITEKTURA

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.

L1OTWARTE

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.

latencja~12ms / fragment
gdzieengine/retrieval/l1_winnowing.py
L2OTWARTE

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.

latencjav1.1
gdziejeszcze nie ma w publicznym repozytorium
L3OTWARTE

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.

latencjav1.2
gdziejeszcze nie ma w publicznym repozytorium
LWOTWARTE

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.

latencja~2,2s / dokument
gdziewarstwa chmurowa — nie ma w publicznym repozytorium
v1.0 zawiera L1 + LW. L2 w v1.1. L3 w v1.2. Kolejność kaskady konfigurowalna w noplag.toml.
OPEN CORE

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.

engine/main
  • 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
CO JEST OTWARTE
Chunking + fingerprintingkażdy algorytm, każdy próg
Retrieval L1 / L2 / L3logika punktowania i indeksowania
Adaptery web-liverate-limit, parsing, ranking
Alignmentseed-and-extend, merge, dedupe
Składanie raportuoznaczenia, matematyka podobieństwa
HTTP API + schematyPydantic, FastAPI endpoints
CO TYLKO W CHMURZE
KorpusOpenAlex + Common Crawl + Noplag Database (150M+ dokumentów)
Klucze web-search APIGoogle + Brave; własna konfiguracja w trybie self-host
Rozliczenia + authStripe + Better Auth; wymienne w self-host
Zarządzany Postgres + TemporalHetzner + Coolify ops
  • 12,4kGwiazdek na GitHubie
  • 38kontrybutorów
  • 2 847commitów
  • 412testów w CI
  • 1:1parytet chmura/repo
ŚLAD AUDYTOWY

Trzy rzeczy, których nie sprawdzą Państwo w zamkniętych checkerach.

01 · ALGORYTM

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.

02 · PRZEPŁYW DANYCH

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.

03 · WYNIK SIMILARNOŚCI

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.

CHMURA vs WŁASNY HOSTING

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-host
FAQ

Pytania 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.

Otwarty program do sprawdzania plagiatów — silnik Apache 2.0 — Noplag