FindDocs
Lokalna wyszukiwarka dokumentów korporacyjnych dla Windows 11. Indeksuje dokumenty z SharePointa i z katalogów lokalnych, a następnie pozwala je przeszukiwać dokładnie, semantycznie i hybrydowo. Wszystko dzieje się na komputerze użytkownika: dokumenty, zapytania i embeddingi nie opuszczają maszyny.
Co to potrafi
- Wyszukiwanie dokładne zwraca wszystkie dokumenty zawierające podane słowo,
frazę, nazwisko, datę, kwotę lub numer rachunku. Bez ukrytego limitu wyników.
Numer
00 1234 5678 9012 3456 7890 1234,00-1234-...i zapis ciągły trafiają w te same dokumenty. Data24.07.2015,2015-07-24i24 lipca 2015również. - Wyszukiwanie semantyczne znajduje dokumenty powiązane znaczeniowo, nawet jeśli nie zawierają tych samych słów. Model jest polski i działa na CPU.
- Wyszukiwanie hybrydowe łączy oba podejścia metodą Reciprocal Rank Fusion, zachowując wartości dosłowne z zapytania jako warunek obowiązkowy.
- OCR uruchamiany tylko wtedy, gdy dokument nie ma użytecznej warstwy tekstowej. Wynik jest oznaczany, żeby dało się odróżnić go od tekstu natywnego.
- Raport pokrycia pokazuje, czego nie udało się zaindeksować i dlaczego. Jeśli choć jeden dokument jest niewyszukiwalny, aplikacja nie twierdzi, że zbiór jest kompletny.
Obsługiwane formaty
PDF (z warstwą tekstową i skanowany), DOCX, DOC, XLSX, XLS, CSV, TSV, TXT, HTML, RTF, EML, MSG wraz z załącznikami, PNG, JPEG, TIFF, BMP, GIF, WEBP.
Szczegóły, poziom wsparcia i ograniczenia każdego formatu: docs/formaty.md.
Instalacja dla użytkownika
Uruchom instalator FindDocs-0.1.0-instalator.exe. Instalacja nie wymaga
uprawnień administratora. Po zakończeniu aplikacja jest dostępna w menu Start.
Nie trzeba uruchamiać żadnego serwera ani wpisywać adresu w przeglądarce.
Pełna instrukcja: docs/instrukcja-uzytkownika.md.
Instalacja przez pip
Wymagany Python 3.11 lub 3.12 na Windows 11.
pip install finddocs
Silnik OCR jest opcjonalny i instaluje się jako dodatek:
pip install "finddocs[ocr-rapid]"
Po instalacji polecenie finddocs-gui uruchamia interfejs graficzny,
a finddocs daje dostęp do poleceń administracyjnych. Wyszukiwanie dokładne
działa od razu. Wyszukiwanie semantyczne i hybrydowe wymaga modelu embeddingów:
przygotuj go według sekcji o uruchomieniu developerskim (potrzebne jest
sklonowane repozytorium ze skryptem eksportu), a następnie umieść katalog
modelu w %LOCALAPPDATA%\FindDocs\models albo wskaż go w konfiguracji.
Szybki start bez SharePointa
Aplikacja ma wbudowany zbiór demonstracyjny z fikcyjnymi polskimi dokumentami. Na ekranie Źródła i konfiguracja naciśnij Wygeneruj zbiór demonstracyjny, potem przejdź na ekran Indeksowanie i naciśnij Start. Po chwili można wyszukiwać.
To samo z wiersza poleceń:
finddocs demo --register
finddocs index
finddocs search "procedura przelewów 24.07.2015"
Uruchomienie developerskie
Wymagany Python 3.11 lub 3.12 na Windows 11.
py -3.11 -m venv .venv
.venv\Scripts\python.exe -m pip install -e ".[dev,ocr-rapid]"
Model embeddingów pobiera się raz z Hugging Face i eksportuje do ONNX:
git clone https://huggingface.co/sdadas/mmlw-retrieval-roberta-base models/mmlw-retrieval-roberta-base
.venv\Scripts\python.exe -m pip install torch transformers onnx
.venv\Scripts\python.exe tools/export_model_onnx.py models/mmlw-retrieval-roberta-base --quantize
Uruchomienie interfejsu:
.venv\Scripts\python.exe -m finddocs.gui
Uruchomienie poleceń administracyjnych:
.venv\Scripts\python.exe -m finddocs --help
Kontrola jakości
.venv\Scripts\python.exe -m ruff check src tests packaging tools
.venv\Scripts\python.exe -m ruff format --check src tests packaging tools
.venv\Scripts\python.exe -m mypy src
.venv\Scripts\python.exe -m pytest -q
Budowanie pakietu i instalatora
.venv\Scripts\python.exe packaging/build_app.py --with-model
.venv\Scripts\python.exe packaging/build_installer.py
Pierwsze polecenie tworzy katalog packaging/output/FindDocs z plikiem
wykonywalnym i wykonuje test dymny. Drugie buduje instalator przy pomocy
Inno Setup 6. Gdy Inno Setup nie jest zainstalowany, skrypt wypisuje instrukcję
instalacji zamiast kończyć pracę bez komunikatu.
Rozmiary wyniku: 409 MB bez modelu, 534 MB z modelem w wersji INT8,
191 MB dla samego instalatora. Przełącznik --full-precision-model dokłada
wagi FP32, co powiększa pakiet o około 470 MB i nie jest potrzebne do
domyślnej konfiguracji.
Architektura w skrócie
connectors -> extractors / ocr -> normalization / chunking -> indexing
|
search <--------+
|
jobs -+-> gui
- metadane, fragmenty i indeks pełnotekstowy: SQLite w trybie WAL z FTS5 w wariancie external content;
- indeks wektorowy: FAISS HNSW z mapą identyfikatorów, usunięcia przez nagrobki i okresową kompaktację;
- embeddingi: ONNX Runtime na CPU, model
sdadas/mmlw-retrieval-roberta-base(Apache-2.0, 768 wymiarów, pooling CLS); - interfejs: PySide6 (LGPL).
Szczegóły i diagramy: docs/architektura.md.
Dokumentacja
| Dokument | Zawartość |
|---|---|
| Instrukcja użytkownika | obsługa aplikacji |
| Instrukcja administratora | wdrożenie, konfiguracja, CLI |
| Integracja z SharePoint | Microsoft Graph, Entra ID, uprawnienia |
| Architektura | warstwy, diagramy, decyzje |
| Schemat danych | tabele, kolumny, wersjonowanie |
| Odbudowa indeksu | przebudowa, kopie, kompaktacja |
| Aktualizacja | procedura aktualizacji |
| Diagnostyka | logi, kody błędów, typowe problemy |
| Formaty | obsługiwane formaty i poziomy wsparcia |
| OCR | silniki, jakość, wydajność |
| Znane ograniczenia | czego aplikacja nie robi |
| Raport bezpieczeństwa | model zagrożeń i kontrole |
| Raport PoC | porównanie modeli i pomiary |
| Raport testów | zakres i wyniki testów |
| Licencje | komponenty i licencje, SBOM w sbom.cdx.json |
| Plan RAG i GPU | przyszły rozwój |
| ADR | decyzje architektoniczne |
Prywatność
Aplikacja nie zawiera telemetrii. Domyślnie cały ruch wychodzący jest zablokowany. Połączenia z Microsoft Graph włączają się dopiero po skonfigurowaniu źródła SharePoint, a pobieranie modelu wymaga osobnej zgody. Lista dozwolonych adresów jest wpisana w kod i widoczna na ekranie Diagnostyka.
Indeks zawiera treść dokumentów, więc katalog %LOCALAPPDATA%\FindDocs podlega
tej samej klauzuli poufności co dokumenty źródłowe.
Licencja
Kod aplikacji: licencja MIT, patrz LICENSE. Licencje komponentów i modeli: docs/licencje.md.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file finddocs-0.1.0.tar.gz.
File metadata
- Download URL: finddocs-0.1.0.tar.gz
- Upload date:
- Size: 320.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5a90617bd76dbc97810351da241002aad52eaa4f8db9d856d9af6208fe0271f6
|
|
| MD5 |
b9a58eaee66f5ac3a2bdf029ff41ad64
|
|
| BLAKE2b-256 |
5e1e1b3faa6d59d01a5dd8b1fa894d69ca0ed6aedc8c8cb9fd1bec45132fc4b4
|
Provenance
The following attestation bundles were made for finddocs-0.1.0.tar.gz:
Publisher:
publish.yml on KMChris/finddocs
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
finddocs-0.1.0.tar.gz -
Subject digest:
5a90617bd76dbc97810351da241002aad52eaa4f8db9d856d9af6208fe0271f6 - Sigstore transparency entry: 2358873939
- Sigstore integration time:
-
Permalink:
KMChris/finddocs@87ed85b47c4fc29ab7d9560555e06b804ec7b76f -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/KMChris
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@87ed85b47c4fc29ab7d9560555e06b804ec7b76f -
Trigger Event:
push
-
Statement type:
File details
Details for the file finddocs-0.1.0-py3-none-any.whl.
File metadata
- Download URL: finddocs-0.1.0-py3-none-any.whl
- Upload date:
- Size: 417.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
aee0db0aa14e853f989aee040b31e21ce18858d35de9542b3df2b79a72a1e814
|
|
| MD5 |
6cfcefce49bb5bc5eb36e0ad97da6b16
|
|
| BLAKE2b-256 |
c29e37d964b9bb46f3c5d64e92fe2dcdeca1afdd24298bf554bb49453abcd825
|
Provenance
The following attestation bundles were made for finddocs-0.1.0-py3-none-any.whl:
Publisher:
publish.yml on KMChris/finddocs
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
finddocs-0.1.0-py3-none-any.whl -
Subject digest:
aee0db0aa14e853f989aee040b31e21ce18858d35de9542b3df2b79a72a1e814 - Sigstore transparency entry: 2358873993
- Sigstore integration time:
-
Permalink:
KMChris/finddocs@87ed85b47c4fc29ab7d9560555e06b804ec7b76f -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/KMChris
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@87ed85b47c4fc29ab7d9560555e06b804ec7b76f -
Trigger Event:
push
-
Statement type: