爱泼斯坦数据集RAG系统
一个开源的检索增强生成(RAG)系统,用于分析杰弗里·爱泼斯坦调查中公开发布的文件。旨在使研究人员、记者和调查人员能够搜索、分析和查找数百万页美国司法部、众议院委员会和联邦调查局官方发布的内容之间的联系。
概述
该项目提供:
- 混合搜索:结合BM25关键字+矢量语义搜索,实现准确检索
- 实体图:通过关系映射提取人员、组织和地点
- 证据等级引用:每个结果都包括来源、页码和贝茨编号
- MCP服务器:通过模型上下文协议与Claude、GPT和其他LLM代理集成
- 多后端嵌入:支持Google Gemini API和OpenRouter
数据源
该系统设计用于官方公开发布:
| 来源 | 描述 |
|---|---|
| 美国司法部爱泼斯坦图书馆 | 约350万页,18万张图片,2K+视频 |
| 众议院监督委员会 | 其他文件发布 |
| 联邦调查局信息自由库 | 《信息自由法》发布 |
备注:此存储库包含处理代码和预先计算的嵌入。原始文件应从官方来源下载。
快速开始
先决条件
- Python 3.10+
- PostgreSQL(可选,SQLite用于开发)
- Meilisearch(用于关键字搜索)
安装
# Clone the repository
git clone https://github.com/yourusername/epsteindataset.git
cd epsteindataset
# Create virtual environment
python -m venv venv
source venv/bin/activate # or `venv\Scripts\activate` on Windows
# Install dependencies
pip install -r requirements.txt
# Download spaCy model for entity extraction
python -m spacy download en_core_web_sm
# Copy environment template
cp .env.example .env配置
编辑 .env 使用API密钥(选择一个):
# Option 1: Google Gemini API (Direct)
GEMINI_API_KEY=your_gemini_api_key
# Option 2: OpenRouter API
OPENROUTER_API_KEY=your_openrouter_api_key使用预构建数据集
存储库包括预处理的数据:
corpus.sqlite-带有提取文本和元数据的SQLite数据库data_archive.zip-其他处理数据
import sqlite3
# Connect to the corpus
conn = sqlite3.connect('corpus.sqlite')
cursor = conn.cursor()
# Query example
cursor.execute("SELECT * FROM documents LIMIT 10")
for row in cursor.fetchall():
print(row)运行MCP服务器
# Start the MCP server for LLM integration
python -m src.mcp_server.server建筑
┌─────────────────────────────────────────────────────────────┐
│ LLM Agent / User │
└─────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ MCP Server │
│ Tools: search, fetch_page, entity_lookup, evidence_pack │
└─────────────────────────────────────────────────────────────┘
│
┌───────────────┼───────────────┐
▼ ▼ ▼
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Hybrid Search │ │ Entity Graph │ │ Citation Builder│
│ (BM25+Vector) │ │ (Co-occurrence)│ │ (Provenance) │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│ │ │
└───────────────┼───────────────┘
▼
┌─────────────────────────────────────────────────────────────┐
│ Storage Layer │
│ PostgreSQL/SQLite │ Meilisearch │ LanceDB/Qdrant │
└─────────────────────────────────────────────────────────────┘MCP工具
MCP服务器为LLM代理提供以下工具:
| 工具 | 说明 |
|---|---|
search | 混合关键字+带过滤器的矢量搜索 |
fetch_page | 通过文档ID和页码获取整页内容 |
entity_lookup | 按名称查找实体 |
entity_neighbors | 发现实体连接 |
timeline | 实体的按时间顺序排列的事件 |
evidence_pack | 经过严格引用的精心策划的证据 |
示例用法(Claude)
User: Who visited Little Saint James in 2005?
Agent: [calls search tool]
Query: "Little Saint James visitors 2005"
Filters: {date_start: "2005-01-01", date_end: "2005-12-31"}
Results: [
{
"text": "Flight log entry showing...",
"citation": {
"source": "DOJ Dataset 3",
"page_number": 142,
"bates_number": "DOJ-00045821"
}
}
]项目结构
epsteindataset/
├── src/
│ ├── embeddings/ # Gemini/OpenRouter embedding providers
│ ├── processing/ # PDF extraction, OCR, chunking
│ ├── search/ # Hybrid search, vector stores
│ ├── database/ # SQLAlchemy models, schema
│ └── mcp_server/ # MCP server implementation
├── scripts/ # Data processing scripts
├── config/ # Configuration files
├── tests/ # Test suite
├── corpus.sqlite # Pre-processed document database
├── data_archive.zip # Additional processed data
├── requirements.txt # Python dependencies
├── .env.example # Environment template
└── README.md嵌入成本估算
使用Gemini gemini-embedding-001 每百万代币15美元:
| 场景 | 页面 | 估计。代币 | 标准 | 批量API |
|---|---|---|---|---|
| 小语料库 | 10万 | 3500万 | ~5美元 | ~2.5美元 |
| 中等 | 50万 | 17.5亿 | ~26美元 | ~13美元 |
| 全部司法部 | 350万 | 12亿 | 约180美元 | 约90美元 |
隐私与道德
本项目处理敏感调查材料。拜托:
- 不要重新分发原始媒体 -仅链接到官方来源
- 保留编辑 -永远不要试图泄露编辑过的内容
- 尊重受害者隐私 -不要识别或推测受害者
- 报告PII泄漏 -如果你发现无意中暴露了个人身份信息,请向司法部报告
美国司法部明确警告称,发布的信息可能包含无意中的非公开个人身份信息。这个系统反映了这种姿态。
贡献
欢迎投稿!请参阅 贡献.md 作为指导方针。
需要帮助的领域:
- 提高手写文档的OCR质量
- 实体解析和重复数据删除
- 构建可视化界面
- 性能优化
许可证
此项目根据MIT许可证获得许可-请参阅 许可证 了解详情。
免责声明
这是一个用于分析公开文件的研究工具。这些文件中有名字并不意味着有不当行为。始终:
- 将结果框定为“文档中提及”,而非结论
- 提供完整的引用
- 考虑周围页面的上下文
致谢
- 美国司法部爱泼斯坦图书馆 用于公共文件发布
- 爱泼斯坦档案馆 用于OCR处理工作
- PDF协会 用于文档结构分析
______________________________________________________________________
备注:本项目不隶属于任何政府机构或官方调查。
