Dataset issu des données du Challenge RAG de EvalLLM2026.
## Construction
- Extraction du texte des pdf à l'aide de `pymupdf4llm`
- Découpe avec `MarkdownTextSplitter` de `langchain_text_splitter` (chunk_size=500, chunk_overlap=150)
- Documents extraits automatiquement à l'aide E5 et ChromaDB
- Selection des questions et documents à la main à partir des extraction automatiques
## Format
3 fichiers:
- paires_mainV2.csv
- docs_mainV2.csv
- queries_mainV2.csv
### paires_mainV2.csv
- q_id (int) : identifiant de question
- question (str) : texte de la question
- doc_id (int) : identifiant de document
- doc_name (str) : nom du fichier pdf d'origine
- page_number (int) : numéro (absolu) de la page d'origine
- chunk_id (int) : identifiant de l'extrait
- text (str) : texte de l'extrait
- pertinent (bool) : pertinent du document pour la question
Infos:
- 27 entrées
- Autant de documents pertinents que non pertinents
- Textes issus de 3 pdfs
- 28 extraits
- 1 question
### docs_mainV2.csv
- doc_id (int) : identifiant de ducument
- doc_name (str) : nom du fichier pdf d'origine
- page_number (int) : numéro (absolu) de la page d'origine
- chunk_id (int) : identifiant de l'extrait
- text (str) : texte de l'extrait
### queries_mainV2.csv
- q_id (int) : identifiant de question
- question (str) : texte de la question
## Contenu/ Stats
Construction des données:
- 1 question, 3 pdf (limitations matérielles du drone, code de la défense - matériel de guerre, fausses infos pdt les JO/JP)
- 50% de textes pertinents
- 28 paires
Question :
> Quelles sont les trois principales catégories de limitations techniques affectant les systèmes de drones, et comment chacune influence-t-elle l'efficacité opérationnelle de ces vecteurs ?
Dataset issu des données du Challenge RAG de EvalLLM2026.
## Construction
- Extraction du texte des pdf à l'aide de `pymupdf4llm`
- Découpe avec `MarkdownTextSplitter` de `langchain_text_splitter` (chunk_size=500, chunk_overlap=150)
- Documents extraits automatiquement à l'aide E5 et ChromaDB
- Selection des questions et documents à la main à partir des extraction automatiques
## Format
3 fichiers:
- paires_mainV3.csv
- docs_mainV3.csv
- queries_mainV3.csv
### paires_mainV3.csv
- q_id (int) : identifiant de question
- question (str) : texte de la question
- doc_id (int) : identifiant de ducument
- doc_name (str) : nom du fichier pdf d'origine
- page_number (int) : numéro (absolu) de la page d'origine
- chunk_id (int) : identifiant de l'extrait
- text (str) : texte de l'extrait
- pertinent (bool) : pertinent du document pour la question
Infos:
- 20 entrées
- Autant de documents pertinents que non pertinents
- Textes issus de 3 pdfs
- 20 extraits
- 1 question
### docs_mainV3.csv
- doc_id (int) : identifiant de ducument
- doc_name (str) : nom du fichier pdf d'origine
- page_number (int) : numéro (absolu) de la page d'origine
- chunk_id (int) : identifiant de l'extrait
- text (str) : texte de l'extrait
### queries_mainV3.csv
- q_id (int) : identifiant de question
- question (str) : texte de la question
## Analyse
### Question
1 question :
> Quels sont les défis majeurs liés à l’utilisation d’une intelligence artificielle auto-apprenante dans les systèmes d’armes, et en quoi ces défis remettent-ils en cause les méthodes traditionnelles de développement et de validation des technologies militaires ?
### Thématique
Sujet pas spécifique à la défense mais appliqué à la défense : Intelligence Artificielle appliquée aux outils et pratiques de la défense et notamment à la guerre.
Thèmatique des 3 pdf:
- IA pour la défense : enjeux
- Aviation civile
- usage des ballons (aérostats et dirigeables) dans l'histoire et rebond de l'usage
### Statistique
| Mot | Fréquence| TF-IDF |
|------------|---|--------------------|
|système |13 |0.06480086088326986 |
|transport |9 |0.05957370634266266 |
|militaire |9 |0.0488148141908528 |
|force |8 |0.048789708865220195|
|aérien |8 |0.05223144426877953 |
|automatiser |7 |0.04028923862758367 |
|artificiel |6 |0.04046189336007796 |
|intelligence|6 |0.04046189336007796 |
|emploi |6 |0.03775763430881781 |
|domaine |6 |0.03862181838643274 |
_Système_ est essentielement issu de l'expression _système autonome_ dans les documents positofs (issus du numéro sur l'emploi des Ia et systèmes automatisés du Centre interarmées de concepts, de doctrines et d’expérimentations). La seule exception est pour _système High Altitude pseudo-satellite (HAPS)_ issu du document sur les ballons.
L'entièreté des occurences de _transport_ sont issues du document sur l'aviation civile.
Les occurences de _militaire_ sont issues des documents sur les sytèmes autonomes et les ballons.
"question":["Quelles sont les trois catégories principales d’espaces couverts par la notion d'« installations militaires » selon le cadre juridique en vigueur?"],
"doc_id":[docsV2.iloc[49181].doc_id],
"doc_name":[docsV2.iloc[49181].doc_name],
"page_number":[docsV2.iloc[49181].page_number],
"chunk_id":[docsV2.iloc[49181].chunk_number],
"text":[docsV2.iloc[49181].text],
"pertinent":[True]
})
],axis=0)
db=pd.concat([db,
pd.DataFrame({
"q_id":[0],
"question":["Quelles sont les trois catégories principales d’espaces couverts par la notion d'« installations militaires » selon le cadre juridique en vigueur?"],
"doc_id":[docsV2.iloc[28106].doc_id],
"doc_name":[docsV2.iloc[28106].doc_name],
"page_number":[docsV2.iloc[28106].page_number],
"chunk_id":[docsV2.iloc[28106].chunk_number],
"text":[docsV2.iloc[28106].text],
"pertinent":[False]
})
],axis=0)
db=pd.concat([db,
pd.DataFrame({
"q_id":[1],
"question":["Qu'encourt une personne qui exporte des explosifs sans autorisation?"],
"doc_id":[docsV2.iloc[34421].doc_id],
"doc_name":[docsV2.iloc[34421].doc_name],
"page_number":[docsV2.iloc[34421].page_number],
"chunk_id":[docsV2.iloc[34421].chunk_number],
"text":[docsV2.iloc[34421].text],
"pertinent":[True]
})
],axis=0)
db=pd.concat([db,
pd.DataFrame({
"q_id":[1],
"question":["Qu'encourt une personne qui exporte des explosifs sans autorisation?"],
"doc_id":[docsV2.iloc[70843].doc_id],
"doc_name":[docsV2.iloc[70843].doc_name],
"page_number":[docsV2.iloc[70843].page_number],
"chunk_id":[docsV2.iloc[70843].chunk_number],
"text":[docsV2.iloc[70843].text],
"pertinent":[False]
})
],axis=0)
db=pd.concat([db,
pd.DataFrame({
"q_id":[2],
"question":["Quelles sont les caractéristiques de l'UAV SAENA?"],
"doc_id":[docsV2.iloc[76254].doc_id],
"doc_name":[docsV2.iloc[76254].doc_name],
"page_number":[docsV2.iloc[76254].page_number],
"chunk_id":[docsV2.iloc[76254].chunk_number],
"text":[docsV2.iloc[76254].text],
"pertinent":[True]
})
],axis=0)
db=pd.concat([db,
pd.DataFrame({
"q_id":[2],
"question":["Quelles sont les caractéristiques de l'UAV SAENA?"],
"doc_id":[docsV2.iloc[76549].doc_id],
"doc_name":[docsV2.iloc[76549].doc_name],
"page_number":[docsV2.iloc[76549].page_number],
"chunk_id":[docsV2.iloc[76549].chunk_number],
"text":[docsV2.iloc[76549].text],
"pertinent":[False]
})
],axis=0)
db=pd.concat([db,
pd.DataFrame({
"q_id":[3],
"question":["Quels publics est-il important de former à l'IA et pourquoi?"],
"doc_id":[docsV2.iloc[44635].doc_id],
"doc_name":[docsV2.iloc[44635].doc_name],
"page_number":[docsV2.iloc[44635].page_number],
"chunk_id":[docsV2.iloc[44635].chunk_number],
"text":[docsV2.iloc[44635].text],
"pertinent":[True]
})
],axis=0)
db=pd.concat([db,
pd.DataFrame({
"q_id":[3],
"question":["Quels publics est-il important de former à l'IA et pourquoi?"],
"doc_id":[docsV2.iloc[44649].doc_id],
"doc_name":[docsV2.iloc[44649].doc_name],
"page_number":[docsV2.iloc[44649].page_number],
"chunk_id":[docsV2.iloc[44649].chunk_number],
"text":[docsV2.iloc[44649].text],
"pertinent":[False]
})
],axis=0)
db=pd.concat([db,
pd.DataFrame({
"q_id":[4],
"question":["Quels sont les deux type de drones MALE et HALE actuellement exploité par l'USAF, et quelles différences majeures (envergure, masse, propulsion, durée de mission et armement) permettent de distinguer le MQ-9 Reaper du RQ-4 Global Hawk ?"],
"doc_id":[docsV2.iloc[45377].doc_id],
"doc_name":[docsV2.iloc[45377].doc_name],
"page_number":[docsV2.iloc[45377].page_number],
"chunk_id":[docsV2.iloc[45377].chunk_number],
"text":[docsV2.iloc[45377].text],
"pertinent":[True]
})
],axis=0)
db=pd.concat([db,
pd.DataFrame({
"q_id":[4],
"question":["Quels sont les deux type de drones MALE et HALE actuellement exploité par l'USAF, et quelles différences majeures (envergure, masse, propulsion, durée de mission et armement) permettent de distinguer le MQ-9 Reaper du RQ-4 Global Hawk ?"],
"doc_id":[docsV2.iloc[20274].doc_id],
"doc_name":[docsV2.iloc[20274].doc_name],
"page_number":[docsV2.iloc[20274].page_number],
"chunk_id":[docsV2.iloc[20274].chunk_number],
"text":[docsV2.iloc[20274].text],
"pertinent":[False]
})
],axis=0)
db=pd.concat([db,
pd.DataFrame({
"q_id":[5],
"question":["Quelles sont les deux prérogatives spécifiques que possède la Commission nationale consultative des droits de l'homme dans ses relations avec les organisations internationales, et en quoi ces prérogatives diffèrent-elles de celles des États ou des ONG ?"],
"doc_id":[docsV2.iloc[52757].doc_id],
"doc_name":[docsV2.iloc[52757].doc_name],
"page_number":[docsV2.iloc[52757].page_number],
"chunk_id":[docsV2.iloc[52757].chunk_number],
"text":[docsV2.iloc[52757].text],
"pertinent":[True]
})
],axis=0)
db=pd.concat([db,
pd.DataFrame({
"q_id":[5],
"question":["Quelles sont les deux prérogatives spécifiques que possède la Commission nationale consultative des droits de l'homme dans ses relations avec les organisations internationales, et en quoi ces prérogatives diffèrent-elles de celles des États ou des ONG ?"],
"doc_id":[docsV2.iloc[58398].doc_id],
"doc_name":[docsV2.iloc[58398].doc_name],
"page_number":[docsV2.iloc[58398].page_number],
"chunk_id":[docsV2.iloc[58398].chunk_number],
"text":[docsV2.iloc[58398].text],
"pertinent":[False]
})
],axis=0)
db=pd.concat([db,
pd.DataFrame({
"q_id":[6],
"question":["Quelles sont les deux conditions cumulatif qu’un ordre donné à un militaire français doit respecter pour être considéré comme légal selon le code de la défense, et quelles en sont les conséquences pour le subordonné et pour le supérior en cas de non-respect de ces conditions ?"],
"doc_id":[docsV2.iloc[39809].doc_id],
"doc_name":[docsV2.iloc[39809].doc_name],
"page_number":[docsV2.iloc[39809].page_number],
"chunk_id":[docsV2.iloc[39809].chunk_number],
"text":[docsV2.iloc[39809].text],
"pertinent":[True]
})
],axis=0)
db=pd.concat([db,
pd.DataFrame({
"q_id":[6],
"question":["Quelles sont les deux conditions cumulatif qu’un ordre donné à un militaire français doit respecter pour être considéré comme légal selon le code de la défense, et quelles en sont les conséquences pour le subordonné et pour le supérior en cas de non-respect de ces conditions ?"],
"doc_id":[docsV2.iloc[40252].doc_id],
"doc_name":[docsV2.iloc[40252].doc_name],
"page_number":[docsV2.iloc[40252].page_number],
"chunk_id":[docsV2.iloc[40252].chunk_number],
"text":[docsV2.iloc[40252].text],
"pertinent":[False]
})
],axis=0)
db=pd.concat([db,
pd.DataFrame({
"q_id":[7],
"question":["Quelles sont les deux missions principales du musée national de la Marine en lien avec ses collections, et quel type d’établissement public représente-t-il sur le plan juridique et administratif ?"],
"doc_id":[docsV2.iloc[39223].doc_id],
"doc_name":[docsV2.iloc[39223].doc_name],
"page_number":[docsV2.iloc[39223].page_number],
"chunk_id":[docsV2.iloc[39223].chunk_number],
"text":[docsV2.iloc[39223].text],
"pertinent":[True]
})
],axis=0)
db=pd.concat([db,
pd.DataFrame({
"q_id":[7],
"question":["Quelles sont les deux missions principales du musée national de la Marine en lien avec ses collections, et quel type d’établissement public représente-t-il sur le plan juridique et administratif ?"],
"doc_id":[docsV2.iloc[76691].doc_id],
"doc_name":[docsV2.iloc[76691].doc_name],
"page_number":[docsV2.iloc[76691].page_number],
"chunk_id":[docsV2.iloc[76691].chunk_number],
"text":[docsV2.iloc[76691].text],
"pertinent":[False]
})
],axis=0)
db=pd.concat([db,
pd.DataFrame({
"q_id":[8],
"question":["Quelles sont les deux fonctions principales remplies par les drones dans le domaine du *support au combat*?"],
"doc_id":[docsV2.iloc[45272].doc_id],
"doc_name":[docsV2.iloc[45272].doc_name],
"page_number":[docsV2.iloc[45272].page_number],
"chunk_id":[docsV2.iloc[45272].chunk_number],
"text":[docsV2.iloc[45272].text],
"pertinent":[True]
})
],axis=0)
db=pd.concat([db,
pd.DataFrame({
"q_id":[8],
"question":["Quelles sont les deux fonctions principales remplies par les drones dans le domaine du *support au combat*?"],
"doc_id":[docsV2.iloc[45548].doc_id],
"doc_name":[docsV2.iloc[45548].doc_name],
"page_number":[docsV2.iloc[45548].page_number],
"chunk_id":[docsV2.iloc[45548].chunk_number],
"text":[docsV2.iloc[45548].text],
"pertinent":[False]
})
],axis=0)
db=pd.concat([db,
pd.DataFrame({
"q_id":[9],
"question":["Quelles sont les deux conditions précises qui permettent à un militaire de bénéficier *de droit* d’une prorogation de son congé pour création ou reprise d’entreprise, sans que l’avis de la commission compétente ne soit requis ?"],
"doc_id":[docsV2.iloc[40854].doc_id],
"doc_name":[docsV2.iloc[40854].doc_name],
"page_number":[docsV2.iloc[40854].page_number],
"chunk_id":[docsV2.iloc[40854].chunk_number],
"text":[docsV2.iloc[40854].text],
"pertinent":[True]
})
],axis=0)
db=pd.concat([db,
pd.DataFrame({
"q_id":[9],
"question":["Quelles sont les deux conditions précises qui permettent à un militaire de bénéficier *de droit* d’une prorogation de son congé pour création ou reprise d’entreprise, sans que l’avis de la commission compétente ne soit requis ?"],
"doc_id":[docsV2.iloc[1183].doc_id],
"doc_name":[docsV2.iloc[1183].doc_name],
"page_number":[docsV2.iloc[1183].page_number],
"chunk_id":[docsV2.iloc[1183].chunk_number],
"text":[docsV2.iloc[1183].text],
"pertinent":[False]
})
],axis=0)
db=pd.concat([db,
pd.DataFrame({
"q_id":[10],
"question":["Quelles sont les conditions pour obtenir un congé pour convenances personelles en tant que militaire?"],
"doc_id":[docsV2.iloc[40993].doc_id],
"doc_name":[docsV2.iloc[40993].doc_name],
"page_number":[docsV2.iloc[40993].page_number],
"chunk_id":[docsV2.iloc[40993].chunk_number],
"text":[docsV2.iloc[40993].text],
"pertinent":[True]
})
],axis=0)
db=pd.concat([db,
pd.DataFrame({
"q_id":[10],
"question":["Quelles sont les conditions pour obtenir un congé pour convenances personelles en tant que militaire?"],
"doc_id":[docsV2.iloc[34792].doc_id],
"doc_name":[docsV2.iloc[34792].doc_name],
"page_number":[docsV2.iloc[34792].page_number],
"chunk_id":[docsV2.iloc[34792].chunk_number],
"text":[docsV2.iloc[34792].text],
"pertinent":[False]
})
],axis=0)
db=pd.concat([db,
pd.DataFrame({
"q_id":[11],
"question":["Quelles sont les trois types de charges utiles que peuvent employer les essaims de vecteurs compacts pour neutraliser des cibles navales ou aéronavales, et en quoi l’une d’entre elles présente-t-elle un risque particulier dans un contexte portuaire ou de base militaire ?"],
"doc_id":[docsV2.iloc[55603].doc_id],
"doc_name":[docsV2.iloc[55603].doc_name],
"page_number":[docsV2.iloc[55603].page_number],
"chunk_id":[docsV2.iloc[55603].chunk_number],
"text":[docsV2.iloc[55603].text],
"pertinent":[True]
})
],axis=0)
db=pd.concat([db,
pd.DataFrame({
"q_id":[11],
"question":["Quelles sont les trois types de charges utiles que peuvent employer les essaims de vecteurs compacts pour neutraliser des cibles navales ou aéronavales, et en quoi l’une d’entre elles présente-t-elle un risque particulier dans un contexte portuaire ou de base militaire ?"],
"doc_id":[docsV2.iloc[43524].doc_id],
"doc_name":[docsV2.iloc[43524].doc_name],
"page_number":[docsV2.iloc[43524].page_number],
"chunk_id":[docsV2.iloc[43524].chunk_number],
"text":[docsV2.iloc[43524].text],
"pertinent":[False]
})
],axis=0)
db=pd.concat([db,
pd.DataFrame({
"q_id":[12],
"question":["Comment le drone tactique SDTI, conçu pour les opérations militaires conventionnelles (type Afghanistan), se compare-t-il aux mini-drones utilisés dans les guerres asymétriques (type Mossoul) en termes de contraintes logistiques et de souplesse d'emploi ?"],
"doc_id":[docsV2.iloc[45297].doc_id],
"doc_name":[docsV2.iloc[45297].doc_name],
"page_number":[docsV2.iloc[45297].page_number],
"chunk_id":[docsV2.iloc[45297].chunk_number],
"text":[docsV2.iloc[45297].text],
"pertinent":[True]
})
],axis=0)
db=pd.concat([db,
pd.DataFrame({
"q_id":[12],
"question":["Comment le drone tactique SDTI, conçu pour les opérations militaires conventionnelles (type Afghanistan), se compare-t-il aux mini-drones utilisés dans les guerres asymétriques (type Mossoul) en termes de contraintes logistiques et de souplesse d'emploi ?"],
"doc_id":[docsV2.iloc[70689].doc_id],
"doc_name":[docsV2.iloc[70689].doc_name],
"page_number":[docsV2.iloc[70689].page_number],
"chunk_id":[docsV2.iloc[70689].chunk_number],
"text":[docsV2.iloc[70689].text],
"pertinent":[False]
})
],axis=0)
db=pd.concat([db,
pd.DataFrame({
"q_id":[13],
"question":["Quels sont les deux objectifs principaux de l’exercice REPMUS 2024 au Portugal, et en quoi cet événement représente-t-il également une opportunité stratégique pour les industriels participants ?"],
"doc_id":[docsV2.iloc[71317].doc_id],
"doc_name":[docsV2.iloc[71317].doc_name],
"page_number":[docsV2.iloc[71317].page_number],
"chunk_id":[docsV2.iloc[71317].chunk_number],
"text":[docsV2.iloc[71317].text],
"pertinent":[True]
})
],axis=0)
db=pd.concat([db,
pd.DataFrame({
"q_id":[13],
"question":["Quels sont les deux objectifs principaux de l’exercice REPMUS 2024 au Portugal, et en quoi cet événement représente-t-il également une opportunité stratégique pour les industriels participants ?"],
"doc_id":[docsV2.iloc[64891].doc_id],
"doc_name":[docsV2.iloc[64891].doc_name],
"page_number":[docsV2.iloc[64891].page_number],
"chunk_id":[docsV2.iloc[64891].chunk_number],
"text":[docsV2.iloc[64891].text],
"pertinent":[False]
})
],axis=0)
db=pd.concat([db,
pd.DataFrame({
"q_id":[14],
"question":["Quelles sont les deux couleurs utilisées dans le tableau des amendements pour distinguer respectivement ceux qui ont été validés par le CICDE et ceux qui ont été intégrés dans la nouvelle version du document, et que symbolisent chacune de ces couleurs ?"],
"doc_id":[docsV2.iloc[1642].doc_id],
"doc_name":[docsV2.iloc[1642].doc_name],
"page_number":[docsV2.iloc[1642].page_number],
"chunk_id":[docsV2.iloc[1642].chunk_number],
"text":[docsV2.iloc[1642].text],
"pertinent":[True]
})
],axis=0)
db=pd.concat([db,
pd.DataFrame({
"q_id":[14],
"question":["Quelles sont les deux couleurs utilisées dans le tableau des amendements pour distinguer respectivement ceux qui ont été validés par le CICDE et ceux qui ont été intégrés dans la nouvelle version du document, et que symbolisent chacune de ces couleurs ?"],
"doc_id":[docsV2.iloc[1645].doc_id],
"doc_name":[docsV2.iloc[1645].doc_name],
"page_number":[docsV2.iloc[1645].page_number],
"chunk_id":[docsV2.iloc[1645].chunk_number],
"text":[docsV2.iloc[1645].text],
"pertinent":[False]
})
],axis=0)
db=pd.concat([db,
pd.DataFrame({
"q_id":[15],
"question":["Quelles sont les deux obligations financières distinctes qu’un assujetti doit remplir s’il ne restitue pas suffisamment de quotas d’émission pour couvrir ses émissions annuelles de CO₂, et en quoi ces obligations diffèrent-elles en termes de finalité et de persistance ?"],
"doc_id":[docsV2.iloc[70527].doc_id],
"doc_name":[docsV2.iloc[70527].doc_name],
"page_number":[docsV2.iloc[70527].page_number],
"chunk_id":[docsV2.iloc[70527].chunk_number],
"text":[docsV2.iloc[70527].text],
"pertinent":[True]
})
],axis=0)
db=pd.concat([db,
pd.DataFrame({
"q_id":[15],
"question":["Quelles sont les deux obligations financières distinctes qu’un assujetti doit remplir s’il ne restitue pas suffisamment de quotas d’émission pour couvrir ses émissions annuelles de CO₂, et en quoi ces obligations diffèrent-elles en termes de finalité et de persistance ?"],
"doc_id":[docsV2.iloc[68751].doc_id],
"doc_name":[docsV2.iloc[68751].doc_name],
"page_number":[docsV2.iloc[68751].page_number],
"chunk_id":[docsV2.iloc[68751].chunk_number],
"text":[docsV2.iloc[68751].text],
"pertinent":[False]
})
],axis=0)
db=pd.concat([db,
pd.DataFrame({
"q_id":[16],
"question":["cyberattaque agression armée droit international critères seuil gravité attribution effets comparables attaque conventionnelle coordination opérations physiques accumulation effets article 2(4) Charte ONU doctrine Tallin"],
"doc_id":[docsV2.iloc[52517].doc_id],
"doc_name":[docsV2.iloc[52517].doc_name],
"page_number":[docsV2.iloc[52517].page_number],
"chunk_id":[docsV2.iloc[52517].chunk_number],
"text":[docsV2.iloc[52517].text],
"pertinent":[True]
})
],axis=0)
db=pd.concat([db,
pd.DataFrame({
"q_id":[16],
"question":["cyberattaque agression armée droit international critères seuil gravité attribution effets comparables attaque conventionnelle coordination opérations physiques accumulation effets article 2(4) Charte ONU doctrine Tallin"],
"doc_id":[docsV2.iloc[10274].doc_id],
"doc_name":[docsV2.iloc[10274].doc_name],
"page_number":[docsV2.iloc[10274].page_number],
"chunk_id":[docsV2.iloc[10274].chunk_number],
"text":[docsV2.iloc[10274].text],
"pertinent":[False]
})
],axis=0)
db=pd.concat([db,pd.DataFrame({
"q_id":[17],
"question":["Quels sont les deux moteurs d’avions de combat pour lesquels Safran, MTU Aero Engines et Rolls-Royce collaborent ensemble, et quel programme européen futur est associé à ces mêmes partenaires ?"],
"doc_id":[docsV2.iloc[72375].doc_id],
"doc_name":[docsV2.iloc[72375].doc_name],
"page_number":[docsV2.iloc[72375].page_number],
"chunk_id":[docsV2.iloc[72375].chunk_number],
"text":[docsV2.iloc[72375].text],
"pertinent":[True]
})],axis=0)
db=pd.concat([db,pd.DataFrame({
"q_id":[17],
"question":["Quels sont les deux moteurs d’avions de combat pour lesquels Safran, MTU Aero Engines et Rolls-Royce collaborent ensemble, et quel programme européen futur est associé à ces mêmes partenaires ?"],
"doc_id":[docsV2.iloc[44459].doc_id],
"doc_name":[docsV2.iloc[44459].doc_name],
"page_number":[docsV2.iloc[44459].page_number],
"chunk_id":[docsV2.iloc[44459].chunk_number],
"text":[docsV2.iloc[44459].text],
"pertinent":[False]
})],axis=0)
db=pd.concat([db,pd.DataFrame({
"q_id":[18],
"question":["Quels sont les deux défis contradictoires auxquels les États-Unis sont confrontés dans la mise en œuvre de leur architecture C4ISR face à la stratégie anti-A2/AD de l’Armée de libération populaire chinoise, et en quoi ces défis remettent-ils en cause les principes mêmes de l’intégration multidomaine (JADC2) ?"],
"doc_id":[docsV2.iloc[30048].doc_id],
"doc_name":[docsV2.iloc[30048].doc_name],
"page_number":[docsV2.iloc[30048].page_number],
"chunk_id":[docsV2.iloc[30048].chunk_number],
"text":[docsV2.iloc[30048].text],
"pertinent":[True]
})],axis=0)
db=pd.concat([db,pd.DataFrame({
"q_id":[18],
"question":["Quels sont les deux défis contradictoires auxquels les États-Unis sont confrontés dans la mise en œuvre de leur architecture C4ISR face à la stratégie anti-A2/AD de l’Armée de libération populaire chinoise, et en quoi ces défis remettent-ils en cause les principes mêmes de l’intégration multidomaine (JADC2) ?"],
"doc_id":[docsV2.iloc[71580].doc_id],
"doc_name":[docsV2.iloc[71580].doc_name],
"page_number":[docsV2.iloc[71580].page_number],
"chunk_id":[docsV2.iloc[71580].chunk_number],
"text":[docsV2.iloc[71580].text],
"pertinent":[False]
})],axis=0)
db=pd.concat([db,pd.DataFrame({
"q_id":[19],
"question":["Quels sont les deux effets concrets de l’article D4154-1 du code du travail sur la production industrielle des drones, en particulier dans le domaine de la soudure, et comment ces effets menacent-ils la stabilité des PME du secteur ?"],
"doc_id":[docsV2.iloc[20494].doc_id],
"doc_name":[docsV2.iloc[20494].doc_name],
"page_number":[docsV2.iloc[20494].page_number],
"chunk_id":[docsV2.iloc[20494].chunk_number],
"text":[docsV2.iloc[20494].text],
"pertinent":[True]
})],axis=0)
db=pd.concat([db,pd.DataFrame({
"q_id":[19],
"question":["Quels sont les deux effets concrets de l’article D4154-1 du code du travail sur la production industrielle des drones, en particulier dans le domaine de la soudure, et comment ces effets menacent-ils la stabilité des PME du secteur ?"],
"doc_id":[docsV2.iloc[17469].doc_id],
"doc_name":[docsV2.iloc[17469].doc_name],
"page_number":[docsV2.iloc[17469].page_number],
"chunk_id":[docsV2.iloc[17469].chunk_number],
"text":[docsV2.iloc[17469].text],
"pertinent":[False]
})],axis=0)
db=pd.concat([db,pd.DataFrame({
"q_id":[20],
"question":["Quelles sont les deux conditions précises dans lesquelles un militaire peut engager une médiation, malgré l’existence d’un recours administratif préalable déjà formé devant la commission des recours des militaires ?"],
"doc_id":[docsV2.iloc[40258].doc_id],
"doc_name":[docsV2.iloc[40258].doc_name],
"page_number":[docsV2.iloc[40258].page_number],
"chunk_id":[docsV2.iloc[40258].chunk_number],
"text":[docsV2.iloc[40258].text],
"pertinent":[True]
})],axis=0)
db=pd.concat([db,pd.DataFrame({
"q_id":[20],
"question":["Quelles sont les deux conditions précises dans lesquelles un militaire peut engager une médiation, malgré l’existence d’un recours administratif préalable déjà formé devant la commission des recours des militaires ?"],
"doc_id":[docsV2.iloc[75135].doc_id],
"doc_name":[docsV2.iloc[75135].doc_name],
"page_number":[docsV2.iloc[75135].page_number],
"chunk_id":[docsV2.iloc[75135].chunk_number],
"text":[docsV2.iloc[75135].text],
"pertinent":[False]
})],axis=0)
db=pd.concat([db,pd.DataFrame({
"q_id":[21],
"question":["Quels étaient les quatre rôles concrets remplis par le ballon captif déployé lors de l'opération Barkhane à Kidal en 2018, et comment son efficacité se manifestait-elle aussi bien de jour que de nuit ?"],
"doc_id":[docsV2.iloc[1668].doc_id],
"doc_name":[docsV2.iloc[1668].doc_name],
"page_number":[docsV2.iloc[1668].page_number],
"chunk_id":[docsV2.iloc[1668].chunk_number],
"text":[docsV2.iloc[1668].text],
"pertinent":[True]
})],axis=0)
db=pd.concat([db,pd.DataFrame({
"q_id":[21],
"question":["Quels étaient les quatre rôles concrets remplis par le ballon captif déployé lors de l'opération Barkhane à Kidal en 2018, et comment son efficacité se manifestait-elle aussi bien de jour que de nuit ?"],
"doc_id":[docsV2.iloc[2].doc_id],
"doc_name":[docsV2.iloc[2].doc_name],
"page_number":[docsV2.iloc[2].page_number],
"chunk_id":[docsV2.iloc[2].chunk_number],
"text":[docsV2.iloc[2].text],
"pertinent":[False]
})],axis=0)
db=pd.concat([db,pd.DataFrame({
"q_id":[22],
"question":["What are the two concrete types of ties linking the BIG to the Azerbaijani state, and how does each manifest verifiably in administrative practices or public statements?"],
"doc_id":[docsV2.iloc[63552].doc_id],
"doc_name":[docsV2.iloc[63552].doc_name],
"page_number":[docsV2.iloc[63552].page_number],
"chunk_id":[docsV2.iloc[63552].chunk_number],
"text":[docsV2.iloc[63552].text],
"pertinent":[True]
})],axis=0)
db=pd.concat([db,pd.DataFrame({
"q_id":[22],
"question":["What are the two concrete types of ties linking the BIG to the Azerbaijani state, and how does each manifest verifiably in administrative practices or public statements?"],
"doc_id":[docsV2.iloc[59584].doc_id],
"doc_name":[docsV2.iloc[59584].doc_name],
"page_number":[docsV2.iloc[59584].page_number],
"chunk_id":[docsV2.iloc[59584].chunk_number],
"text":[docsV2.iloc[59584].text],
"pertinent":[False]
})],axis=0)
db=pd.concat([db,pd.DataFrame({
"q_id":[23],
"question":["Quelles sont les trois principales catégories de limitations techniques affectant les systèmes de drones, et comment chacune influence-t-elle l'efficacité opérationnelle de ces vecteurs ?"],
"doc_id":[docsV2.iloc[27666].doc_id],
"doc_name":[docsV2.iloc[27666].doc_name],
"page_number":[docsV2.iloc[27666].page_number],
"chunk_id":[docsV2.iloc[27666].chunk_number],
"text":[docsV2.iloc[27666].text],
"pertinent":[True]
})],axis=0)
db=pd.concat([db,pd.DataFrame({
"q_id":[23],
"question":["Quelles sont les trois principales catégories de limitations techniques affectant les systèmes de drones, et comment chacune influence-t-elle l'efficacité opérationnelle de ces vecteurs ?"],
"doc_id":[docsV2.iloc[43549].doc_id],
"doc_name":[docsV2.iloc[43549].doc_name],
"page_number":[docsV2.iloc[43549].page_number],
"chunk_id":[docsV2.iloc[43549].chunk_number],
"text":[docsV2.iloc[43549].text],
"pertinent":[False]
})],axis=0)
db=pd.concat([db,pd.DataFrame({
"q_id":[24],
"question":["Quelles sont les deux méthodes alternatives utilisées pour évaluer les actifs de l'État dont le coût historique est indéterminable, et dans quel cas chacune d’elles est-elle appliquée ?"],
"doc_id":[docsV2.iloc[69420].doc_id],
"doc_name":[docsV2.iloc[69420].doc_name],
"page_number":[docsV2.iloc[69420].page_number],
"chunk_id":[docsV2.iloc[69420].chunk_number],
"text":[docsV2.iloc[69420].text],
"pertinent":[True]
})],axis=0)
db=pd.concat([db,pd.DataFrame({
"q_id":[24],
"question":["Quelles sont les deux méthodes alternatives utilisées pour évaluer les actifs de l'État dont le coût historique est indéterminable, et dans quel cas chacune d’elles est-elle appliquée ?"],
"doc_id":[docsV2.iloc[9200].doc_id],
"doc_name":[docsV2.iloc[9200].doc_name],
"page_number":[docsV2.iloc[9200].page_number],
"chunk_id":[docsV2.iloc[9200].chunk_number],
"text":[docsV2.iloc[9200].text],
"pertinent":[False]
})],axis=0)
db=pd.concat([db,pd.DataFrame({
"q_id":[25],
"question":["Quelles sont les trois règles fondamentales qu’un drone ou un agent au sein d’un essaim autonome doit appliquer pour reproduire un comportement collectif coordonné, et en quoi chacune de ces règles contribue-t-elle à la fluidité et à la résilience du déplacement du groupe ?"],
"doc_id":[docsV2.iloc[55999].doc_id],
"doc_name":[docsV2.iloc[55999].doc_name],
"page_number":[docsV2.iloc[55999].page_number],
"chunk_id":[docsV2.iloc[55999].chunk_number],
"text":[docsV2.iloc[55999].text],
"pertinent":[True]
})],axis=0)
db=pd.concat([db,pd.DataFrame({
"q_id":[25],
"question":["Quelles sont les trois règles fondamentales qu’un drone ou un agent au sein d’un essaim autonome doit appliquer pour reproduire un comportement collectif coordonné, et en quoi chacune de ces règles contribue-t-elle à la fluidité et à la résilience du déplacement du groupe ?"],
"question":["Quelles sont les trois principales catégories de limitations techniques affectant les systèmes de drones, et comment chacune influence-t-elle l'efficacité opérationnelle de ces vecteurs ?"]*(27679-27665),
"question":["Quelles sont les trois principales catégories de limitations techniques affectant les systèmes de drones, et comment chacune influence-t-elle l'efficacité opérationnelle de ces vecteurs ?"]*(37065-37059),
"question":["Quelles sont les trois principales catégories de limitations techniques affectant les systèmes de drones, et comment chacune influence-t-elle l'efficacité opérationnelle de ces vecteurs ?"]*(3606-3598),
"question":["Quels sont les défis majeurs liés à l’utilisation d’une intelligence artificielle auto-apprenante dans les systèmes d’armes, et en quoi ces défis remettent-ils en cause les méthodes traditionnelles de développement et de validation des technologies militaires ?"]*2,
"question":["Quels sont les défis majeurs liés à l’utilisation d’une intelligence artificielle auto-apprenante dans les systèmes d’armes, et en quoi ces défis remettent-ils en cause les méthodes traditionnelles de développement et de validation des technologies militaires ?"]*2,
"question":["Quels sont les défis majeurs liés à l’utilisation d’une intelligence artificielle auto-apprenante dans les systèmes d’armes, et en quoi ces défis remettent-ils en cause les méthodes traditionnelles de développement et de validation des technologies militaires ?"]*4,
"question":["Quels sont les défis majeurs liés à l’utilisation d’une intelligence artificielle auto-apprenante dans les systèmes d’armes, et en quoi ces défis remettent-ils en cause les méthodes traditionnelles de développement et de validation des technologies militaires ?"],
"doc_id":[docsV2.iloc[13616].doc_id],
"doc_name":[docsV2.iloc[13616].doc_name],
"page_number":[docsV2.iloc[13616].page_number],
"chunk_id":[docsV2.iloc[13616].chunk_number],
"text":[docsV2.iloc[13616].text],
"pertinent":[True]
})
db=pd.concat([db,tmp],axis=0)
db
# In[19]:
tmp=pd.DataFrame({
"q_id":[200],
"question":["Quels sont les défis majeurs liés à l’utilisation d’une intelligence artificielle auto-apprenante dans les systèmes d’armes, et en quoi ces défis remettent-ils en cause les méthodes traditionnelles de développement et de validation des technologies militaires ?"],
"doc_id":[docsV2.iloc[13620].doc_id],
"doc_name":[docsV2.iloc[13620].doc_name],
"page_number":[docsV2.iloc[13620].page_number],
"chunk_id":[docsV2.iloc[13620].chunk_number],
"text":[docsV2.iloc[13620].text],
"pertinent":[True]
})
db=pd.concat([db,tmp],axis=0)
db
# In[ ]:
tmp=pd.DataFrame({
"q_id":[200]*(2),
"question":["Quels sont les défis majeurs liés à l’utilisation d’une intelligence artificielle auto-apprenante dans les systèmes d’armes, et en quoi ces défis remettent-ils en cause les méthodes traditionnelles de développement et de validation des technologies militaires ?"]*2,
md_splitter=MarkdownTextSplitter(chunk_size=500,chunk_overlap=150)# le choix de la taille et de l'overlap est justifié par les contraintes de E5 (entrée de 512 token) affiner ces hyperparamètres pourrait parfaire le modèle
- code & data : https://nlp.cs.washington.edu/xorqa/
- /!\ *"This work extends open-retrieval question answering to a cross-lingual setting enabling questions from one language to be answered via answer content from another language."*
- Extension de TyDi QA en ne restreignant pas la recherche dans une langue en particulier (les corrections ont été adaptées en conséquence)
-[Clark et al., 2020] TyDi QA: A Benchmark for Information-Seeking Question Answering in Typologically Diverse Languages
- papier : https://arxiv.org/abs/2003.05002
- La question doit être répondue à l'aide des documents de la langue cible. L'objectif est de ne pas reposer sur des capacités de traduction.
- les explications rédigées pourraient servir de documents, on peut alors se passer des 4 réponses possibles (dont la bonne réponse) (c'est un QCM à l'origine)
Travaux de RAG en français de spécialité (introduisant un dataset):
-[Mnassri et al., 2025] RAG and Recall: Multilingual Hate Speech Detection with Semantic Memory
- Embeddings par mE5-small, stockés avec Chroma, cosine-similarity. Première extraction sur les titres puis 2e extraction sur les documents (si on a obtenu des titres avec pertinence suffisante, sinon, recherche web). Reranking des résultats obtenus. Le tout est envoyé dans LLaMA3 ~> Beaucoup d'outils !!! Archi assez élaborée!!
-[Zhang et al. 2025] Vers une optimisation de RAG en français : conception d'un reranker open source, fine-tuning et évaluation (https://hal.science/hal-05133472v1)
- juste rerank
- impem et entraînement d'un reranker à la sortie d'un distillRoBERTa
- code limité mais disponible et plutôt commenté
-[Segonne et al. 2024] Jargon: A Suite of Language Models and Evaluation Tasks for French Specialized Domains
- https://hal.science/hal-04535557
- code : https://github.com/PantagrueLLM/Jargon/
- modèle : https://huggingface.co/PantagrueLLM
- Français et spécialisation (law, health, speech detection)
- classifictaion (juste utilisable pour IR)
### Évaluation
-[Zhou & Mulhem & Schwab 2026] TempPerturb-Eval: On the Joint Effects of Internal Temperature and External Perturbations in RAG Robustness
- évaluer l'impact de la température et des perturbations sur la qualité d'un modèle RAG et les interactions entre les variations de ces deux paramètres
- projet de thèse "Explainable Retrieval Augmented Generation that supports Veracity and Subjectivity : X-RAG-VS". Pas de code ni de détail disponible pour l'instant
### Explicabilité
-[Zhou & Mulhem & Schwab 2025] Explicabilité par Perturbations pour les Systèmes RAG
- Overview des méthodes d'explication générales puis pour le RAG
-> *Gradient Guided Prompt Perturbation [Hu et al., 2024] pourrai être intéressant à exploiter avec MechIR*
- Catégorisation des perturbations pour l'IR -> *apporter des idées de perturbations pour MechIR*
# Spécification du CLI associé à GenericAutomatedPerturbation.py
## Action 1 : Calcul des valeurs (`values`)
Arguments obligatoires :
- modele (str) : nom du modèle (chemin ou adresse HuggingFace)
- dataset (str) : nom du dataset dans irdataset ou chemin dans l'arborescence
- dataset_origin (choices = ["irdatasets", "file"]) : Origine du dataset. indique comment obtenir le dataset
- perturbation (str) : chemin vers le fichier descriptif des perturbations
Arguments optionnels :
- query_field (str, default="question") : champ du fichier des paires correspondant aux questions
- docs_field (str, default="text") : champ du fichier des paires correspondant aux documents
- subdataset_condition (str, default=None) : critère de sélection d'une sous-partie du dataset
- gen_mean (bool, action = "store_true") : déclenche le calcul des matrices de moyennes de sensibilité
- gen_std (bool, action = "store_true") : déclenche le calcul des matrices d'écarts-types de sensibilité
- output (str, default=None) : spécifie le nom du fichier de sauvegarde des valeurs (Par défaut, le dossier des perturbations est utilisé et le fichier est nommé perts_values.json)
## Action 2 : Génération des graphiques (`graphs`)
Arguments obligatoires :
- input (str) : Fichier contenant les données à mettre sous graphe
Arguments optionnels:
- output (str, default=None) : spécifie le nom du dossier de sauvegarde des graphiques (Par défaut, le dossier de l'input)