Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
sift-kg — حوّل أي مجموعة من المستندات إلى رسم بياني للمعرفة. استخرج الكيانات والعلاقات عبر LLM، وأزل التكرار بموافقتك. حدد المجالات، واكتشف الروابط المخفية، وابحث عن الأنماط عبر المستندات — معرفة تدوم وتتراكم، لك ولعوامل الذكاء الاصطناعي الخاصة بك. كل ذلك من CLI. | Kitploit
أدوات/GitHubGitHub/juanceresa/sift-kg
الاستخبارات مفتوحة المصدر (OSINT)التحقيق الجنائي الرقميجمع المعلوماتاستعادة البياناتالتحاليل الرقمية الجنائيةالأوراق والأبحاثالتعلم والتعليم
GitHubjuanceresa/sift-kg

sift-kg

حوّل أي مجموعة من المستندات إلى رسم بياني للمعرفة. استخرج الكيانات والعلاقات عبر LLM، وأزل التكرار بموافقتك. حدد المجالات، واكتشف الروابط المخفية، وابحث عن الأنماط عبر المستندات — معرفة تدوم وتتراكم، لك ولعوامل الذكاء الاصطناعي الخاصة بك. كل ذلك من CLI.

عرض المستودع
66758منذ 3 أشهرتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

sift-kg

حول أي مجموعة من المستندات إلى رسم بياني معرفي.

لا كود، لا قاعدة بيانات، لا بنية تحتية — فقط واجهة سطر أوامر و مستنداتك. أسقط ملفات PDF، أوراق بحثية، مقالات، أو سجلات — احصل على رسم بياني معرفي قابل للتصفح يوضح كيف يتصل كل شيء، في دقائق. sift-kg يستخرج الكيانات والعلاقات عبر LLM، ويزيل التكرار بموافقتك، ويولد عارضًا تفاعليًا يمكنك استكشافه في متصفحك. خرائط مفاهيم لأي شيء، في متناول يدك.

نفس الرسم البياني الذي يدعم تصوراتك يعمل أيضًا كـ دماغ ثانٍ للذكاء الاصطناعي. الجميع يقضون شهورًا في بناء قواعد معرفية في Notion و Obsidian. من لديه وقت لذلك؟ sift-kg هي الذاكرة المهيكلة التي تبنيها في دقيقتين بدلاً من عامين. فقط أشر إلى مستنداتك وسيحصل ذكاؤك الاصطناعي على فهم مهيكل لكيفية اتصال كل شيء.

عروض توضيحية حية → رسوم بيانية تم إنشاؤها بالكامل بواسطة sift-kg```bash pip install sift-kg

sift init # create sift.yaml + .env.example sift extract ./documents/ # extract entities & relations sift build # build knowledge graph sift resolve # find duplicate entities sift review # approve/reject merges interactively sift apply-merges # apply your decisions sift narrate # generate narrative summary sift view # interactive graph in your browser sift export graphml # export to Gephi, yEd, Cytoscape, SQLite, etc.

root@kitploit:~
## كيف يعمل```
Documents (PDF, DOCX, text, HTML, and 75+ formats)
       ↓
  Text Extraction (Kreuzberg, local) — with optional OCR (Tesseract, EasyOCR, PaddleOCR, or Google Cloud Vision)
       ↓
  Schema Discovery (LLM designs entity/relation types from your data — or use a predefined domain)
       ↓
  Entity & Relation Extraction (LLM, using discovered or predefined schema)
       ↓
  Knowledge Graph (NetworkX, JSON)
       ↓
  Entity Resolution (LLM proposes → you review)
       ↓
  Narrative Generation (LLM)
       ↓
  Interactive Viewer (browser) / Export (GraphML, GEXF, CSV, SQLite)

كل كيان وعلاقة يرتبط بالمستند والمقطع المصدر. أنت تتحكم فيما يتم دمجه. الرسم البياني ملكك.

الميزات

  • بداية بدون إعدادات — أشر إلى مجلد، تحصل على رسم بياني معرفي. أو ضع ملف sift.yaml في مشروعك للإعدادات الدائمة
  • أي مزود LLM — OpenAI, Anthropic, Mistral, Ollama (محلي/خاص)، أو أي مزود متوافق مع LiteLLM
  • بدون مخطط افتراضيًا — استدعاء واحد لـ LLM يأخذ عينات من مستنداتك ويصمم مخططًا مخصصًا للمجموعة، محفوظًا باسم discovered_domain.yaml لإعادة الاستخدام والتحرير. أو استخدم نطاقًا منظمًا (general, osint, academic) لمخططات ثابتة، أو حدد الخاص بك في YAML
  • الإنسان في الحلقة — يقترح sift دمج الكيانات، وتقوم بالموافقة أو الرفض في واجهة طرفية تفاعلية
  • بحث CLI — sift search "SBF" يجد الكيانات بالاسم أو الاسم المستعار، مع إخراج اختياري للعلاقة والوصف
  • عارض تفاعلي — استعرض الرسم البياني في المتصفح مع مناطق مجتمعية (مناطق ملونة تظهر بنية الرسم البياني)، معاينة عند التمرير، وضع التركيز (نقر مزدوج لعزل الأحياء)، التنقل بلوحة المفاتيح (مفاتيح الأسهم للتنقل عبر الاتصالات)، مسار التنقل (مسار دائم يتتبع استكشافك — تتبع العودة عبر كل عقدة زرتها)، بحث، تبديلات النوع/المجتمع/العلاقة، مرشح المستند المصدر، وتصفية الدرجة. التصفية المسبقة باستخدام علامات CLI: --neighborhood, --top, --community, --source-doc,

حالات الاستخدام

  • البحث والتعليم — رسم كيف ترتبط النظريات والأساليب والنتائج عبر مجموعة من الأدبيات. إنشاء خرائط مفاهيم للدورات، مراجعات الأدبيات، أو الدراسة الذاتية
  • ذكاء الأعمال — ضع أوراق المنافسين البيضاء، تقارير السوق، أو المستندات الداخلية وشاهد المشهد
  • العمل التحقيقي — حلل إصدارات FOIA، ملفات المحكمة، السجلات العامة، وتسريبات المستندات
  • المراجعة القانونية — استخراج وربط الكيانات عبر مجموعات المستندات
  • علم الأنساب — تتبع العلاقات العائلية عبر السجلات الحيوية

قاعدة معرفة الذكاء الاصطناعي

يقوم sift-kg بتوليد معرفة منظمة يمكن لوكلاء الذكاء الاصطناعي العمل منها مباشرة.

وجه sift إلى مستنداتك، ملاحظاتك، أو ملفات مشروعك. الناتج — رسم بياني معرفي بصيغة JSON — يمنح أي وكيل ذكاء اصطناعي فهمًا دائمًا ومنظمًا لكيفية اتصال كل شيء في عالمك. لا تنظيم يدوي، لا وسم، لا روابط ويكي. الهيكل ينبثق من المحتوى.```bash sift extract ./my-stuff/ sift build sift topology # structural overview (JSON, for agents) sift query "topic" # entity neighborhood subgraph (JSON, for agents) sift search "X" --json # entity lookup (JSON, for agents) sift info --json # project stats (JSON, for agents)

root@kitploit:~
الرسم البياني يستمر عبر الجلسات وينمو بشكل تدريجي — استخرج مستندات جديدة في نفس دليل الإخراج وأعد البناء. يضمن إلغاء تكرار الكيانات بقاء الرسم البياني متماسكًا مع نموه.

**ما يمنحه ذلك لعامل الذكاء الاصطناعي الخاص بك:**
- **البنية** — ليس فقط أجزاء النص، بل الكيانات والعلاقات والمجتمعات وكيفية اتصالها
- **الطوبولوجيا** — أي عناقيد المعرفة موجودة، وما يربطها، وما هو معزول
- **المتانة** — الرسم البياني ينجو من إعادة تعيين نافذة السياق. يتوقف عامل الذكاء الاصطناعي الخاص بك عن البدء من الصفر في كل جلسة

**مهارة العامل المرفقة:** يأتي sift-kg مع مهارة في `.agents/skills/sift-kg/SKILL.md` تعلم الوكلاء كيفية استخدام الرسم البياني للمعرفة كذاكرة دائمة — التوجيه في الجلسة، استكشاف الكيانات، التفكير في ربط جزر المعرفة، وتوليد الاقتراحات المدعومة.

## المجالات المرفقة

يأتي sift-kg مع مجالات متخصصة يمكنك استخدامها فورًا:```bash
sift domains                              # list available domains
sift extract ./docs/ --domain-name osint  # use a bundled domain

