Перевірка на плагіат з відкритим програмним кодом.
Єдиний продукт для перевірки текстів на плагіат із хмарним рівнем для продакшену та повністю open source рушієм. Той самий код, що працює на noplag.com, доступний на GitHub за адресою github.com/NoplagLabs/noplag-engine — ви можете його перевірити, форкнути, розгорнути на власній інфраструктурі.
Той самий коміт, який Ви бачите на noplag.com, — це і є коміт на GitHub.
Жодних «майже відкритих» компромісів. Жодного репозиторію лише з SDK, коли рушій закритий. Chunker, fingerprinter, retrieval cascade і report assembler — усе це в одному репозиторії Apache 2.0, з якого збирається наш продакшен-контейнер.
Модуль виявлення плагіату, що використовується на noplag.com: розбиття на фрагменти, створення відбитків методом winnowing, каскадне пошукове вилучення, вирівнювання та формування звіту. Ліцензія Apache 2.0.
- МОВИ
- Python · Rust
- ЛІЦЕНЗІЯ
- Apache 2.0
- АВТОРИ
- 38
- КОМІТИ
- 2,847
- ОСТАННІЙ ВИПУСК
- v0.4.2 · 3 дні тому
- CI
- passing · 412 tests
Закритий код був багом, а не фічею.
Кожний перевірювач до нас змушував довіряти «чорній скриньці». Довіряти балу. Довіряти незрозумілій методології. Вірити, що алгоритм не підлаштовано під флагування Вашого стилю письма. Ми вибрали протилежну позицію.
Те, чого не бачите, не можна перевірити
Симілярність — це цифра без доказів її походження. Це збіг за перекриттям речень, спроба визначити перефразування, чи псевдоіндикатор від AI? Чи враховано Ваш стиль як автора ESL? Закриті перевірювачі не покажуть — їхній плюс у тому, що Ви не можете спитати. Для нас це неприйнятна ціна перевірки на плагіат.
Продукт з відкритим програмним кодом, а не просто маркетинг відкритого коду
Репозиторій Apache 2.0 на github.com/NoplagLabs/noplag-engine — це не спрощена клієнтська SDK з алгоритмом пошуку збігів у закритому коді. Chunker, winnowing fingerprinter, retrieval cascade, вирівнювання, дедуплікація та формування звіту — усе це збирається в той самий Docker-контейнер, що працює на noplag.com. Хмарний рівень додає корпус і адаптери для веб-пошуку, але не рушій.
Що це означає для Вас
Читайте алгоритм перш ніж довіряти результату. Запускайте рушій локально, якщо Ваші документи не можуть залишати інфраструктуру. Форкайте, якщо наш roadmap Вам не підходить. Перевіряйте, як інтервали chunk-ів зливаються в одну цифру симілярності — і відкрито не погоджуйтесь із нами у публічній issue, якщо знайдете баг.
Чотиришарова retrieval-каскад. Діаграма, не метафора.
Кожен шар відсіює кандидатів, змінюючи співвідношення точності до вартості. Кожен шар — у відкритому репозиторії. Хмара додає корпус і web-search адаптери.
Winnowing- відбитки
GIN-індексований 64-бітний оверлап для bigint[] колонок у Postgres. Відсіює мільярди chunk-ів до топ-K за O(log n) на запит.
MinHash LSH — дорожня карта v1.1
Приблизний Jaccard для парафразованих і злегка змінених копій, щоб знаходити те, що L1 пропускає після реального перефразування. Запроєктовано, але ще не реалізовано — у відкритому репозиторії цього немає.
Sentence embeddings — дорожня карта v1.2
Багатомовні вектори SBERT із pgvector ANN для виявлення семантично еквівалентних перефразувань і копіювання між мовами. Запроєктовано, але ще не реалізовано — у відкритому репозиторії цього немає.
Перевірка в живому вебі
Адаптери Google і Brave перевіряють топ-N кандидатів у реальному часі через живий веб. Працює лише в хмарному рівні для платних тарифів; ці адаптери не входять до open source-пакету.
noplag.toml.Що реально у репозиторії.
Не SDK-обгортування. Не обрізаний клієнт. Весь алгоритм виявлення — ті ж пакети, що формують наш продакшн-контейнер.
- src/noplag_engine/пакет
- chunking/sentence- і віконні chunker-и
- fingerprinting/winnowing 64-бітні хеші
- retrieval/Зараз L1; L2 / L3 / LW у цьому пакеті ще немає
- l1_winnowing.pyGIN-оверлап топ-K
- fingerprint_df.pyстатистика частоти документів
- stop_list.pyфільтр недискримінативних відбитків
- alignment/злиття інтервалів методом seed-and-extend
- workflows/Конвеєр перевірки з оркестрацією за часом
- api/HTTP-інтерфейс FastAPI
- reports/підсвічування збігів + експорт у PDF
- tests/412 тестів · pytest + property + інтеграційні
- migrations/міграції схеми Alembic
- Dockerfileідентичний образу у продакшн
- docker-compose.ymlшвидкий старт для самостійного розгортання
- LICENSEApache 2.0
- README.mdархітектура + швидкий старт
- 12.4kGitHub зірок
- 38автори
- 2,847коміти
- 412тестів у CI
- 1:1cloud / repo відповідність
Три речі, які закритий перевірювач не дає перевірити.
Закриті перевірювачі просто повертають цифру. Поріг «плагіат чи перефразування», коефіцієнт між n-грамами й семантичним схожістю, правила відкидання коротких збігів — усе це у закритому коді. Відтворити не вийде, аудитор не перевірить, а баг ніколи не матиме публічного коміту як джерела.
Що Ви можете перевірити: кожен поріг, коефіцієнт, dedupe-правило знаходиться в src/noplag_engine/. Відкрийте реліз із тегом на GitHub, знайдіть точний коміт, із яким було зроблено перевірку (значення у X-Engine-Commit заголовку), і вичитайте формули построково.
Куди пішов Ваш документ після відправки? Його зберегли? Додали у спільну базу для інших клієнтів? Надіслали третьому AI-постачальнику для оцінки? Закриті сервіси можуть лише написати про це у маркетингу — кодові шляхи ніколи не покажуть.
Що Ви можете перевірити: пакет workflows/ показує кожну точку, де документ зчитують, хешують, зберігають, видаляють. migrations/ показує усі колонки, куди було звернення. api/ показує, що залишає рушій по мережі — й що можна змінити у форку.
«63% схожості» у чорній скриньці — це вердикт без контексту. Це 63% за 12 короткими фрагментами? Один абзац? Помилка retrieval? Ваш стиль як ESL-автора вагується окремо? Ви отримаєте оцінку, але формулу, що її дала, — ні.
Що Ви можете перевірити: alignment/ показує seed-and-extend merge інтервалів. reports/ — як збіг по chunk-ах перетворюється в фінальний відсоток. Ви можете зіставити той самий документ з тією самою версією, перевірити кожен інтервал, не погодитись із формулою у GitHub-issue.
Два способи запуску одного й того ж ядра.
Більшість користувачів обирають хмарний рівень на noplag.com — керований Postgres + Temporal + Coolify, корпус уже проіндексовано, адаптери для веб-пошуку мають чинні API-ключі. Self-host підходить організаціям, чиї документи не можуть залишати власну інфраструктуру: клонувати репозиторій, підключити власні Postgres і Redis, вказати рушію власний корпус (або імпортувати OpenAlex + Common Crawl з нашого маніфесту) і підключити власні ключі Google/Brave. Той самий рушій, ті ж алгоритми, той самий формат звіту — змінюється лише межа експлуатації.
Читати гайд по запуску self-hostРеальні питання про відкритий код, які ми отримуємо.
- Дійсно ядро таке саме, як на noplag.com?
- Так. Dockerfile в репозиторії збирає container, який іде у деплой. Кожна перевірка на noplag.com виконується цією ж версією коду, її хеш приходить у заголовку X-Engine-Commit, щоб Ви могли віднести перевірку до версії з тегом. Хмарний рівень додає корпус і API ключі — алгоритм той самий.
- Чому Apache 2.0, а не AGPL чи BSL?
- Apache 2.0 дає можливість організаціям самостійно розгортати без юридичних головоломок. AGPL прив'язав би нас до стратегії «ліцензія як бар’єр», а це суперечить нашій позиції — ми хочемо, щоб аудитори й форки реально користувались цим. Вартість не в алгоритмі, а в корпусі й інфраструктурі.
- Можна запускати self-host, повністю без хмари?
- Так. Клонуйте репозиторій, запустіть `docker compose up`, підключіть власні Postgres і Redis, імпортуйте маніфест публічного корпусу (OpenAlex + Common Crawl + Wikipedia). Адаптери Layer W підключаються окремо — додайте власні API-ключі Google/Brave або пропустіть Layer W, якщо потрібна лише перевірка по проіндексованому корпусу.
- Noplag Database (залиті користувачем документи) відкритий?
- Ні. Noplag Database містить користувацькі надходження й залишається лише у хмарі — відкривати документи інших під Apache 2.0 було б очевидно неправильно. За замовчуванням документи додаються до корпусу — Ви можете відмовитись, це вимикається. Ядро, що його запитує, відкрите; дані — ні.
- AI-детектор теж буде відкритий?
- Так. Виявлення ШІ з’явиться незабаром — це у дорожній карті v1.2, не буде доступне на старті — і буде відкритим, як і все інше: підключення perplexity-моделі, калібрування, корекція ESL-упередженості та діапазони вердиктів будуть у src/noplag_engine/ai_detection/. Ваги моделі також відкриті (Qwen 2.5 1.5B 4-bit для CPU-рівня, опційно Mistral 7B для GPU-рівня). Жодного закритого стороннього детектора у call graph.
- Як подати баг у алгоритмі збігу?
- Створіть публічну issue на GitHub з прикладом документа-мінімалкою (або просто опишіть помилковий фрагмент). Ми тріажимо відкрито. Питання безпеки пишіть спочатку на security@noplag.com.
- Хмарний рівень завжди буде з тим же алгоритмом, що і репозиторій?
- Так, це політика. Якщо нам коли-небудь доведеться додати поведінку лише для хмари для експерименту, вона буде за feature flag із відкритим кодом за замовчуванням; основний алгоритм залишається в main. Якщо це зміниться, ви побачите це у заголовку відповіді та у публічних реліз-нотах.
- Яка модель контрибуції?
- Issues і невеликі PR — вітаються. Для великих змін — нові retrieval-шари, адаптери, мови — почніть із RFC-issue, щоб обговорення архітектури було відкритим. Ми не приймаємо PR з закритими залежностями, телеметрією або вендор-локіном.
- Є managed self-host? (Керований Apache 2.0 deployment)
- Ще ні. На cloud tier у Enterprise є виділена інфраструктура й BYO-корпус — це покриває більшість запитів. Окремий managed-self-host SKU буде у roadmap v1.2.
- Вартість зміниться?
- Ні. Вартість cloud tier визначає корпус + оперування (Hetzner + Coolify + Stripe + Lago + API веб-пошуку), а не ліцензія рушія. Self-host безкоштовний. Обидва так і залишаться.
Читайте алгоритм. Потім запускайте самостійно.
github.com/NoplagLabs/noplag-engine поширюється за ліцензією Apache 2.0. У хмарі на noplag.com використовується той самий коміт. Обидва варіанти дають однаковий рушій — оберіть спосіб розгортання, який відповідає вашим вимогам до даних.