关于 Sifter - Turn a folder of documents into typed records you can query
Sifter 是一个开源文档智能引擎,可依据自然语言字段描述,从 PDF、扫描件、合同、发票等文档中提取结构化记录,并支持精确查询与聚合。它面向需要对大量同类文档进行统计的团队,区别于基于相似度检索的 RAG。
主要功能
- 01依据自然语言描述自动推断提取结构
- 02存储为带类型的结构化记录
- 03支持过滤、计数、求和等精确查询
- 04提供 MCP 服务,支持读写工具
- 05提供 Python 与 TypeScript SDK 及命令行
适用场景
- 01汇总一个季度所有发票的未付总额
- 02查找即将在 90 天内到期的合同
- 03按技能与经验筛选候选人简历
MCP 相关
该项目是一个 MCP 服务,通过 stdio 传输向 MCP 客户端提供读写工具,用于查询已提取的文档记录。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
15收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| limit | integer | 否 | |
| offset | integer | 否 |
详细介绍
Sifter
你的文档是一座暗数据仓库。
开源文档智能引擎——由模式驱动的信息提取、自然语言查询、MCP 服务,以及 Python 和 TypeScript SDK。采用 MIT 许可证,可自托管。

为什么不选 RAG?
RAG 专为检索而构建——找出与此查询相似的文本块。但面对发票、合同或收据这类同质文档集合时,它就会失效:这些文档看起来都很相似,而问题需要的是汇总,而不是搜索。

Sifter 的做法是:一次性提取结构化字段(客户、日期、总额),将其存储为类型化记录,再通过实际筛选条件和聚合进行查询。答案准确且可复现——因为它来自数据库查询,而非相似性搜索。
快速开始
git clone https://github.com/sifter-ai/sifter
cd sifter/code
cp server/.env.example server/.env.local # set SIFTER_DEFAULT_API_KEY (required)
docker compose up -d
打开 http://localhost:3000——创建一个 sift,上传文档并查询结果。
Python SDK
pip install sifter-ai
from sifter import Sifter
s = Sifter(api_key="sk-...")
sift = s.create_sift("Invoices", "client name, date, total amount")
sift.upload("./invoices/")
sift.wait()
for record in sift.records():
print(record["extracted_data"])
# {"client": "Acme Corp", "date": "2024-01-15", "total_amount": 1500.0}
TypeScript SDK
npm install @sifter-ai/sdk
import { Sifter } from "@sifter-ai/sdk";
const client = new Sifter({ apiKey: "sk-..." });
const sift = await client.createSift("Invoices", "client, date, total amount");
await sift.upload("./invoices/");
await sift.wait();
const records = await sift.records();
console.log(records);
MCP 服务(Claude Desktop / Cursor / AI Agent)
{
"mcpServers": {
"sifter": {
"command": "uvx",
"args": ["sifter-mcp", "--base-url", "http://localhost:8000"],
"env": { "SIFTER_API_KEY": "sk-dev" }
}
}
}
然后提问:
“上季度所有发票中未付款项的总额是多少?” “列出未来 90 天内到期的所有合同。” “哪些候选人会 Python,且拥有超过 5 年的经验?”
Sifter 会以结构化数据作答——提供准确的计数、总和和筛选后的行,而不是一大段文本。
想要远程 MCP URL,又不想运行本地服务?→ Sifter Cloud
仪表板
Sifter 内置仪表板——无需 Metabase、Grafana 或 SQL。
用自然语言描述你想查看的内容:
sift = client.sifts.get("invoices")
sift.create_dashboard("Show total invoiced and unpaid by vendor, monthly trend")
即可生成 KPI 卡片、分类汇总和时间序列,并在每次提取后自动更新。
包含的功能
- 模式驱动的信息提取——用自然语言描述要提取的内容;系统会自动推断模式,并导出为 Pydantic / TypeScript 类型
- 自然语言查询——用自然语言提问;Sifter 会生成可检查的 MongoDB 聚合管道
- MCP 服务——stdio 传输方式,提供读取和写入工具,无需编写自定义集成代码
- REST API + SDK——完整的 OpenAPI 规范,以及适用于 Python 和 TypeScript 的类型化客户端
- Webhooks——每次提取事件都会触发使用 HMAC 签名的 HTTP 回调
- 规范驱动的仪表板——简短的自然语言规范 → 自动生成看板(KPI、分类汇总、表格、时间序列)
- 命令行工具——
sifter extract、sifter records、sifter sifts,用于终端工作流和 CI - 可自托管——使用 Docker Compose,接入你自己的 MongoDB 和大模型 API 密钥
不想运行基础设施?
Sifter Cloud 是托管版本——无需 MongoDB 或运维,提供远程 MCP 端点、Google Drive 和电子邮件接入。提供免费套餐。
文档
完整文档请访问 docs.sifter.run——包含快速开始指南、SDK 参考、MCP 指南、实用示例和自托管说明。
许可证
MIT——参见 LICENSE。
由 Bruno Fortunato 创建。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。