اضبط نطاقًا في ملف sift.yaml حتى لا تحتاج إلى العلامة في كل مرة:```yaml domain: academic

root@kitploit:~
يعمل مع الأسماء المضمنة (`schema-free`, `general`, `osint`, `academic`) أو مسار إلى ملف YAML مخصص.

| المجال | التركيز | أنواع الكيانات الرئيسية | أنواع العلاقات الرئيسية |
|--------|---------|------------------------|------------------------|
| `schema-free` | يُكتشف تلقائيًا من بياناتك (افتراضي) | *(يُصممها LLM لكل مجموعة)* | *(يُصممها LLM لكل مجموعة)* |
| `general` | تحليل عام للمستندات | PERSON, ORGANIZATION, LOCATION, EVENT, DOCUMENT | ASSOCIATED_WITH, MEMBER_OF, LOCATED_IN |
| `osint` | التحقيقات وطلبات حرية المعلومات | SHELL_COMPANY, FINANCIAL_ACCOUNT | BENEFICIAL_OWNER_OF, TRANSACTED_WITH, SIGNATORY_OF |
| `academic` | مراجعة الأدبيات ورسم خرائط الموضوعات | CONCEPT, THEORY, METHOD, SYSTEM, FINDING, PHENOMENON, RESEARCHER, PUBLICATION, FIELD, DATASET | SUPPORTS, CONTRADICTS, EXTENDS, IMPLEMENTS, EXPLAINS, PROPOSED_BY, USES_METHOD, APPLIED_TO, INVESTIGATES |

يقوم مجال **academic** برسم الخريطة الفكرية لمنطقة بحثية — قم بإدخال الأوراق واحصل على رسم بياني لكيفية ترابط النظريات والطرق والأنظمة والنتائج والمفاهيم. يميز بين الأفكار المجردة (THEORY, METHOD) والتحف الملموسة (SYSTEM — مثل GPT-2, BERT, GLUE). مصمم لمراجعات الأدبيات ورسم خرائط الموضوعات وفهم أين تتفق الأفكار أو تتعارض أو تبني على بعضها البعض.

مجال **schema-free** (الافتراضي) يقوم بتشغيل خطوة **اكتشاف المخطط** قبل الاستخراج — استدعاء LLM واحد يأخذ عينات من مستنداتك ويصمم أنواع الكيانات والعلاقات المخصصة للمجموعة. يتم حفظ المخطط المكتشف في `output/discovered_domain.yaml` ويتم إعادة استخدامه في التشغيلات اللاحقة، بحيث تظل الأنواع متسقة عبر جميع الأجزاء والمستندات. يمكنك فحص الملف أو تحريره يدويًا أو نسخه كنقطة بداية لمجال مخصص. استخدم `--force` لإعادة الاكتشاف. بدلاً من فرض العلاقات في فئات محددة مسبقًا مثل ASSOCIATED_WITH، فإنه ينتج أنواعًا محددة مثل FUNDED, TESTIFIED_AGAINST, أو ENROLLED_AT. استخدم مجالًا منظمًا مثل `general` أو `osint` عندما تريد مخططًا ثابتًا تحدده مسبقًا.

يوفر مجال **general** مخططًا ثابتًا بأنواع كيانات PERSON, ORGANIZATION, LOCATION, EVENT, DOCUMENT بالإضافة إلى أنواع العلاقات الشائعة. مفيد عندما تريد أنواعًا متوقعة ومتسقة عبر المستندات.

يضيف مجال **osint** أنواع كيانات للشركات الوهمية والحسابات المالية والولايات القضائية الخارجية، بالإضافة إلى أنواع علاقات لتتبع الملكية المستفيدة والتدفقات المالية.

لا يتم دمج أي شيء دون موافقتك — يقترح LLM، وتتحقق أنت. كل استخراج يرتبط بالمستند والمقطع المصدر.

انظر [`examples/transformers/`](https://github.com/juanceresa/sift-kg/blob/HEAD/examples/transformers/) لـ 12 ورقة أساسية في الذكاء الاصطناعي تم رسمها كرسم بياني للمفاهيم (425 كيانًا، ~0.72 دولار)، و [`examples/ftx/`](https://github.com/juanceresa/sift-kg/blob/HEAD/examples/ftx/) لانهيار FTX (431 كيانًا من 9 مقالات). [**استكشف العروض التوضيحية المباشرة**](https://juanceresa.github.io/sift-kg/) — بدون تثبيت، بدون مفتاح API.

## Civic Table

هل تبحث عن منصة مستضافة مع تحليل قانوني جنائي وتحقق من قبل المحللين؟

[**Civic Table**](https://github.com/juanceresa/forensic_analysis_platform) هي منصة استخبارات جنائية مبنية على خط أنابيب sift-kg. تضيف نظام تحقق من 4 مستويات حيث يقوم المحللون وخبراء القانون (JDs) بالتحقق من الحقائق المستخرجة بواسطة الذكاء الاصطناعي قبل معاملتها كأدلة، وتوليد ملفات LaTeX للتقديمات القانونية، وواجهة ويب لمشاركة النتائج مع العملاء والعائلات. مصممة لاستعادة الممتلكات والصحافة الاستقصائية وأي سياق تكون فيه سلسلة مصدر الوثائق مهمة.

sift-kg هي واجهة سطر الأوامر مفتوحة المصدر. Civic Table هي المنصة الكاملة — وحيث يتم تدقيق المخرجات من قبل المحللين وخبراء القانون قبل أن تحمل وزنًا إثباتيًا.

## التثبيت

يتطلب Python 3.11+.```bash
pip install sift-kg

لدعم التعرف البصري على الأحرف (OCR) (ملفات PDF ممسوحة ضوئيًا، صور):```bash

Local OCR — install Tesseract on your system

brew install tesseract # macOS sudo apt install tesseract-ocr # Ubuntu/Debian

Then use: sift extract ./docs/ --ocr

root@kitploit:~
بالنسبة لـ Google Cloud Vision OCR كواجهة خلفية بديلة (اختياري):```bash
pip install sift-kg[ocr]
# Then use: sift extract ./docs/ --ocr --ocr-backend gcv

للتجميع الدلالي أثناء حل الكيان (اختياري، ~2GB لـ PyTorch):```bash pip install sift-kg[embeddings]

root@kitploit:~
للتطوير:```bash
git clone https://github.com/juanceresa/sift-kg.git
cd sift-kg
pip install -e ".[dev]"

بداية سريعة

