pypi-ahmad/Cybersecurity-Threat-Intelligence-GraphRAG
GitHub: pypi-ahmad/Cybersecurity-Threat-Intelligence-GraphRAG
基于 GraphRAG 和多模态 RAG 技术的网络安全威胁情报分析助手,支持从 MITRE ATT&CK 数据中进行图谱检索、混合检索和 Agentic 工作流编排。
Stars: 0 | Forks: 0
# 网络安全威胁情报 GraphRAG
面向生产环境、教程优先的威胁情报助手,基于 MITRE ATT&CK STIX 数据构建,集成了 GraphRAG、混合检索、多模态 RAG 和 Agentic 工作流。
本仓库的文档均基于本项目内已存在的**真实执行运行产物**。本 README 中未使用任何虚拟指标。
## 我构建的内容
我实现并记录了六个可运行的 RAG 部分以及一份决策指南:
1. 第 1 部分:ChromaDB + GraphRAG(本地/全局/混合检索)
2. 第 2 部分:Pinecone + GraphRAG
3. 第 3 部分:基于 LangGraph 路由的 Agentic GraphRAG
4. 第 4 部分:混合 RAG(稠密 + 稀疏 BM25 + 图扩展)
5. 第 5 部分:带 OCR 的多模态 RAG(通过 Ollama 使用 `glm-ocr`)
6. 第 6 部分:视觉多模态 RAG(带降级路由的 `qwen3.5:4b`)
7. 第 7 部分(NB09):Unsloth/PEFT/TRL 决策指南(仅文档,不强制进行 fine-tuning)
## 模型技术栈
- Embeddings:`qwen3-embedding:4b` (Ollama)
- 生成器:`granite4.1:8b` (Ollama)
- LLM Judge:`granite4.1:8b` (Ollama)
- OCR(多模态):`glm-ocr:latest` (Ollama)
- 视觉(多模态):主用 `qwen3.5:4b`,降级使用 `qwen3.5:9b`
## 网络威胁图谱范围
pipeline 中使用的规范实体类型:
- 威胁行为者
- 恶意软件
- 漏洞
- CVE
- 攻击活动
- 工具
- 技术
- 组织
涵盖的能力:
- MITRE ATT&CK 映射
- 威胁行为者关系图
- 攻击活动分析图
- CVE 关联图
## 端到端架构
```
flowchart TD
A[MITRE ATT&CK STIX Ingestion] --> B[Chunking + Metadata]
B --> C[Embeddings qwen3-embedding:4b]
B --> D[Threat Knowledge Graph]
C --> E1[Chroma Index]
C --> E2[Pinecone Index]
E1 --> F[GraphRAG Retrieval]
E2 --> F
D --> F
F --> G[Section 3 Agentic LangGraph Orchestration]
F --> H[Section 4 Hybrid Dense+Sparse Fusion]
F --> I[Section 5 Multimodal OCR Fusion]
F --> J[Section 6 Vision Multimodal Fusion]
G --> K[Generation granite4.1:8b]
H --> K
I --> K
J --> L[Vision Generation qwen3.5:4b]
K --> M[LLM Judge granite4.1:8b]
L --> M
M --> N[Evaluation Artifacts + Figures]
```
## 真实运行快照(事实来源)
源文件:
- `evaluations/full_section_comparison.csv`
- `evaluations/missing_techniques_comparison.csv`
| 部分 | Precision@10 | Recall@10 | F1@10 | MRR | NDCG | Faithfulness | Judge Overall | 平均延迟 (s) | P95 延迟 (s) |
|---|---:|---:|---:|---:|---:|---:|---:|---:|---:|
| section1_chromadb_graphrag | 0.1000 | 0.8750 | 0.1780 | 0.3819 | 0.4712 | 0.1833 | 0.1950 | 31.731 | 36.644 |
| section2_pinecone_graphrag | 0.1000 | 0.8750 | 0.1780 | 0.3819 | 0.4712 | 0.1833 | 0.1950 | 30.453 | 35.735 |
| section3_agentic_langgraph_graphrag | 0.0500 | 0.4583 | 0.0896 | 0.1806 | 0.2425 | 0.3000 | 0.3325 | 44.405 | 71.091 |
| section4_hybrid_dense_sparse_graphrag | 0.1000 | 0.9167 | 0.1793 | 0.7917 | 0.7953 | 0.2375 | 0.2367 | 31.019 | 34.705 |
| section5_multimodal_graphrag_ocr | 0.1000 | 0.8750 | 0.1780 | 0.3819 | 0.4712 | 0.2292 | 0.1517 | 29.452 | 33.880 |
| section6_multimodal_vision_qwen35 | 0.1000 | 0.8750 | 0.1780 | 0.3819 | 0.4712 | 0.1542 | 0.1525 | 125.072 | 138.382 |
### 关键观察
- 最佳检索排名质量(`MRR`、`NDCG`):**第 4 部分 稠密+稀疏混合 GraphRAG**。
- 基于判官的最佳质量和 Faithfulness:**第 3 部分 Agentic GraphRAG**。
- 按延迟计算最快的部分:**第 5 部分 多模态 OCR**。
- 延迟开销最大的部分:**第 6 部分 视觉多模态**。
- 在这个包含 12 个查询的 benchmark 中,各部分的 Exact Match 均为 `0.0`,因此在解读时应侧重于语义指标(ROUGE/BERTScore/Faithfulness/Judge),而不是仅仅关注 EM。
## Agentic 路由(真实追踪)
来源:`outputs/section3_agentic_routing_trace.csv`
- 数据行数:12
- 策略频率:`hybrid=10`,`global=2`
- 尝试次数:`3 次尝试=11 个查询`,`1 次尝试=1 个查询`
- 检索质量平均值:`0.8114`
这证实了 LangGraph 工作流中存在主动纠错分支(检索评分 + 重试循环)。
## 多模态执行证据
- OCR 缓存文件:`outputs/multimodal/glm_ocr_cache.json`
- 条目:`13`
- 成功计数:`13`
- CVE 关联表:`outputs/multimodal/multimodal_cve_linkage_table.csv`
- 数据行数:`22`
## Notebook 序列
- `notebooks/NB01_data_exploration.executed.ipynb`
- `notebooks/NB02_chunking_and_embeddings.executed.ipynb`
- `notebooks/NB03_graph_construction.executed.ipynb`
- `notebooks/NB04_vector_store_and_retrieval.executed.ipynb`
- `notebooks/NB05_full_pipeline_evaluation.executed.ipynb`
- `notebooks/NB06_hybrid_dense_sparse_rag.executed.ipynb`
- `notebooks/NB07_multimodal_threat_intelligence_rag.executed.ipynb`
- `notebooks/NB08_vision_multimodal_rag_qwen35.executed.ipynb`
- `notebooks/NB09_unsloth_peft_trl_decision_guide.executed.ipynb`
## 最小化设置
```
cd /home/ahmad/AI/Cybersecurity-Threat-Intelligence-GraphRAG
uv python install 3.12.10
uv venv --python 3.12.10 .venv
source .venv/bin/activate
uv sync
```
拉取所需的 Ollama 模型:
```
ollama pull qwen3-embedding:4b
ollama pull granite4.1:8b
ollama pull glm-ocr:latest
ollama pull qwen3.5:4b
ollama pull qwen3.5:9b
```
环境配置:
```
cp .env.example .env
# 为 section 2 设置 PINECONE_API_KEY
```
## 运行命令
完整基准测试部分:
```
source .venv/bin/activate
python scripts/run_full_pipeline.py
```
缺失技术部分(混合 + 多模态):
```
source .venv/bin/activate
python scripts/run_missing_techniques.py --mode full
```
Notebook 执行:
```
source .venv/bin/activate
bash scripts/execute_notebooks.sh
```
## 产物映射
- 评估 JSON/CSV:`evaluations/`
- 跨部分图表:`outputs/*_comparison.png`
- 特定部分的图表:`outputs/section*_key_metrics.png`
- Agentic 路由诊断:`outputs/section3_agentic_routing_trace.csv`
- 多模态资产 + OCR 缓存:`outputs/multimodal/`
- 图谱产物:`graphs/cti_graph.gpickle`、`graphs/cti_graph.communities.json`
## 文档集
- 主手册:`docs/HANDBOOK.md`
- 教程:`docs/tutorials/`
- PDF 源文件:`docs/documentation.md`
- PDF 导出:`docs/documentation.pdf`
## 官方参考资料
- MITRE ATT&CK 数据和工具:https://attack.mitre.org/resources/attack-data-and-tools/
- GraphRAG 论文:https://arxiv.org/abs/2404.16130
- Microsoft GraphRAG 仓库/文档:https://github.com/microsoft/graphrag
- CRAG 论文:https://arxiv.org/abs/2401.15884
- LangGraph 文档:https://docs.langchain.com/oss/python/langgraph/quickstart
- Ollama API:https://docs.ollama.com/api
- Ollama `/api/embed`:https://docs.ollama.com/api/embed
- Ollama `/api/generate`:https://docs.ollama.com/api/generate
- Ollama `/api/chat`:https://docs.ollama.com/api/chat
- `glm-ocr` 模型卡片:https://registry.ollama.com/library/glm-ocr
- `qwen3.5` 模型卡片:https://registry.ollama.com/library/qwen3.5
- Pinecone Python SDK:https://github.com/pinecone-io/python-sdk
- Chroma collections 文档:https://cookbook.chromadb.dev/core/collections
- Ragas faithfulness 指标文档:https://docs.ragas.io/en/stable/concepts/metrics/available_metrics/faithfulness
- PEFT 文档:https://huggingface.co/docs/peft
- TRL 文档:https://huggingface.co/docs/trl
- Unsloth 文档:https://docs.unsloth.ai/
标签:AI风险缓解, Cloudflare, DLL 劫持, GraphRAG, LLM评估, MITRE ATT&CK, Ollama, 人工智能, 大语言模型, 威胁情报, 开发者工具, 检索增强生成, 用户模式Hook绕过, 逆向工具