CTI-RAG
面向网络威胁情报的多跳 RAG 分析系统,融合知识图谱与多模型路由
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
面向网络威胁情报的多跳 RAG 分析系统,融合知识图谱与多模型路由
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一个场景:深夜,企业的安全运营中心(SOC)收到了大量告警。安全分析师需要在几分钟内搞清楚:这些告警是否关联?背后是哪个攻击组织?他们的战术技术偏好是什么?传统的做法是翻阅几十份威胁情报报告,在 Google 里一个个搜索 IOC——耗时且容易遗漏。
ThreatRAG(GitHub: Ais1on/CTI-RAG)正是为解决这一痛点而生。它将 RAG(检索增强生成)技术与知识图谱、多模型路由、混合检索相结合,构建了一个专门服务于网络威胁情报(CTI)分析场景的智能后端系统,让安全分析师能够围绕攻击组织、恶意软件、漏洞等实体进行可追溯的多跳分析。
网络威胁情报分析的核心挑战在于"碎片化":一份 APT 报告可能只提到某组织的部分手法,另一份漏洞通告又提供了不同视角。如果仅靠关键词搜索或人工阅读,安全分析师需要花费数小时才能拼凑出完整的威胁画像。
RAG(Retrieval-Augmented Generation,检索增强生成)的思路是:让大语言模型在回答问题前,先从可信的知识库中检索相关片段,再结合上下文生成答案。这在通用场景下已相当成熟,但直接搬到 CTI 领域会遇到几个独特问题:
ThreatRAG 正是围绕这三个问题设计了一套完整的解决方案。
ThreatRAG 的核心问答模块基于 LangChain 和 LlamaIndex 构建,支持文件上传(PDF/Word/Excel)、文本分块、向量化存储和相似度检索。系统会自动识别威胁情报中的关键实体,并在回答中标注来源,方便分析师溯源。
更关键的是,它支持流式输出——前端可以实时看到 AI 的推理过程和引用来源,这在安全场景中对于建立分析师信任非常重要。通过 meta.db_id、meta.model_provider、meta.model_name 等参数,分析师可以灵活切换知识库和模型来源,进行横向对比。
这是 ThreatRAG 与普通 RAG 系统最大的区别。它内置了一套完整的实体抽取 → 关系建模 → 图谱存储流水线:
Neo4j 的图查询能力让 ThreatRAG 能够回答传统向量检索无法搞定的问题,比如"距离某个 IP 两跳内所有关联的威胁实体",或者"某攻击组织最常利用的 MITRE ATT&CK 战术是什么"。
一个查询在 ThreatRAG 中会经过多个检索通道并行处理:
这种"混合检索 + 重排序"的架构在工业级 RAG 系统中非常常见,ThreatRAG 将其与 CTI 领域的具体需求结合,实现了向量语义和结构化关系的统一利用。
在实际安全运营中,不同时间段的模型可用性差异很大。ThreatRAG 实现了模型熔断机制:当主模型(如 DeepSeek)响应超时或异常时,自动降级到备用模型(如 Ollama 本地模型),并记录降级原因。
支持的模型来源包括:
ThreatRAG 使用 MySQL 持久化会话和消息,Redis 加速运行时读取。每个会话绑定到 user_id,支持:
ThreatRAG 采用了典型的微服务架构,通过 Docker Compose 编排多个独立服务:
| 服务 | 技术栈 | 作用 |
|---|---|---|
threatrag | FastAPI + Uvicorn | API 网关,处理所有前端请求 |
threatrag-worker | Python 多进程 | 异步任务处理器(文档解析、向量入库) |
| MySQL | MySQL 8 | 会话与知识库元数据持久化 |
| Redis | Redis 7 | 运行时缓存、会话加速 |
| RabbitMQ | RabbitMQ 3.13 | 任务队列,支持 Management UI |
| Neo4j | Neo4j 5 | 知识图谱存储 |
| Milvus | Milvus Lite | 向量数据库(可切换为全功能版) |
Docker 镜像使用 python:3.11-slim 基础镜像,通过 uv 包管理器加速 Python 依赖安装,并预装了 CPU 版 PyTorch 以支持本地模型推理。所有服务通过 Docker 网络互联,配置文件通过 .env 注入,部署过程高度标准化。
git clone https://github.com/Ais1on/CTI-RAG.git
cd CTI-RAG
cp .env.example .env
# 编辑 .env 填入 API Key
docker-compose up -d
系统会启动完整服务栈,API 监听在 8006 端口。初始化后可通过 Swagger UI(/docs)查看所有可用接口。
默认配置使用 Ollama 本地模型(qwen3:30b),如需更强的推理能力,可在 config.yaml 中切换到 DeepSeek 或 OpenAI。embedding 模型默认使用 DashScope 云端服务,也可替换为本地 BGE-M3。
ThreatRAG 代表了一个趋势:垂直领域 RAG 正在从通用问答走向专业工作流。与通用 ChatPDF 不同,它深度整合了知识图谱和多跳推理能力,更接近"安全分析师助手"而非"文档问答机器人"。
从 GitHub commit 历史看,项目最近一次更新为 2026 年 5 月,仍在活跃维护中。Star 数 299(_pending 状态),在 CTI + RAG 交叉领域属于中腰部项目,具有一定的参考价值和二次开发潜力。
如果你是安全工具开发者,可以基于 ThreatRAG 构建自己的威胁情报分析平台;如果你是企业 SOC 团队,可以将其作为内部知识库的基础设施,接入现有的 SIEM/SOAR 系统。