# BidiRAG - 招投标领域RAG检索与生成项目 基于多种RAG(Retrieval-Augmented Generation)方法的招投标公告和附件信息检索与字段提取系统。 ## 项目简介 本项目专注于招投标领域的智能化信息处理,核心功能包括: - 多种RAG检索方法的实现与对比 - 招投标公告结构化字段提取 - 检索效果与速度的基准测试 ## 支持的RAG方法 ### 基础方法 | 方法 | 描述 | 特点 | | ------------------- | --------- | ------------------ | | **BM25RAG** | BM25关键词检索 | 纯BM25概率模型,不依赖向量嵌入 | | **TFIDFRAG** | TF-IDF检索 | 纯TF-IDF余弦相似度,不依赖向量嵌入 | | **NaiveRAG** | 最基础的RAG实现 | 向量语义检索 + LLM生成 | | **RerankRAG** | 带重排序的RAG | 初始检索后使用重排模型精排 | | **HybridSearchRAG** | 混合搜索RAG | 语义检索 + BM25关键词检索融合 | ### 高级方法 | 方法 | 描述 | 特点 | | ---------------------------- | --------- | -------------------- | | **MultiQueryRAG** | 多查询扩展RAG | 将原问题扩展为多个角度查询 | | **HyDERAG** | 假设文档嵌入RAG | 先生成假设文档再检索 | | **SelfRAG** | 自我反思RAG | 检索前判断是否需要检索,检索后评估相关性 | | **CorrectiveRAG** | 纠正性RAG | 评估文档正确性,不足时补充外部搜索 | | **FLARERAG** | 主动检索生成RAG | 迭代式检索与生成 | | **RAPTORRAG** | 递归摘要树RAG | 构建多层级摘要树进行检索 | | **StepBackRAG** | 抽象回退RAG | 将具体问题抽象为高层问题检索背景知识 | | **ContextualCompressionRAG** | 上下文压缩RAG | 压缩检索结果仅保留相关信息 | | **EnsembleRAG** | 集成检索RAG | 多种检索策略结果融合 | ### 招投标专用方法 | 方法 | 描述 | 特点 | | ------------------------- | ---------- | -------------- | | **BidFieldExtractionRAG** | 招投标字段提取RAG | 针对招投标字段优化检索与提取 | | **TableAwareRAG** | 表格感知RAG | 专门处理表格和结构化数据 | | **GraphRAG** | 图谱增强RAG | 结合实体关系图谱进行检索 | ## 项目结构 ``` BidiRAG/ ├── bdirag/ │ ├── __init__.py │ ├── config.py # 配置文件 │ ├── document_processor.py # 文档处理(PDF/Word/Excel/TXT) │ ├── embedding_models.py # 嵌入模型(SentenceTransformers/OpenAI/DashScope/Zhipu) │ ├── vector_stores.py # 向量存储(FAISS/Chroma) │ ├── rag_methods.py # 所有RAG方法实现 │ └── benchmark.py # 基准测试模块 ├── examples/ │ ├── sample_data.py # 示例招投标数据 │ ├── quick_demo.py # 快速演示 │ ├── benchmark_all_methods.py # 全方法基准测试 │ ├── benchmark_retrieval_speed.py # 检索速度测试 │ └── bid_field_extraction_demo.py # 字段提取演示 ├── data/ │ ├── documents/ # 放置待处理的招投标文档 │ ├── indexes/ # 向量索引存储 │ └── cache/ # 缓存目录 ├── output/ # 输出目录(基准测试结果等) ├── requirements.txt └── README.md ``` ## 快速开始 ### 安装依赖 ```bash pip install -r requirements.txt ``` ### 设置环境变量 ```bash # OpenAI API配置(或兼容的API) export OPENAI_API_KEY="your-api-key" export OPENAI_BASE_URL="https://api.openai.com/v1" # 或其他兼容API地址 export LLM_MODEL="gpt-4o" # 嵌入模型配置 export EMBEDDING_MODEL="BAAI/bge-large-zh-v1.5" ``` ### 运行示例 ```bash # 快速演示 python examples/quick_demo.py # 检索速度测试(无需LLM) python examples/benchmark_retrieval_speed.py # 完整基准测试 python examples/benchmark_all_methods.py # 字段提取演示 python examples/bid_field_extraction_demo.py ``` ## 支持的嵌入模型 - **SentenceTransformers**: 本地部署,支持中文(如BAAI/bge-large-zh-v1.5) - **OpenAI**: text-embedding-3-large/small - **DashScope**: 阿里云text-embedding-v2 - **Zhipu**: 智谱AI embedding-3 ## 支持的文档格式 - PDF - Word (.docx) - Excel (.xlsx/.xls) - 纯文本 (.txt) ## 招投标字段提取 系统支持提取以下招投标关键字段: - 项目名称 (project\_name) - 项目编号 (project\_code) - 预算金额 (budget\_amount) - 币种 (currency) - 投标截止时间 (bid\_deadline) - 开标时间 (bid\_open\_time) - 投标地点 (bid\_location) - 采购人名称 (purchaser\_name) - 采购人联系人 (purchaser\_contact) - 采购人电话 (purchaser\_phone) - 代理机构名称 (agency\_name) - 代理机构联系人 (agency\_contact) - 代理机构电话 (agency\_phone) - 资格要求 (qualification\_requirements) - 投标保证金 (bid\_bond\_amount) - 履约保证金 (performance\_bond\_amount) - 质保期 (warranty\_period) - 交货时间 (delivery\_time) - 交货地点 (delivery\_location) - 付款方式 (payment\_terms) - 评标方法 (evaluation\_method) - 工作范围 (scope\_of\_work) ## 基准测试指标 系统会输出以下对比指标: - 平均总延迟 / 检索延迟 / 生成延迟 - P50 / P95 延迟 - 最小 / 最大延迟 - 平均检索文档数 - 吞吐量(QPS) ## License MIT