1. تهيئة وتكوين```bash

sift init # creates sift.yaml + .env.example cp .env.example .env # copy and add your API key

root@kitploit:~
`يُولد `sift init` ملف إعدادات المشروع `sift.yaml` بحيث لا تحتاج إلى وسوم في كل أمر:````yaml
# sift.yaml
domain: domain.yaml           # or a bundled name like "osint"
model: openai/gpt-4o-mini
ocr: true                     # enable OCR for scanned PDFs
# extraction:
#   backend: kreuzberg         # kreuzberg (default, 75+ formats) | pdfplumber
#   ocr_backend: tesseract     # tesseract | easyocr | paddleocr | gcv
#   ocr_language: eng

قم بتعيين مفتاح API الخاص بك في .env:``` SIFT_OPENAI_API_KEY=sk-...

root@kitploit:~
أو استخدم Anthropic أو Mistral أو Ollama أو أي مزود LiteLLM:```
SIFT_ANTHROPIC_API_KEY=sk-ant-...
SIFT_MISTRAL_API_KEY=...

Settings priority: CLI flags > env vars > .env > sift.yaml > defaults. You can override anything from sift.yaml with a flag on any command.

2. Extract entities and relations```bash

sift extract ./my-documents/ sift extract ./my-documents/ --ocr # local OCR via Tesseract sift extract ./my-documents/ --ocr --ocr-backend gcv # Google Cloud Vision OCR sift extract ./my-documents/ --extractor pdfplumber # legacy pdfplumber backend

root@kitploit:~
يدعم قراءة أكثر من 75 تنسيقًا للمستندات — PDFs، DOCX، XLSX، PPTX، HTML، EPUB، الصور، والمزيد. يستخرج الكيانات والعلاقات باستخدام نموذج اللغة الكبير (LLM) الذي قمت بتكوينه. يتم حفظ النتائج بصيغة JSON في `output/extractions/`.

العلامة `--ocr` تمكن OCR محلي عبر Tesseract لملفات PDF الممسوحة ضوئيًا — لا حاجة لمفاتيح API أو خدمات سحابية. يمكنك تبديل محركات OCR باستخدام `--ocr-backend`:```bash
sift extract ./docs/ --ocr                          # Tesseract (default, local)
sift extract ./docs/ --ocr --ocr-backend easyocr    # EasyOCR (local)
sift extract ./docs/ --ocr --ocr-backend paddleocr  # PaddleOCR (local)
sift extract ./docs/ --ocr --ocr-backend gcv        # Google Cloud Vision (requires credentials)

يتم الكشف تلقائيًا عن ملفات PDF التي تحتاج إلى OCR — ملفات PDF الغنية بالنصوص تستخدم الاستخراج القياسي، فقط الصفحات شبه الفارغة تلجأ إلى OCR. آمن للمجلدات المختلطة. بدون --ocr، سيقوم sift بالتحذير إذا بدا أن ملف PDF ممسوح ضوئيًا.

يمكنك أيضًا تبديل محرك الاستخراج بالكامل باستخدام --extractor pdfplumber لمحرك pdfplumber القديم (PDF/DOCX/TXT/HTML فقط).

3. بناء الرسم البياني المعرفي```bash

sift build

root@kitploit:~
ينشئ رسمًا بيانيًا NetworkX من جميع الاستخراجات. يقوم تلقائيًا بإزالة التكرارات لأسماء الكيانات المتطابقة تقريبًا (الجمع، متغيرات Unicode، اختلافات حالة الأحرف) قبل أن تصبح عقدًا في الرسم البياني. يصلح اتجاهات الحواف المعكوسة عندما يقوم LLM بتبديل أنواع المصدر/الهدف مقابل مخطط المجال. يضع علامات على العلاقات منخفضة الثقة للمراجعة. يحفظ في `output/graph_data.json`.

### 4. حل الكيانات المكررة

انظر [سير عمل حل الكيانات](#entity-resolution-workflow) أدناه للحصول على الدليل الكامل — مهم بشكل خاص لحالات استخدام علم الأنساب والقانون والتحقيقات حيث تكون الدقة مهمة.

### 5. استكشاف وتصدير

**عارض تفاعلي** — استكشف خريطة المفاهيم الخاصة بك في المتصفح:```bash
sift view                                              # full graph
sift view --neighborhood "Palantir Technologies"       # 1-hop ego graph around an entity
sift view --neighborhood "Palantir" --depth 3          # 3-hop neighborhood
sift view --top 10                                     # top 10 hubs + their neighbors
sift view --community "Community 1"                    # focus on a specific community
sift view --source-doc palantir_nsa_surveillance       # entities from one document
sift view --min-confidence 0.8                         # hide low-confidence nodes/edges

يفتح رسمًا بيانيًا موجهًا بالقوة في متصفحك. تُظهر النظرة العامة مناطق المجتمع — مجموعات محدبة ملونة تجمع الكيانات ذات الصلة — حتى تتمكن من رؤية هيكل الرسم البياني في لمحة دون فوضى التسميات. مرر فوق أي عقدة لمعاينة اسمها واتصالاتها. يتضمن البحث، ومفاتيح تبديل النوع/المجتمع/العلاقة، وفلتر المستند المصدر، وفلتر الدرجة، وشريط جانبي للتفاصيل.

