Le dossier qui ne remonte pas

Recherche sémantique et chaîne documentaire
5 étapes · 6 flags

Le dossier qui ne remonte pas

Une base documentaire interne de 304 fiches : procédures, notes techniques, annexes, contrats. Une question d'exploitation arrive au support.

Les six mots significatifs de la question, pour la recherche lexicale - sous-chaîne, minuscules, accents retirés :

1. Sur votre machine

Ce challenge se construit chez vous. Tout est joint à l'épreuve sur la plateforme : le corpus, la question, et un dossier atelier/ avec un docker-compose.yml, une amorce et son mode d'emploi.

cd atelier && docker compose up -d # Ollama + nomic-embed-text, 270 Mo cd .. && python3 atelier/amorce.py # vérifie la plomberie

Aucun modèle de génération n'est nécessaire. Ce modèle ne rédige rien : il transforme un texte en vecteur. On ne vous demande pas d'écrire une réponse, mais de trouver les bons documents, puis de les lire - c'est la moitié récupération d'un RAG, et c'est elle qui décide de la qualité du reste.

amorce.py montre les trois gestes nécessaires sur un seul document : obtenir un embedding, comparer deux embeddings, lire le corpus. Indexer les 304 documents, les classer et les lire reste à faire. Vous pouvez évidemment tout réécrire avec vos outils habituels - numpy, sentence-transformers, LangChain, une base vectorielle, un autre modèle, un autre langage. Le service ne fournit aucun moteur de recherche : construire le vôtre fait partie du travail.

base_documentaire.csv
id · titre · famille · date_revision · version · statut · contenu
question.txt
la question posée au support
atelier/
docker-compose.yml · amorce.py · README.md. Bibliothèque standard, aucune installation

2. Les cinq étapes

Chaque étape rend son propre flag et se résout indépendamment des autres : vous pouvez les prendre dans l'ordre que vous voulez. Reportez les flags sur la plateforme au fur et à mesure.

3. Le flag final

Mettez vos cinq flags d'étape bout à bout, dans l'ordre E1 à E5. Retirez le HACK{ et le } de chacun, joignez l'intérieur par _, et remettez une seule enveloppe autour du tout.

HACK{E1_…} HACK{E2_…} HACK{E3_…} HACK{E4_…} HACK{E5_…} ↓ HACK{E1_…_E2_…_E3_…_E4_…_E5_…}

Aucun outil, aucun calcul : un copier-coller et deux suppressions.