MCP-原生代理超RAG(HyperRAG)
一个基于MCP(模型-控制器-提供者)架构构建的综合RAG(检索增强生成)系统,支持波斯语和英语,具备企业级功能。
🏗️ 架构概述
该系统采用三阶段方法实施:
- 第一阶段专业RAG系统,支持混合搜索与重排序
- 第二阶段智能打包的长上下文管理
- 第三阶段具有决策循环的代理执行
核心组件
- 文档摄入多语言文档处理,同时去除个人身份信息(PII)
- 智能分块处理特定语言的文本分段
- 混合检索使用RRF进行密集+稀疏向量搜索
- 重新排序用于相关性评分的交叉编码器模型
- 多租户安全OPA策略与租户隔离
- 可观测性使用OTEL、Grafana和Langfuse进行全面监控
🚀 快速入门
先决条件
- Docker 和 Docker Compose
- Python 3.9及以上版本
- Git(一种分布式版本控制系统)
安装
- 克隆仓库:
git clone
cd Hyper-RAG- 启动所有服务:
./start-services.sh- 验证服务是否正在运行:
# Check service health
curl http://localhost:8000/health # Ingestor
curl http://localhost:8001/health # Normalizer
curl http://localhost:8002/health # Retriever
curl http://localhost:8003/health # Chunker
curl http://localhost:8004/health # Embedder服务URL
| 服务 | URL | 描述 |
|---|---|---|
| 输入内容:Ingestor API | http://localhost:8000 | Document ingestion |
| 翻译内容:输入处理器API | http://localhost:8000 | 文档输入 |
根据上面的信息,执行如下指令: 检索器API | http://localhost:8002 | 混合搜索与再排序 分块器API | http://localhost:8003 | 智能文本分块 嵌入API | http://localhost:8004 | 向量嵌入生成 | MinIO 控制台 | http://localhost:9001 | 对象存储(管理员/密码123) | | Qdrant 控制台 | http://localhost:6333/dashboard | 向量数据库 | | Neo4j 浏览器 | http://localhost:7474 | 知识图谱(用户名:neo4j,密码:password123) | | Grafana | http://localhost:3000 | 监控(管理员/管理员123) | | Prometheus | http://localhost:9090 | 指标 | | Jaeger | http://localhost:16686 | 分布式追踪 |
| Langfuse | http://localhost:3001 | AI质量监控 |
📚 使用示例
# Ingest an English document
curl -X POST "http://localhost:8000/ingest" \
-F "doc_id=sample-doc-1" \
-F "tenant=acme" \
-F "project=alpha" \
-F "lang=en" \
-F "title=Sample English Document" \
-F "file=@sample.txt"
# Ingest a Persian document
curl -X POST "http://localhost:8000/ingest" \
-F "doc_id=sample-doc-2" \
-F "tenant=acme" \
-F "project=alpha" \
-F "lang=fa" \
-F "title=سند نمونه فارسی" \
-F "file=@sample_fa.txt"1. 文档摄入/处理
# Search in English
curl -X POST "http://localhost:8002/retrieve" \
-H "Content-Type: application/json" \
-d '{
"query": "What is the main topic?",
"lang": "en",
"tenant": "acme",
"k_final": 5,
"rerank": true
}'
# Search in Persian
curl -X POST "http://localhost:8002/retrieve" \
-H "Content-Type: application/json" \
-d '{
"query": "موضوع اصلی چیست؟",
"lang": "fa",
"tenant": "acme",
"k_final": 5,
"rerank": true
}'2. 文档检索
# Check processing status
curl "http://localhost:8000/documents/sample-doc-1/status"3. 检查文件状态
🔧 配置
环境变量
# Database
DATABASE_URL=postgresql://hyperrag:password123@localhost:5432/hyperrag
# Redis
REDIS_URL=redis://localhost:6379
# NATS
NATS_URL=nats://localhost:4222
# Qdrant
QDRANT_URL=http://localhost:6333
# MinIO/S3
MINIO_ENDPOINT=localhost:9000
MINIO_ACCESS_KEY=admin
MINIO_SECRET_KEY=password123
# Models
PERSIAN_EMBEDDING_MODEL=HooshvareLab/bert-fa-base-uncased
ENGLISH_EMBEDDING_MODEL=sentence-transformers/all-MiniLM-L6-v2每个服务都可以通过环境变量进行配置:
# Chunk size and overlap
CHUNK_SIZE=1000
CHUNK_OVERLAP=200
MAX_CHUNK_SIZE=2000
MIN_CHUNK_SIZE=100分块参数
🏛️ 建筑细节
- 数据流摄入
- 文档已上传并存储在MinIO中规范化
- 个人身份信息(PII)的移除和文本规范化分块处理
- 特定语言的文本分段嵌入
- 使用语言特定模型进行向量生成索引编制
- 在Qdrant中存储带有元数据的信息检索
使用RRF的混合搜索与重新排序
- 多租户安全租户隔离
- PostgreSQL中的行级安全性访问控制
- 针对细粒度权限的OPA策略数据加密
- 服务之间的双向传输层安全性(mTLS)审计轨迹(或审计追踪)
完整的操作日志记录
语言支持
- 波斯语(فارسی)文本处理
- 用于规范化的Hazm库嵌入模型
HooshvareLab/bert-fa-base-uncased - :分块处理
- 句子感知的分段RTL(从右到左)支持
正确的文本渲染
- 英语文本处理
- SpaCy 和标准库嵌入模型
sentence-transformers/all-MiniLM-L6-v2 - :分块(或称为“分组”)
- 递归字符拆分重新排序
交叉编码器模型
📊 监控与可观测性
- 指标检索质量
- 忠实度,前10名召回率演出
- p95延迟,吞吐量成本
- 令牌使用量,嵌入成本可靠性
成功率,错误数
- 仪表盘Grafana(中文可译为“格拉夫纳”,但通常直接使用原名,因其是一个知名的数据可视化工具名称)
- 系统指标和性能Langfuse(注:这是一个专有名词,直接音译为“朗夫斯”,但具体含义或品牌名需根据上下文或官方解释来确定,此处仅为音译)
- 人工智能质量与评估雅各(Jaeger,根据语境也可能翻译为“杰格”等,但“雅各”是较为常见的译法之一)
- 分布式追踪普罗米修斯
原始指标收集
SLO 目标
| 指标 | 目标 | 告警阈值 |
|---|---|---|
| 保真度(英文) | ≥ 0.88 | \ 2秒 |
| p95 延迟(安全) | ≤ 3秒 | > 4秒 |
| 每次查询成本 | ≤ $0.002 | > $0.003 |
🔒 安全功能
- PII保护(个人身份信息保护)检测
- 多语言分析仪(Presidio)匿名化
- 自动个人身份信息(PII)替换审计
完整的PII(个人可识别信息)检测日志
- 访问控制认证
- 带有OIDC集成的JWT授权
- 带有OPA策略的ABAC(基于属性的访问控制)租户隔离
完全的数据隔离
- 数据保护加密
- SSE-KMS 用于对象存储网络
- 所有服务之间的双向TLS(mTLS)合规
用于审计追踪的只读存储(WORM存储)
🧪 测试
# Run tests for each service
cd platform/services/ingestor
python -m pytest tests/
cd ../retriever
python -m pytest tests/单元测试
# Run end-to-end tests
python tests/integration/test_full_pipeline.py集成测试
# Load testing
python tests/performance/load_test.py性能测试
🚀 部署
./start-services.sh发展
# Using Helm
helm install hyperrag platform/infra/helmfile/
# Using Docker Compose
docker-compose -f platform/infra/compose/docker-compose.prod.yml up -d生产
# Deploy to Kubernetes
kubectl apply -f platform/infra/k8s/Kubernetes(通常简称为K8s)
📈 性能优化
- 检索优化向量索引
- 具有优化参数的HNSW(高效近似最近邻搜索算法)批处理
- 并行嵌入生成缓存
- 用于频繁查询的Redis重新排序
高效的交叉编码器模型
- 资源管理连接池
- 优化数据库连接内存管理
- 高效的模型加载CPU利用率
尽可能进行并行处理
- 🤝 贡献(或“参与贡献”)
- 克隆仓库
- 创建一个特性分支
- 做出你的更改
- 添加测试
提交拉取请求
# Install development dependencies
pip install -r requirements-dev.txt
# Run linting
flake8 platform/
black platform/
# Run tests
pytest tests/开发环境设置
📄 许可证 这个项目采用MIT许可证授权 - 请参阅 许可证
文件中有详细信息。
- 🆘 支持文档 :
- docs/(文档/文件夹)问题
- GitHub Issues(GitHub问题)讨论
- GitHub 讨论区电子邮件
support@hyperrag.ai(可译为:支持邮箱:support@hyperrag.ai)
🗺️ 路线图/路线规划
- 第一阶段(已完成)
- ✅ 文档摄入与处理
- ✅ 支持多种语言(波斯语/英语)
- ✅ 使用RRF的混合检索
- ✅ 重新排序功能
✅ 基本可观测性
- 第二阶段(进行中)
- 🔄 长期上下文管理
- 🔄 智能包装
- 🔄 存储系统
🔄 高级缓存
- 第三阶段(计划中)
- ⏳ 代理协调
- ⏳ 决策循环
- ⏳ 高级护栏
______________________________________________________________________
⏳ 成本优化
