osintgpt
利用 GPT 与向量检索实现开源情报自动化分析,降低 AI 辅助情报工作的技术门槛
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
利用 GPT 与向量检索实现开源情报自动化分析,降低 AI 辅助情报工作的技术门槛
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。

图1:OSINTGPT 项目 logo(来源:GitHub 仓库)
想象你是一名开源情报(OSINT)分析师,需要从数千篇新闻报道、社交媒体帖子和公开报告中提炼有价值的情报线索。传统做法是手动阅读、标注、比对——一个人一天最多处理几十份文档,而一个中等规模的情报项目往往涉及数万份文本。
2023年,一位名为 Esteban Ponce de Leon 的开发者发布了一个开源工具,试图用大语言模型(LLM)来缓解这一困境。他将 OpenAI 的 GPT 模型与向量检索引擎结合,让机器能够"理解"文本语义,在海量数据中快速找出相关内容,并自动生成摘要。这就是 OSINTGPT——一个将 GPT 能力注入开源情报工作流的 Python 工具包。
OSINTGPT 由独立开发者 @estebanpdl 创建并维护,GitHub 仓库发布于 2023 年,采用 Apache 2.0 开源许可证。项目定位为"利用 OpenAI GPT 模型进行文本分析的开源情报工具",核心卖点是将语义嵌入(Embeddings)+ 向量相似度搜索 + GPT 对话推理三条链路串联起来,形成一套完整的 AI 辅助情报分析流水线。
从技术谱系看,OSINTGPT 属于 RAG(检索增强生成)架构的轻量级实现。RAG 是 2023 年大模型应用领域最热门的技术范式之一,其核心思想是:不让大模型凭空回答问题,而是先从外部知识库检索相关文档,再将检索结果作为上下文喂给模型,从而大幅提升回答的准确性和可溯源性。OSINTGPT 将这一范式落地到了开源情报这一垂直场景。
项目依赖 OpenAI 的 text-embedding-ada-002 模型(或更新的 text-embedding-3-small)将原始文本转换为 1536 维的高维向量。每个向量捕捉了文本的语义特征,使得语义相近的内容在向量空间中彼此靠近。
这一步骤由 osintgpt/embeddings/openai_embeddings.py 中的 OpenAIEmbeddingGenerator 类实现。它使用 tiktoken 库精确计算 token 数量,便于用户在调用 API 前估算成本。生成的嵌入向量可以导出为 CSV 文件存储,也可以直接推送至向量数据库。
项目支持两个主流向量数据库后端:
Qdrant 类封装了连接管理、集合操作、向量 CRUD 和相似度搜索等全部功能。osintgpt/vector_store/qdrant.py 的核心逻辑是:用户将嵌入向量及其元数据(payload)存入 Qdrant 集合,查询时只需传入问题向量,系统返回余弦相似度最高的 Top-K 结果。这本质上是一个语义搜索引擎——用户问"某公司的财务风险",系统找到的不是包含"财务"关键词的文档,而是语义上与该问题最相关的文档。
检索到相关文档后,SemanticOperations 类将文档内容与用户问题组装为 prompt,调用 OpenAI GPT 模型(如 gpt-3.5-turbo 或 gpt-4)生成回答或摘要。
核心流程如下:
OpenAIGPT.load_embeddings_from_csv() 读取已有的嵌入向量文件,或从 Qdrant 实时检索最新数据。scipy.spatial.distance.cosine 计算查询向量与候选文档向量的余弦距离,按相似度排序。basic_summarization 或 topic_modeling_summarization)和用户问题,发送给 GPT。项目采用分层模块化架构,各模块职责单一,通过标准 Python import 接口组合:
osintgpt/
├── llms/
│ └── openai_gpt.py # OpenAI GPT 模型封装(核心入口)
├── embeddings/
│ └── openai_embeddings.py # 嵌入向量生成
├── vector_store/
│ ├── base.py # 抽象基类定义向量引擎接口
│ └── qdrant.py # Qdrant 向量数据库实现
├── semantic_operations/
│ └── operations.py # 语义分析与摘要生成
├── databases/
│ └── sql_manager.py # SQLite 对话记录管理
├── prompts/
│ └── summarizing.py # 系统提示词模板
└── utils/
└── __init__.py # ID 生成等工具函数
这种设计的优势在于可替换性:若未来需要切换到 Azure OpenAI 或 Anthropic 模型,只需替换 llms/ 模块的实现;若要支持 Chroma 向量库,只需新增 vector_store/chroma.py 而无需改动业务逻辑。
代码质量方面,模块注释完整(每文件顶部的文件头注释 + 方法级 docstring),类型提示(type hints)覆盖了主要公开接口,代码遵循 PEP8 风格规范。整体处于 Alpha 阶段(Development Status :: 3 - Alpha),尚未配备完整的单元测试套件,测试目录仅包含 Qdrant 相关的少量测试用例。
OSINTGPT 以标准 Python 包发布,通过 pip install osintgpt 即可完成安装。运行时只需准备一份 .env 配置文件,填入必要的 API Key:
OPENAI_API_KEY=sk-...
OPENAI_GPT_MODEL=gpt-3.5-turbo
QDRANT_URL=https://xxx.qdrant.tech # 可选
QDRANT_API_KEY=... # 可选
PINECONE_API_KEY=... # 可选
优点:安装极简,Python 生态的开发者几乎零学习成本即可上手。
局限:无 Web 界面,全部操作需通过 Python 脚本或 Python REPL 调用;无 Docker 支持,无法实现一键部署;对中文文本的支持取决于 OpenAI Embeddings 模型的能力(text-embedding-3-small 对中文支持较好,但长文本仍建议分段处理)。
硬件要求方面,由于所有计算(嵌入生成和 GPT 推理)均由 OpenAI API 完成,本地只需约 1GB RAM 和 100MB 磁盘空间,无需 GPU。
1. API 成本风险:OpenAI 按 token 计费,大规模情报分析任务若涉及数万份文档,嵌入成本和 GPT 对话成本可能快速累积。项目提供了 tokens_estimated_cost.py 脚本帮助用户估算,但实际使用中仍需精打细算。
2. 数据隐私:用户的所有文本数据都会发送到 OpenAI 服务器。如果处理的是敏感情报或涉及隐私的数据,需要自行评估合规风险——这是 OSINT 场景中的核心考量。
3. 向量数据库运维负担:Qdrant 和 Pinecone 的部署、索引维护、数据备份等运维工作需要额外学习和资源投入。
4. 中文场景适配不足:项目默认配置针对英文场景优化(示例数据 big_bang_theory_imdb.csv 为英文),中文情报分析场景可能需要自行调优分块策略和提示词模板。
OSINTGPT 代表着 RAG 技术从通用聊天机器人向垂直领域工具落地的趋势。在开源情报市场,尽管已有 Maltego、Shodan、Recon-ng 等成熟商业工具,AI 原生的 OSINT 工具仍是一片蓝海。OSINTGPT 的意义不在于替代现有工具,而在于降低 AI 辅助情报分析的门槛——任何懂 Python 的人都能在几小时内搭建起一套语义检索 + GPT 推理的原型系统。
从增长曲线看,该项目自发布以来稳定积累(2023年12月前仍有活跃更新),获得了 512 颗 GitHub Stars 和 76 个 Fork,说明社区对这一方向存在真实需求。

图2:项目作者 @estebanpdl GitHub 头像
OSINTGPT 是一个将 RAG 范式落地的开源情报 Python 工具包,通过 OpenAI Embeddings + 向量数据库 + GPT 推理的三段式流水线,帮助情报分析师在海量文本中快速定位相关信息并生成摘要。其优势在于安装简单、代码清晰、模块可替换;局限在于纯 CLI 无 Web UI、依赖 OpenAI API(成本与隐私)、中文支持尚待优化。适合有一定 Python 基础的情报研究者和 AI 应用开发者作为 RAG 实战入门项目学习参考。