تعمل علامات التصفية المسبقة (--top, --neighborhood, --source-doc, --min-confidence) على تقليل الرسم البياني قبل التقديم. --community يحدد مسبقًا مجتمعًا في الشريط الجانبي. --neighborhood يقبل معرفات الكيانات (person:alice) أو أسماء العرض (غير حساسة لحالة الأحرف).

وضع التركيز: انقر نقرًا مزدوجًا فوق أي كيان لعزل جيرانه. استخدم مفاتيح الأسهم للتنقل عبر الاتصالات واحدًا تلو الآخر — يتم عرض كل زوج في عزلة مع حواف موسومة. اضغط على Enter/يمين لتحويل التركيز إلى جار، Backspace/يسار للعودة على طول مسارك، Escape للخروج. يتم تتبع استكشافك كـ أثر فتات الخبز في الشريط الجانبي — مسار مستمر يظهر كل عقدة زرتها والعلاقات بينها. تظل حواف الأثر مظللة على اللوحة حتى تتمكن من رؤية مسارك عبر الرسم البياني. هذه هي الطريقة المقصودة لاستكشاف الرسوم البيانية الكثيفة — قم بالتكبير على ما يهم، تتبع الاتصالات، اقرأ الأدلة.

بحث CLI — استعلام عن الكيانات مباشرة من الطرفية:```bash sift search "Sam Bankman" # search by name sift search "SBF" # search by alias sift search "Caroline" -r # show relations sift search "FTX" -d -t ORGANIZATION # descriptions + type filter

root@kitploit:~
**الصادرات الثابتة** — لأدوات التحليل حيث تريد تخطيطًا مخصصًا أو تصفية أو تنسيقًا:```bash
sift export graphml           # → output/graph.graphml (Gephi, yEd, Cytoscape)
sift export gexf              # → output/graph.gexf (Gephi native)
sift export sqlite            # → output/graph.sqlite (SQL queries, DuckDB, Datasette)
sift export csv               # → output/csv/entities.csv + relations.csv
sift export json              # → output/graph.json

استخدم GraphML/GEXF عندما تريد التحكم في تحجيم العقد، وزن الحواف، مخططات الألوان المخصصة، أو تطبيق خوارزميات الرسم البياني (المركزية، اكتشاف المجتمعات) في أدوات مخصصة. SQLite مفيد لاستعلامات SQL المخصصة، نشر Datasette، أو التحميل إلى DuckDB.

6. إنشاء السرد```bash

sift narrate sift narrate --communities-only # regenerate community labels only (~$0.01)

root@kitploit:~
يُنتج `output/narrative.md` — تقريرًا نثريًا يتضمن نظرة عامة، وسلاسل علاقات رئيسية بين الكيانات العليا، وجدولًا زمنيًا (عند وجود تواريخ في البيانات)، وملفات تعريف الكيانات مجمعة حسب المجتمع الموضوعي (الذي تم اكتشافه عبر اكتشاف المجتمع بلوفان). تصاغ أوصاف الكيانات بصيغة الفعل المعلوم مع أفعال محددة، وليس ملخصات للأدوار.

## تكوين المجال

يحتوي sift-kg على أربعة مجالات مرفقة (انظر [المجالات المرفقة](#bundled-domains) أعلاه للتفاصيل). الافتراضي هو `schema-free`.

استخدم مجالًا مرفقًا:```bash
sift extract ./docs/ --domain-name osint

أو أنشئ ملف domain.yaml الخاص بك:```yaml name: My Domain fallback_relation: RELATED_TO # optional — catch-all for relations that don't fit defined types entity_types: PERSON: description: People and individuals extraction_hints: - Look for full names with titles COMPANY: description: Business entities DEPARTMENT: description: Named departments within a company canonical_names: # closed vocabulary — only these values allowed - Engineering - Sales - Legal - Marketing canonical_fallback_type: ORGANIZATION # non-canonical names get retyped relation_types: EMPLOYED_BY: description: Employment relationship source_types: [PERSON] target_types: [COMPANY] OWNS: description: Ownership relationship symmetric: false review_required: true RELATED_TO: # define the fallback type if you use one description: General relationship

root@kitploit:~
**فرض المخطط:** يتم التعامل مع أنواع الكيانات وأنواع العلاقات المحددة في نطاقك كمجموعة مغلقة — يُوجه نموذج اللغة الكبير (LLM) لاستخدام هذه الأنواع فقط ولن يخترع أنواعًا جديدة. إذا تم تعيين `fallback_relation`، فسيتم تعيين العلاقات التي لا تتوافق مع أي نوع محدد إلى النوع الاحتياطي. إذا تم حذفه، يستخدم النموذج (LLM) أقرب نوع مطابق محدد بثقة أقل. إذا رأيت العديد من العلاقات تصل إلى النوع الاحتياطي الخاص بك، فمن المحتمل أن مخططك يفتقر إلى نوع علاقة تحتاجه البيانات — قم بإضافته وأعد الاستخراج.

أنواع الكيانات مع `canonical_names` تفرض مفردات مغلقة. يتم حقن الأسماء المسموح بها في موجه استخراج النموذج (LLM) بحيث يُخرج مطابقات تامة. كشبكة أمان، يتم إعادة تصنيف أي اسم مستخرج غير موجود في القائمة إلى `canonical_fallback_type` أثناء بناء الرسم البياني (أو يُحتفظ به كما هو إذا لم يتم تعيين احتياطي). مفيد للتصنيفات الخاضعة للرقابة — الأقسام، النطاقات القضائية، التصنيفات المحددة مسبقًا.```bash
sift extract ./docs/ --domain path/to/domain.yaml

