YEsh-DEV/Cyber-Threat-Intelligence-
GitHub: YEsh-DEV/Cyber-Threat-Intelligence-
基于 GraphRAG 架构的 CTI 知识图谱构建框架,从非结构化威胁情报报告中低幻觉地提取结构化实体与关系并写入 Neo4j。
Stars: 0 | Forks: 0
# 🛡️ 高级网络威胁情报 (CTI) 抽取框架
### *基于 GraphRAG 增强的非结构化 CTI 叙述知识图谱构建*
[](#)
[](#)
[](#)
[](#)
[](#)
## 📖 概述
从海量、非结构化的网络威胁情报 (CTI) 报告中提取结构化情报是出了名的困难。虽然大型语言模型 (LLM) 擅长文本提取,但在处理密集的网络安全术语时,它们会出现**严重的幻觉**,经常凭空捏造恶意软件活动或错误地归因威胁行为者。
这个项目解决了这个问题。通过实施由 MITRE ATT&CK 框架支持的 **GraphRAG(图检索增强生成)**架构,本项目严格引导 LLM 从非结构化文本中提取高度准确、可验证的关系,并将它们直接映射到 **Neo4j 知识图谱**中。
### ✨ 本框架的优势
- 🎯 **零幻觉提示:** 使用严格区分的“背景上下文”与“事件叙述”,防止 LLM 将检索到的背景知识注入其提取结果中。
- 🚀 **极速的本地与云端提取:** 支持 Groq (Llama 3)、Google Gemini、Mistral 等高速 API 提取,同时支持使用 Ollama (Gemma/Qwen) 进行完全本地、物理隔离的提取。
- 🕸️ **自动化知识图谱构建:** 自动将非结构化文本转化为 Neo4j 数据库中的 `Entity` 和 `Relationship` 节点,用于高级威胁狩猎。
- 📊 **自动化的 LLM-as-a-Judge 评估:** 内置 RAGAS 风格的评估流水线,自动对提取结果的*忠实度 (Faithfulness)*、*相关性 (Relevance)*、*覆盖率 (Coverage)* 和*幻觉率 (Hallucination Rates)* 进行评分。
## 🏗️ 架构与所用技术
本项目基于多阶段流水线运行:
```
graph TD
A[Unstructured CTI XML] -->|XML Parser| B(Parsed Events Cache)
B --> C{Context Retriever}
C -->|No Context| D(LLM Only)
C -->|Vector Similarity| E(Vanilla RAG / ChromaDB)
C -->|Knowledge Graph| F(GraphRAG / NetworkX)
D --> G[LLM Extraction Engine]
E --> G
F --> G
G -->|Groq / Gemini / Ollama| H(Structured JSON)
H --> I{Evaluation Pipeline}
I -->|Local Ollama Judge| J[Performance Matrix]
H --> K[(Neo4j AuraDB)]
```
### 🛠️ 技术栈
- **语言:** Python 3.12
- **向量数据库:** ChromaDB(用于初始语义搜索)
- **内存图:** NetworkX(用于动态 1 跳 GraphRAG 上下文生成)
- **目标图数据库:** Neo4j (Cypher 查询语言)
- **LLM API:** Groq、Google Gemini、Mistral AI
- **本地推理:** Ollama (`gemma_e2b`, `qwen2.5-coder:7b`)
- **评估:** 自定义 RAGAS(检索增强生成评估)实现
## 🚀 快速开始
### 1. 前置条件
- Python 3.12+
- Neo4j AuraDB 实例(或本地 Neo4j Desktop)
- 本地安装 [Ollama](https://ollama.com/)(如果使用本地模型)
- Groq、Gemini 或 Mistral 的 API 密钥(如果使用云端模型)
### 2. 安装说明
克隆仓库并安装依赖:
```
git clone https://github.com/YEsh-DEV/Cyber-Threat-Intelligence-.git
cd Cyber-Threat-Intelligence-
python -m venv .venv
# 激活环境 (Windows)
.venv\Scripts\activate
# 安装 requirements
pip install -r requirements.txt
```
### 3. 环境变量
在根目录下创建 `.env` 文件并配置你的密钥:
```
# API Keys
MISTRAL_API_KEY="your_mistral_key"
GEMINI_API_KEY="your_gemini_key"
GROQ_API_KEY="your_groq_key"
# Neo4j Database
NEO4J_URI="neo4j+ssc://
| 提取方法 | 提取的实体数 | 提取的关系数 | 幻觉率 | 忠实度 |
|:---:|:---:|:---:|:---:|:---:|
| 🧠 **仅 LLM** | 105 | 32 | **0.100** | **0.890** |
| 📚 **基础 RAG** | 144 | 59 | 0.634 | 0.366 |
| 🕸️ **GraphRAG** | **125** | **159** | *0.567* | *0.413* |
## 📂 仓库结构
```
📦 Cyber-Threat-Intelligence-
┣ 📂 data_parsers/ # XML and STIX dataset parsers
┣ 📂 preprocessing/ # Event caching and filtering
┣ 📂 retrievers/ # ChromaDB Vector Store & NetworkX GraphRAG logic
┣ 📂 models/ # API wrappers for Groq, Gemini, Mistral, Ollama
┣ 📂 pipeline/ # Core extraction orchestration
┣ 📂 evaluation/ # Automated LLM-as-a-judge scoring system
┣ 📂 graph/ # Neo4j Cypher loaders
┣ 📂 deliverables/ # Final presentation matrices and reports
┣ 📜 run_demo.py # Main demonstration script
┗ 📜 config.py # Global variables and LLM configurations
```
## 输出:
专为高级网络威胁情报研究而构建
标签:AI风险缓解, DLL 劫持, GraphRAG, Neo4j, Python, 大语言模型, 威胁情报, 开发者工具, 无后门, 特权检测, 网络安全, 逆向工具, 隐私保护