Files
sovereign_ai/SovereignAI-Starter/evals/results/retrieval_project_answers_2026-10-03.json
T

300 lines
14 KiB
JSON

{
"created_at_utc": "2026-10-03T16:56:05.641170+00:00",
"base_url": "http://127.0.0.1:8000",
"dataset": "evals\\knowledge_retrieval_project.jsonl",
"indexing": {
"semantic_indexed_documents": 4,
"documents": 4,
"embedding_models": [
"granite-embedding:278m"
]
},
"metrics": {
"cases": 9,
"hit_at_1": 0.6666666666666666,
"hit_at_3": 1.0,
"mean_reciprocal_rank": 0.8148148148148148,
"evidence_rate": 0.6666666666666666
},
"results": [
{
"id": "project-path-confinement",
"query": "Does resolving a requested source path guarantee it stays under the selected root?",
"expected_document": "fixture_workspace.py",
"expected_evidence": "relative_to(root)",
"rank": 1,
"top_paths": [
"fixture_workspace.py",
"fixture_main.py"
],
"expected_document_chunks": [
5,
19,
1
],
"evidence_found": true,
"search_mode": "hybrid",
"agent_answer": "لم يتم العثور على أي مقتطفات في قاعدة المعرفة تشير إلى ما إذا كان حل مسار مصدر مطلوب يضمن بقاءه تحت الجذر المحدد.",
"agent_tool": "search_knowledge",
"agent_files": [
"fixture_main.py",
"fixture_workspace.py",
"fixture_knowledge.py"
],
"agent_steps": [
{
"tool": "search_knowledge",
"status": "completed"
}
],
"human_rating": null
},
{
"id": "project-preview-stale-file",
"query": "How does applying an approved preview detect that the original file changed after review?",
"expected_document": "fixture_workspace.py",
"expected_evidence": "expected_hash",
"rank": 2,
"top_paths": [
"fixture_main.py",
"fixture_workspace.py"
],
"expected_document_chunks": [
11,
13,
12,
14
],
"evidence_found": true,
"search_mode": "hybrid",
"agent_answer": "للاكتشاف ما إذا كان الملف الأصلي قد تغير بعد المراجعة عند تطبيق المعاينة المعتمدة، يتم التحقق مما إذا كان المسار المستهدف لا يزال دون تغيير.\n\nالمصدر: fixture_workspace.py · المقطع 13:\nيتم تخزين المعاينات في `_pending_changes` مع تضمين `expected_hash` (تجزئة SHA256 للمحتوى الأصلي)، والذي يتم مقارنته ضمنيًا (على الرغم من أن النص لا يوضح عملية المقارنة النهائية) عند تطبيق التغيير أو التحقق منه.\n\nيتم تطبيق التغيير باستخدام الدالة `apply_change_preview`، والتي تتحقق من صلاحية المعاينة بناءً على:\n```python\nif proposal is None or float(proposal[\"expires_at\"]) <= time.time():\n _pending_changes.pop(token, None)\n raise Value\n```\nهذا يضمن أن المعاينة لا تزال سارية المفعول (لم تنتهِ صلاحيتها).\n\nبالإضافة إلى ذلك، يتم تضمين معلومات التغيير مثل `path`، و `operation`، و `content`، و `expected_hash`، و `expires_at` في المعاينة.\n\nالمصدر: fixture_workspace.py · المقطع 13:\n```python\n \"expected_hash\": hashlib.sha256(original).hexdigest(),\n```",
"agent_tool": "search_knowledge",
"agent_files": [
"fixture_workspace.py",
"fixture_main.py"
],
"agent_steps": [
{
"tool": "search_knowledge",
"status": "completed"
}
],
"human_rating": null
},
{
"id": "project-index-stale-source",
"query": "Which file hash is compared with the stored content hash before returning a search result?",
"expected_document": "fixture_knowledge.py",
"expected_evidence": "actual_hash == row[\"content_hash\"]",
"rank": 3,
"top_paths": [
"fixture_main.py",
"fixture_workspace.py",
"fixture_knowledge.py"
],
"expected_document_chunks": [
11
],
"evidence_found": false,
"search_mode": "hybrid",
"agent_answer": "لا توجد معلومات ملموسة في المقاطع المسترجعة حول أي ملف تجري مقارنة لتجزئة (hash) مع تجزئة المحتوى المخزنة قبل إرجاع نتيجة بحث.\n\nالمصدر: fixture_main.py · المقطع 11",
"agent_tool": "search_knowledge",
"agent_files": [
"fixture_main.py",
"fixture_knowledge.py"
],
"agent_steps": [
{
"tool": "search_knowledge",
"status": "completed"
}
],
"human_rating": null
},
{
"id": "project-chunk-overlap",
"query": "What are the configured chunk size and overlap for local knowledge indexing?",
"expected_document": "fixture_knowledge.py",
"expected_evidence": "CHUNK_OVERLAP = 120",
"rank": 1,
"top_paths": [
"fixture_knowledge.py",
"fixture_main.py"
],
"expected_document_chunks": [
3,
0,
16
],
"evidence_found": true,
"search_mode": "hybrid",
"agent_answer": "المقطع يحدد حجم القطعة والتداخل عبر الدالة `_chunks` في ملف `fixture_knowledge.py`.\n\n* **حجم القطعة (CHUNK\\_SIZE):** 1000\n* **التداخل (CHUNK\\_OVERLAP):** 120\n\nالمصدر: fixture\\_knowledge.py · المقطع 15",
"agent_tool": "search_knowledge",
"agent_files": [
"fixture_knowledge.py",
"fixture_main.py"
],
"agent_steps": [
{
"tool": "search_knowledge",
"status": "completed"
}
],
"human_rating": null
},
{
"id": "project-arabic-audio-variants",
"query": "كيف يربط فهرس المعرفة بين تعابير عربية مختلفة عند البحث عن تفريغ التسجيل؟",
"expected_document": "fixture_knowledge.py",
"expected_evidence": "QUERY_SYNONYMS",
"rank": 1,
"top_paths": [
"fixture_knowledge.py",
"fixture_main.py"
],
"expected_document_chunks": [
1,
0
],
"evidence_found": true,
"search_mode": "hybrid",
"agent_answer": "لم يتم العثور على أي معلومات تربط بين فهرس المعرفة وتعابير عربية مختلفة عند البحث عن تفريغ التسجيل.\n\nالمقاطع المسترجعة لا تحتوي على إجابة مباشرة لهذا السؤال.",
"agent_tool": "search_knowledge",
"agent_files": [
"fixture_main.py",
"fixture_knowledge.py"
],
"agent_steps": [
{
"tool": "search_knowledge",
"status": "completed"
}
],
"human_rating": null
},
{
"id": "project-pdf-page-bound",
"query": "What is the maximum number of PDF pages accepted during local extraction?",
"expected_document": "fixture_pdf.py",
"expected_evidence": "MAX_PDF_PAGES = 30",
"rank": 1,
"top_paths": [
"fixture_pdf.py",
"fixture_main.py"
],
"expected_document_chunks": [
2,
0,
1
],
"evidence_found": true,
"search_mode": "hybrid",
"agent_answer": "لم يتم العثور على معلومة محددة حول الحد الأقصى لعدد صفحات PDF المقبولة أثناء الاستخراج المحلي.\n\nالمقاطع المسترجعة تشير إلى وجود حد أقصى للصفحات عند قراءة ملف PDFات:\n* في `fixture_pdf.py` المقطع 2، هناك فحص للحد الأقصى للصفحات: `if len(reader.pages) > max_pages: raise PdfDocumentError(413, f\"الحد الأقصى {max_pages} صفحة لكل PDF: {name}.\")`، مما يعني أن الحد الأقصى للصفحات يعتمد على المتغير `max_pages`، ولم يتم تحديد قيمته.\n* في `fixture_pdf.py` المقطع 1، الدالة `extract_pdf_pages_text` تستخدم المعامل `max_pages`، ولكن لا يوجد تعريف لقيمة افتراضية له في هذا المقطع.\n\nبالإضافة إلى ذلك، تشير مقاطع أخرى إلى حدود أخرى مثل \"الحد الأقصى 8 ميغابايت لكل PDF\" و \"حد الفهرسة 2 ميغابايت لكل طلب\" في `fixture_main.py` المقطع 43.\n\nبناءً على ما تم استرجاعه، لا يمكنني تحديد العدد الأقصى لصفحات PDF المقبولة بشكل قاطع.",
"agent_tool": "search_knowledge",
"agent_files": [
"fixture_pdf.py",
"fixture_main.py"
],
"agent_steps": [
{
"tool": "search_knowledge",
"status": "completed"
}
],
"human_rating": null
},
{
"id": "project-pdf-empty-scan",
"query": "ما الذي يحدث إذا رفع المستخدم ملف PDF ممسوحًا ولا يحتوي نصًا قابلًا للاستخراج؟",
"expected_document": "fixture_pdf.py",
"expected_evidence": "لا يحتوي PDF على نص قابل للاستخراج",
"rank": 2,
"top_paths": [
"fixture_main.py",
"fixture_pdf.py"
],
"expected_document_chunks": [
9
],
"evidence_found": false,
"search_mode": "hybrid",
"agent_answer": "لم يتم توفير معلومات مباشرة في المقاطع المسترجعة حول ما يحدث إذا تم رفع ملف PDF ممسوحًا ولا يحتوي على نص قابل للاستخراج. ومع ذلك، يُشير المقطع من `fixture_pdf.py` إلى سيناريو يتعلق بعدم وجود نص قابل للاستخراج:\n\n\"لا يحتوي PDF على نص قابل للاستخراج؛ قد تكون صفحاته صورًا ممسوحة: {name}.\" (المقطع 1 من `fixture_pdf.py`)\n\nهذا يشير إلى أن النظام قد يواجه مشكلة إذا لم يتمكن من استخراج نص من ملف PDF (قد يكون ممسوحًا)، حيث يتم رفع استثناء `PdfDocumentError` برمز الخطأ 415.\n\n**مسار المصدر:** `fixture_pdf.py`، المقطع 1.",
"agent_tool": "search_knowledge",
"agent_files": [
"fixture_main.py",
"fixture_pdf.py"
],
"agent_steps": [
{
"tool": "search_knowledge",
"status": "completed"
}
],
"human_rating": null
},
{
"id": "project-skill-tool-filter",
"query": "How is a tool call blocked when it is outside the selected skill permissions?",
"expected_document": "fixture_main.py",
"expected_evidence": "tool_name not in selected_skill.allowed_tools",
"rank": 1,
"top_paths": [
"fixture_main.py",
"fixture_workspace.py",
"fixture_knowledge.py"
],
"expected_document_chunks": [
102,
11,
99
],
"evidence_found": false,
"search_mode": "hybrid",
"agent_answer": "لم يتم توفير معلومات حول كيفية حظر استدعاء الأداة عندما يكون خارج أذونات المهارة المحددة.",
"agent_tool": "search_knowledge",
"agent_files": [
"fixture_main.py",
"fixture_knowledge.py"
],
"agent_steps": [
{
"tool": "search_knowledge",
"status": "completed"
}
],
"human_rating": null
},
{
"id": "project-agent-index-limits",
"query": "What file count and total size limits apply when indexing local knowledge?",
"expected_document": "fixture_knowledge.py",
"expected_evidence": "MAX_TOTAL_CHARS = 2_000_000",
"rank": 1,
"top_paths": [
"fixture_knowledge.py",
"fixture_main.py",
"fixture_workspace.py"
],
"expected_document_chunks": [
0
],
"evidence_found": true,
"search_mode": "hybrid",
"agent_answer": "لقد تم تحديد حدود للفهرسة بناءً على الأدوات المتاحة:\n\n* **حدود تحليل الملفات:**\n * الأداة `analyze_uploaded_code` تسمح بـ `max_files` قدره **3** و `max_total_bytes` قدره **524288** بايت (من `fixture_main.py · المقطع 28`).\n * الأداة `analyze_image` تسمح بـ `max_files` قدره **3** و `max_total_bytes` قدره **16777216** بايت (من `fixture_main.py · المقطع 26`).\n\n* **حدود قراءة الملفات (في سياق مساحة العمل):**\n * يتم رفض قراءة الملفات إذا كان حجمها أكبر من الحد المسموح به للقراءة (256 كيلوبايت) (من `fixture_workspace.py · المقطع 7`).\n\n* **حدود الفهرسة العامة:**\n * المعلومات حول الحد الأقصى لعدد الملفات الإجمالي وحجمه المحجوز عند فهرسة المعرفة المحلي غير محددة بشكل مباشر في المقاطع المسترجعة.\n\nالمصدر: fixture_main.py · المقطع 28، fixture_main.py · المقطع 26، fixture_workspace.py · المقطع 7",
"agent_tool": "search_knowledge",
"agent_files": [
"fixture_main.py",
"fixture_workspace.py"
],
"agent_steps": [
{
"tool": "search_knowledge",
"status": "completed"
}
],
"human_rating": null
}
],
"note": "Small deterministic fixture set. Retrieval metrics cover source ranking and evidence presence, not general RAG quality. Optional agent answers are retained for human review and are not auto-scored."
}