واجهة برمجة التطبيقات للمكتبة

استخدم sift-kg من بايثون — دفاتر Jupyter، النصوص، تطبيقات الويب:```python from sift_kg import load_domain, run_extract, run_build, run_narrate, run_resolve, run_export, run_view from sift_kg import KnowledgeGraph from pathlib import Path

domain = load_domain() # or load_domain(bundled_name="osint")

Extract — supports OCR, backend selection, concurrency

results = run_extract( Path("./docs"), "openai/gpt-4o-mini", domain, Path("./output"), ocr=True, ocr_backend="tesseract", # enable OCR for scanned PDFs extractor="kreuzberg", # or "pdfplumber" concurrency=4, chunk_size=10000, )

Build graph

kg = run_build(Path("./output"), domain) print(f"{kg.entity_count} entities, {kg.relation_count} relations")

Resolve duplicates — with optional semantic clustering

merges = run_resolve(Path("./output"), "openai/gpt-4o-mini", domain=domain, use_embeddings=True)

Export — json, graphml, gexf, csv, sqlite

run_export(Path("./output"), "sqlite")

Narrate — or just regenerate community labels cheaply

run_narrate(Path("./output"), "openai/gpt-4o-mini", communities_only=True)

View — with optional pre-filters

run_view(Path("./output")) # full graph run_view(Path("./output"), neighborhood="person:alice", depth=2) # ego graph run_view(Path("./output"), top_n=10) # top hubs

Or run the full pipeline (extract → build → narrate)

from sift_kg import run_pipeline run_pipeline(Path("./docs"), "openai/gpt-4o-mini", domain, Path("./output"))

root@kitploit:~
## هيكل المشروع

بعد تشغيل المسار، يحتوي دليل الإخراج الخاص بك على:```
output/
├── extractions/               # Per-document extraction JSON
│   ├── document1.json
│   └── document2.json
├── discovered_domain.yaml     # Auto-discovered schema (schema-free mode)
├── graph_data.json            # Knowledge graph (native format)
├── merge_proposals.yaml       # Entity merge proposals (DRAFT/CONFIRMED/REJECTED)
├── relation_review.yaml       # Flagged relations for review
├── narrative.md               # Generated narrative summary
├── entity_descriptions.json   # Entity descriptions (loaded by viewer)
├── communities.json           # Community assignments (shared by narrate + viewer)
├── graph.html                 # Interactive graph visualization
├── graph.graphml              # GraphML export (if exported)
├── graph.gexf                 # GEXF export (if exported)
├── graph.sqlite               # SQLite export (if exported)
└── csv/                       # CSV export (if exported)
    ├── entities.csv
    └── relations.csv

سير عمل حل الكيانات

عندما تقوم ببناء رسم بياني معرفي من سجلات العائلة، أو الملفات القانونية، أو أي مستندات حيث تكون الدقة مهمة، فإنك تريد السيطرة الكاملة على أي الكيانات يتم دمجها. لا يقوم sift-kg أبدًا بدمج أي شيء دون موافقتك.

يحتوي سير العمل على ثلاث طبقات، كل منها يكتشف أنواعًا مختلفة من التكرارات:

الطبقة 1: إزالة التكرار التلقائي المسبق (أثناء sift build)

قبل أن تصبح الكيانات عُقدًا في الرسم البياني، يقوم sift بشكل حتمي بتجميع الأسماء المتطابقة بشكل واضح. لا حاجة إلى LLM، لا تكلفة، لا مراجعة مطلوبة:

  • تطبيع Unicode — "Jose Garcia" و "Jose Garcia" يصبحان عقدة واحدة
  • إزالة الألقاب — يتم دمج "Detective Joe Recarey" و "Joe Recarey" (يزيل حوالي 35 بادئة شائعة: د., السيد, القاضي, السيناتور, إلخ.)
  • المفردة — يتم دمج "Companies" و "Company"
  • مطابقة السلاسل التقريبية — SemHash عند عتبة 0.95 يلتقط السلاسل المتطابقة تقريبًا مثل "MacAulay" مقابل "Mac Aulay"

يحدث هذا تلقائيًا في كل مرة تشغل فيها sift build. هذه هي الحالات التافهة — المتغيرات الإملائية التي من شأنها أن تزحم الرسم البياني دون إضافة معلومات.

الطبقة 2: LLM يقترح عمليات الدمج (أثناء sift resolve)

