基于 FastAPI、LangGraph 和 Google Gemini 1.5/2.0 构建的 IC 设计与 BCD 工艺领域高精度多模态知识库系统。
- 智能分块: 使用
Smart Chunking和Chunk Merger算法,自动将破碎的文本行合并为语义段落,并识别潜在表格区域。 - 混合分级: 结合关键词规则 (Level 1) 和各类原型向量语义相似度 (Level 2) 进行内容分级。
- RED: 关键工艺参数,使用 Gemini 2.0 Pro 精准提取。
- YELLOW: 表格与技术指标,使用 Adaptive Entity Extraction 提取结构化数据。
- GREEN: 通用文本,快速入库。
- 灵活配置: 可在
core/config.py中切换USE_OCR开关。
- Tier-Specific Prompts: 针对不同分级内容加载专用 Prompt(如 RED 层的工艺参数模板、YELLOW 层的关系映射模板)。
- 图谱增强: 利用 Neo4j 构建高精度知识图谱,支持跨段落实体关联。
- 向量检索: 使用本地
BAAI/bge-m3构建语义索引,存储于 Qdrant。
- 批处理 (Batching): 支持多块并发验证,减少 API 调用延迟。
- 自动浏览器: 启动服务时自动打开默认浏览器访问 Web 界面。
- 任务管理: 支持任务取消即时清理数据库,界面侧边栏自动维护任务状态。
- 后端: Python 3.12, FastAPI, Uvicorn (Web Server)
- 编排: LangGraph, LangChain
- AI 模型: Google Gemini (via
google-genaiSDK) - 数据库:
- Neo4j (图数据库: 实体关系)
- Qdrant (向量数据库: 语义检索)
- 前端: 原生 HTML/JS/CSS (极简设计,Unified UI Style)
- Python 3.10+
- Docker (用于运行数据库)
- Google Gemini API Key
# 创建虚拟环境
python -m venv venv
.\venv\Scripts\activate # Windows
# source venv/bin/activate # Linux/Mac
# 安装依赖 (已新增 pypdf, numpy)
pip install -r requirements.txt复制 .env.example 为 .env 并填入密钥:
GOOGLE_API_KEY=your_key_here
NEO4J_URI=bolt://localhost:17687
NEO4J_PASSWORD=password
QDRANT_URL=http://localhost:6333
# 如需代理请配置
# HTTPS_PROXY=http://127.0.0.1:7890使用提供的脚本自动启动服务(已处理端口冲突,使用 17474/17687 端口):
scripts/start_services.bat或者手动运行(注意端口映射):
# Qdrant 向量库
docker run -d -p 6333:6333 qdrant/qdrant
# Neo4j 图数据库
# 映射到 17474 (HTTP) 和 17687 (Bolt) 以避开 Windows 保留端口
docker run -d -p 17474:7474 -p 17687:7687 -e NEO4J_AUTH=neo4j/password neo4jpython server.py
# 服务启动后,浏览器将自动打开 http://localhost:38080如果文档过大,可以使用内置脚本将其按页拆分(支持拖拽路径):
python scripts/split_pdf.py- 支持 30 页/份自动切分。
- 自动处理 Windows 路径引号。
server.py: FastAPI 主程序及 API 接口 (包含后台任务管理)。core/: 核心逻辑 (Parser, VectorStore, GraphStore, Config)。agents/: LangGraph 节点 (GraphBuilder, RAG Router)。static/: 前端静态资源 (Style 统一优化)。scripts/: 实用脚本 (test_optimization.py, split_pdf.py)。
- 上传文档: 拖拽 PDF 文件至上传区。系统会自动进行混合解析,提取实体并构建索引。
- 取消任务: 上传过程中可随时取消,系统会自动清理已产生的脏数据。
- 专业问答: 提出技术问题(例如:“LDMOS 器件的击穿电压是多少?”)。
- 图谱溯源: 系统给出的每个论断都会链接到具体的文档和页码。
MIT