Import source: app/src/pages/TekRagHubPage

Import the existing local project snapshot. This commit organizes existing files; it does not represent newly developed functionality.
This commit is contained in:
arsam
2026-09-18 23:25:46 +03:30
parent 4e862c15fb
commit 99ab986989
+85
View File
@@ -0,0 +1,85 @@
import { useToast } from '../../teknav-ui.jsx';
import { iconNode } from '../../src/lib/icon.jsx';
import databaseIcon from '../../src/assets/icons/database.svg';
import linkIcon from '../../src/assets/icons/link.svg';
import settingsIcon from '../../src/assets/icons/settings.svg';
import clipboardIcon from '../../src/assets/icons/clipboard-copy.svg';
import { LegalPage, LegalSection } from './shared.jsx';
export function TekRagHubPage() {
const toast = useToast();
const copyToClipboard = (val) => {
navigator.clipboard.writeText(val);
toast('کپی شد!', 'success');
};
const citationText = `@article{tekrag_persian_2026,
title={TekRAG-Persian: A Data-Centric Evaluation Framework for Hallucination in Persian Retrieval-Augmented Generation},
author={Sabbagh, Arsam},
journal={Teknav Journal of AI Research},
volume={1},
number={1},
pages={10-24},
year={2026},
publisher={Teknav Media}
}`;
return (
<LegalPage title="مجموعه داده و بنچمارک TekRAG-Persian" subtitle="چارچوب داده‌محور برای ارزیابی پدیده توهم (Hallucination) در سیستم‌های بازیابی اطلاعات فارسی.">
<div style={{ display: 'flex', flexDirection: 'column', gap: 24 }}>
<LegalSection title="معرفی چارچوب پژوهش">
<p style={{ margin: '0 0 12px', lineHeight: 1.8 }}><strong>TekRAG-Persian</strong> اولین مجموعه داده و چارچوب بنچمارک متمرکز بر زبان فارسی برای سنجش و کاهش میزان توهم در پیاده‌سازی‌های RAG است. این پروژه بر مبنای تحلیل مقاله‌های تخصصی رسانه تکناو و پاسخ‌دهی دقیق مدل‌های زبانی بزرگ توسعه داده شده است.</p>
<p style={{ margin: 0, lineHeight: 1.8 }}>هدف این بنچمارک ارزیابی سه متغیر کلیدی در بهبود عملکرد سیستم‌های بازیابی است: پاک‌سازی پیش‌رفته متن، افزودن متادیتاهای ساختاریافته به تکه‌ها، و تأثیر هدایت مدل با تأکید بر استناد به منابع اصلی.</p>
</LegalSection>
<LegalSection title="شناسنامه و لینک‌های دسترسی">
<div style={{ display: 'grid', gridTemplateColumns: 'repeat(auto-fit, minmax(240px, 1fr))', gap: 16 }}>
{[
[databaseIcon, 'مجموعه داده در Hugging Face', 'دسترسی به فایل‌های خام متون و پرسش‌ها', 'https://huggingface.co/datasets/teknav/tekrag-persian', 'مشاهده دیتاست'],
[linkIcon, 'شناسه دیجیتال Zenodo (DOI)', 'نسخه آرشیو شده و معتبر علمی پژوهش', 'https://doi.org/10.5281/zenodo.placeholder', 'مشاهده DOI'],
[settingsIcon, 'سورس‌کد در GitHub', 'کدهای پیاده‌سازی و ارزیابی بنچمارک', 'https://github.com/teknav/tekrag-persian', 'مشاهده ریپازیتوری'],
].map(([icon, title, desc, link, btnText]) => (
<div key={title} style={{ background: '#FAF7F0', border: '1px solid #E4DDD2', borderRadius: 10, padding: 18, display: 'flex', flexDirection: 'column', justifyContent: 'space-between' }}>
<div>
<h3 style={{ fontSize: 14, fontWeight: 800, color: '#0F2A2E', marginBottom: 6 }}>{iconNode(icon)} {title}</h3>
<p style={{ fontSize: 12, color: '#5F6B6D', margin: '0 0 16px', lineHeight: 1.6 }}>{desc}</p>
</div>
<a href={link} target="_blank" rel="noopener noreferrer" style={{ display: 'block', textAlign: 'center', background: '#0F6B73', color: '#fff', textDecoration: 'none', borderRadius: 6, padding: '8px 14px', fontSize: 12, fontWeight: 600, fontFamily: 'Vazirmatn,sans-serif' }}>
{btnText}
</a>
</div>
))}
</div>
</LegalSection>
<LegalSection title="نحوه ارجاع علمی (Citation)">
<p style={{ margin: '0 0 12px', lineHeight: 1.8 }}>اگر از این بنچمارک یا دیتاست در پژوهش‌های دانشگاهی یا پروژه‌های علمی خود استفاده می‌کنید، لطفاً با فرمت BibTeX زیر به آن ارجاع دهید:</p>
<div style={{ position: 'relative' }}>
<button onClick={() => copyToClipboard(citationText)} style={{ position: 'absolute', top: 12, left: 12, background: '#fff', border: '1px solid #D8D0C4', borderRadius: 6, padding: '5px 10px', fontSize: 11, cursor: 'pointer', fontFamily: 'Vazirmatn, sans-serif' }}>
<span className="tek-icon" style={{ ['--i']: `url("${clipboardIcon}")` }} aria-hidden="true" /> کپی ارجاع
</button>
<pre style={{ background: '#FAF7F0', border: '1px solid #E4DDD2', borderRadius: 10, padding: '44px 20px 20px', fontSize: 12, fontFamily: 'monospace', direction: 'ltr', textAlign: 'left', overflowX: 'auto', margin: 0, lineHeight: 1.6 }}>
{citationText}
</pre>
</div>
</LegalSection>
<LegalSection title="ساختار مجموعه داده">
<p style={{ margin: '0 0 16px', lineHeight: 1.8 }}>این بنچمارک شامل بخش‌های زیر در فرمت JSON است:</p>
<div style={{ display: 'flex', flexDirection: 'column', gap: 10 }}>
{[
['Corpus (بدنه داده)', 'شامل مقاله‌های تخصصی با تگ‌ها، دسته‌بندی، پاراگراف‌ها و عناوین مجزا.'],
['Questions (سوالات)', '۲۰۰ سوال واقعی طراحی شده توسط متخصصان در سطوح مختلف دشواری.'],
['Gold Annotations (پاسخ‌های طلایی)', 'تکه‌های دقیق پشتیبان برای هر سوال جهت سنجش بازیابی درست اطلاعات.'],
].map(([t, d]) => (
<div key={t} style={{ display: 'flex', gap: 12, alignItems: 'flex-start', background: '#FAF7F020', border: '1px solid #E4DDD255', borderRadius: 8, padding: 12 }}>
<span style={{ fontSize: 13, fontWeight: 700, color: '#0F6B73', minWidth: 140 }}>{t}</span>
<span style={{ fontSize: 13, color: '#5F6B6D' }}>{d}</span>
</div>
))}
</div>
</LegalSection>
</div>
</LegalPage>
);
}