يرى LLM دفعات من الكيانات (جميع الأنواع باستثناء DOCUMENT) ويحدد تلك التي من المحتمل أن تشير إلى نفس الشيء في العالم الحقيقي. كما يكتشف التكرارات عبر الأنواع (نفس الاسم، نوع كيان مختلف) ويقترح علاقات متغيرة (EXTENDS) عندما يجد أنماط أب/ابن. النتائج تذهب إلى merge_proposals.yaml (دمج الكيانات) و relation_review.yaml (العلاقات المتغيرة)، جميعها تبدأ كـ DRAFT:```bash sift resolve # uses domain from sift.yaml sift resolve --domain osint # or specify explicitly

root@kitploit:~
إذا كان لديك نطاق مهيأ، فإن LLM يستخدم هذا السياق لاتخاذ أحكام أفضل حول أسماء الكيانات الخاصة بمجالك.

يؤدي هذا إلى توليد مقترحات مثل:```yaml
proposals:
- canonical_id: person:samuel_benjamin_bankman_fried
  canonical_name: Samuel Benjamin Bankman-Fried
  entity_type: PERSON
  status: DRAFT                    # ← you decide
  members:
  - id: person:bankman_fried
    name: Bankman-Fried
    confidence: 0.99
  reason: Same person referenced with full name vs. surname only.

- canonical_id: person:stephen_curry
  canonical_name: Stephen Curry
  entity_type: PERSON
  status: DRAFT                    # ← you decide
  members:
  - id: person:steph_curry
    name: Steph Curry
    confidence: 0.99
  reason: Same basketball player referenced with nickname 'Steph' and full name 'Stephen'.

لم يتم دمج أي شيء بعد. تقوم LLM بالاقتراح، وليس اتخاذ القرار.

المستوى 3: تقوم بالمراجعة واتخاذ القرار

لديك خياران لمراجعة الاقتراحات:

الخيار أ: مراجعة تفاعلية عبر الطرفية```bash sift review

root@kitploit:~
يمر عبر كل اقتراح `DRAFT` واحدًا تلو الآخر. لكل منها، ترى الكيان الأساسي، وأعضاء الدمج المقترحين، وثقة LLM والمنطق. توافق أو ترفض أو تتخطى.

يتم الموافقة تلقائيًا على الاقتراحات عالية الثقة (أكبر من 0.85 افتراضيًا)، ويتم رفض العلاقات منخفضة الثقة (أقل من أو يساوي 0.5 افتراضيًا) تلقائيًا:```bash
sift review                        # uses defaults: --auto-approve 0.85, --auto-reject 0.5
sift review --auto-approve 0.90    # raise the auto-approve threshold
sift review --auto-reject 0.3      # lower the auto-reject threshold
sift review --auto-approve 1.0     # disable auto-approve, review everything manually

الخيار ب: تعديل ملف YAML مباشرةً

افتح output/merge_proposals.yaml في أي محرر نصوص. غيّر status: DRAFT إلى CONFIRMED أو REJECTED:```yaml

  • canonical_id: person:stephen_curry canonical_name: Stephen Curry entity_type: PERSON status: CONFIRMED # ← approve this merge members:

    • id: person:steph_curry name: Steph Curry confidence: 0.99 reason: Same basketball player...
  • canonical_id: person:winklevoss_twins canonical_name: Winklevoss twins entity_type: PERSON status: REJECTED # ← these are distinct people, don't merge members:

    • id: person:cameron_winklevoss name: Cameron Winklevoss confidence: 0.95 reason: ...
root@kitploit:~
**بالنسبة لحالات الاستخدام عالية الدقة** (علم الأنساب، المراجعة القانونية)، نوصي بتحرير ملف YAML مباشرةً حتى تتمكن من دراسة كل اقتراح بعناية. الملف مصمم ليكون قابلًا للقراءة البشرية.

### الطبقة 3ب: مراجعة العلاقات

أثناء `sift build`، يتم الإبلاغ عن العلاقات التي تقل عن حد الثقة (الافتراضي 0.7) أو من الأنواع المُعلَّمة بأنها `review_required` في إعدادات نطاقك، في ملف `output/relation_review.yaml`:```yaml
review_threshold: 0.7
relations:
- source_name: Alice Smith
  target_name: Acme Corp
  relation_type: WORKS_FOR
  confidence: 0.45
  evidence: "Alice mentioned she used to work near the Acme building."
  status: DRAFT                    # ← you decide: CONFIRMED or REJECTED
  flag_reason: Low confidence (0.45 < 0.7)

نفس سير العمل: راجع باستخدام sift review أو حرّر ملف YAML، ثم طبّق.

الطبقة 4: طبّق قراراتك

