309 lines
11 KiB
JSON
309 lines
11 KiB
JSON
{
|
|
"created_at_utc": "2026-10-03T17:57:35.348769+00:00",
|
|
"base_url": "http://127.0.0.1:8131",
|
|
"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.8888888888888888,
|
|
"hit_at_3": 1.0,
|
|
"mean_reciprocal_rank": 0.9444444444444444,
|
|
"evidence_rate": 1.0
|
|
},
|
|
"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": 2,
|
|
"top_paths": [
|
|
"fixture_main.py",
|
|
"fixture_workspace.py"
|
|
],
|
|
"expected_document_chunks": [
|
|
5,
|
|
1,
|
|
19,
|
|
6,
|
|
10
|
|
],
|
|
"evidence_found": true,
|
|
"search_mode": "hybrid",
|
|
"agent_answer": "لا يتوفر دليل مباشر للإجابة على سؤالك.",
|
|
"agent_tool": "search_knowledge",
|
|
"agent_files": [
|
|
"fixture_main.py",
|
|
"fixture_workspace.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": 1,
|
|
"top_paths": [
|
|
"fixture_workspace.py",
|
|
"fixture_main.py"
|
|
],
|
|
"expected_document_chunks": [
|
|
13,
|
|
12,
|
|
15,
|
|
11,
|
|
14
|
|
],
|
|
"evidence_found": true,
|
|
"search_mode": "hybrid",
|
|
"agent_answer": "المعلومات المتوفرة غير كافية للإجابة على سؤالك.",
|
|
"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": 1,
|
|
"top_paths": [
|
|
"fixture_knowledge.py",
|
|
"fixture_workspace.py",
|
|
"fixture_main.py"
|
|
],
|
|
"expected_document_chunks": [
|
|
17,
|
|
11
|
|
],
|
|
"evidence_found": true,
|
|
"search_mode": "hybrid",
|
|
"agent_answer": "لم يتم العثور على دليل مباشر في المقاطع المسترجعة للإجابة على سؤالك.",
|
|
"agent_tool": "search_knowledge",
|
|
"agent_files": [
|
|
"fixture_main.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,
|
|
7,
|
|
16
|
|
],
|
|
"evidence_found": true,
|
|
"search_mode": "hybrid",
|
|
"agent_answer": "المقطع الذي يوضح حجم الكتلة والتداخل للت فهرسة المحلية هو:\n\"CHUNK_SIZE = 1000\nCHUNK_OVERLAP = 120\" من `fixture_knowledge.py` المقطع 0.\n\nلم يتم ذكر أي معلومات إضافية حول التكوين الأخرى.",
|
|
"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,
|
|
14
|
|
],
|
|
"evidence_found": true,
|
|
"search_mode": "hybrid",
|
|
"agent_answer": "المعلومات المسترجعة من فهرس المعرفة لا توفر تفاصيل حول كيفية ربط فهرس المعرفة بين التعابير العربية المختلفة عند البحث عن تفريغ التسجيل.\n\nالمقتطف المسترجع هو:\n\"فريغ\", \"للتفريغ\", \"transcription\"),\n\"يفرغ\": (\"تفريغ\", \"التفريغ\", \"للتفريغ\", \"transcription\"),\n\"التسجيلات\": (\"التسجيل\", \"التسجيلات\"),\n\"الصوتية\": (\"الصوت\", \"الصوتية\", \"audio\"),\n\"permission\": (\"allowed_tools\", \"tool_name\"),\n\"permissions\": (\"allowed_tools\", \"tool_name\"),\n\"صلاحية\": (\"allowed_tools\", \"tool_name\", \"مسموح\"),\n\"صلاحيات\": (\"allowed_tools\", \"tool_name\", \"مسموح\"),\n\nلم يتم العثور على دليل مباشر يجيب على كيفية ربط فهرس المعرفة بين التعابير العربية المختلفة عند البحث عن تفريغ التسجيل.",
|
|
"agent_tool": "search_knowledge",
|
|
"agent_files": [
|
|
"fixture_knowledge.py",
|
|
"fixture_main.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,
|
|
5,
|
|
4
|
|
],
|
|
"evidence_found": true,
|
|
"search_mode": "hybrid",
|
|
"agent_answer": "أنا آسف، لم أتمكن من العثور على معلومات محددة حول الحد الأقصى لعدد صفحات 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": 1,
|
|
"top_paths": [
|
|
"fixture_pdf.py",
|
|
"fixture_main.py"
|
|
],
|
|
"expected_document_chunks": [
|
|
1,
|
|
9
|
|
],
|
|
"evidence_found": true,
|
|
"search_mode": "hybrid",
|
|
"agent_answer": "أنا نموذج لغوي كبير، ووفقًا للمعلومات المتوفرة لدي من المقتطفات المسترجعة، لا يوجد دليل مباشر يوضح بالتفصيل ما يحدث إذا رفع المستخدم ملف PDF ممسوحًا ولا يحتوي على نص قابل للاستخراج.\n\nالمقتطفات المسترجعة تذكر إمكانية معالجة ملفات PDF (مثل: \"إذا لم تظهر السنة فاكتب أنها غير مذكورة. أجب بالعربية المنظمة.\") وبعض الإجراءات المتعلقة بقراءة الصفحات المرفقة، لكنها لا تقدم إجابة مباشرة على سيناريو الملفات الممسوحة التي لا تحتوي على نص.\n\n**لذا، لا يمكنني الإجابة على سؤالك بناءً على الأدلة المتاحة.**",
|
|
"agent_tool": "search_knowledge",
|
|
"agent_files": [
|
|
"fixture_main.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": [
|
|
101,
|
|
103,
|
|
100,
|
|
90,
|
|
11,
|
|
83
|
|
],
|
|
"evidence_found": true,
|
|
"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,
|
|
3
|
|
],
|
|
"evidence_found": true,
|
|
"search_mode": "hybrid",
|
|
"agent_answer": "المعلومات المتاحة تصف قيودًا على تحليل الملفات والصور المرفوعة، ولكنها لا تذكر بشكل مباشر قيود عدد الملفات أو الحجم الإجمالي عند فهرسة المعرفة المحلية.\n\nالمقاطع المسترجعة:\nلا يوجد دليل مباشر يوضح حدود عدد الملفات وحجمها الإجمالي عند فهرسة المعرفة المحلية.",
|
|
"agent_tool": "search_knowledge",
|
|
"agent_files": [
|
|
"fixture_main.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."
|
|
}
|