بمجرد مراجعة كل شيء:```bash sift apply-merges

root@kitploit:~
يقوم هذا بثلاثة أمور:
1. **دمج الكيانات المؤكد** — يتم استيعاب الكيانات الأعضاء في الكيان الأساسي. يتم إعادة توصيل جميع علاقاتها. يتم دمج المستندات المصدر. تتم إزالة العقد الأعضاء.
2. **العلاقات المرفوضة** — يتم إزالتها بالكامل من الرسم البياني.
3. **مقترحات DRAFT** — تُترك كما هي دون تغيير. يمكنك العودة إليها لاحقًا.

يتم حفظ الرسم البياني مرة أخرى إلى `output/graph_data.json`. يمكنك إعادة التصدير، أو السرد، أو تصور الرسم البياني المنظف.

### التكرار

حل الكيانات ليس دائمًا عملية واحدة. بعد الدمج، قد تصبح نسخ مكررة جديدة واضحة. يمكنك إعادة التشغيل:```bash
sift resolve                  # find new duplicates in the cleaned graph
sift review                   # review the new proposals
sift apply-merges             # apply again

كل تشغيل هو عملية إضافية — يتم الاحتفاظ بالقرارات السابقة CONFIRMED/REJECTED في ملف merge_proposals.yaml.

سير العمل الموصى به حسب حالة الاستخدام

آلية إزالة التكرار الداخلية

تقنيات ما قبل إزالة التكرار وتجميع LLM مستوحاة من KGGen (NeurIPS 2025) بواسطة @stochastic-sisyphus. يستخدم KGGen SemHash لإزالة التكرار الحتمي للكيانات والتجميع القائم على التضمينات لتجميع الكيانات قبل مقارنة LLM. يقوم sift-kg بتكييف هذه التقنيات في سير عمل المراجعة الذي يتضمن العنصر البشري.

التجميع القائم على التضمينات (اختياري)

افتراضيًا، يقوم sift resolve بترتيب الكيانات أبجديًا وتقسيمها إلى دفعات متداخلة لمقارنة LLM. يعمل هذا بشكل جيد عندما تحتوي التكرارات على تهجئة متشابهة — ولكن "Robert Smith" (R) و "Bob Smith" (B) ينتهيان في دفعات مختلفة ولا يتم مقارنتهما أبدًا.```bash pip install sift-kg[embeddings] # sentence-transformers + scikit-learn (~2GB, pulls PyTorch) sift resolve --embeddings

root@kitploit:~
تستبدل هذه الميزة التجميع الأبجدي بتجميع KMeans على تضمينات الجمل (all-MiniLM-L6-v2). الأسماء المتشابهة دلاليًا تتجمع معًا بغض النظر عن التهجئة.

| | الافتراضي (أبجدي) | `--embeddings` |
|---|---|---|
| حجم التثبيت | مضمّن | ~2GB (PyTorch) |
| الحمل الزائد للتشغيل الأول | لا شيء | تنزيل نموذج بحجم ~90MB |
| الحمل الزائد لكل تشغيل | الفرز فقط | الترميز (<1s لمئات الكيانات) |
| التكرارات عبر الأبجديات | تفوتها إذا كانت في دفعات مختلفة | تُكتشف |
| الرسوم البيانية الصغيرة (<100/نوع) | نفس النتيجة | نفس النتيجة |

يتراجع إلى التجميع الأبجدي إذا لم يتم تثبيت التبعيات أو فشل التجميع.

## License

MIT
تنزيل الأداة
--min-confidence
  • تصدير في أي مكان — GraphML (yEd, Cytoscape)، GEXF (Gephi)، SQLite، CSV، أو JSON أصلي للتحليل المتقدم
  • توليد السرد — تقارير نثرية مع سلاسل العلاقات، جداول زمنية، وملفات تعريف الكيانات مجمعة حسب المجتمع
  • مصدر الأصل — كل استخراج يرتبط بالمستند والمقطع الذي جاء منه
  • متعدد اللغات — يستخرج من مستندات بأي لغة، ويخرج رسمًا بيانيًا معرفيًا إنجليزيًا موحدًا. تبقى الأسماء الصحيحة كما هي، ويتم تحويل النصوص غير اللاتينية إلى الحروف اللاتينية تلقائيًا
  • أكثر من 75 تنسيق مستند — PDF، DOCX، XLSX، PPTX، HTML، EPUB، صور، والمزيد عبر محرك الاستخراج Kreuzberg
  • OCR للمستندات PDF الممسوحة ضوئيًا — OCR محلي عبر Tesseract (افتراضي)، EasyOCR، أو PaddleOCR (علامة --ocr)، مع خيار احتياطي Google Cloud Vision (علامة --ocr-backend gcv)
  • ضوابط الميزانية — عيّن --max-cost لتحديد إنفاق LLM
  • يعمل محليًا — مستنداتك تبقى على جهازك
  • حالة الاستخدامالنهج المقترح
    الاستكشاف السريعsift review --auto-approve 0.85 — اعتماد عالي الثقة، مراجعة الباقي
    سجلات الأنساب / العائليةتعديل YAML يدويًا، --auto-approve 1.0 — مراجعة كل اندماج على حدة
    قانوني / تحقيقيsift resolve --embeddings، تعديل YAML يدويًا، استخدام sift view للفحص بين الجولات
    مجموعة كبيرة (أكثر من 1000 كيان)sift resolve --embeddings للحصول على تجميع أفضل، ثم مراجعة تفاعلية