This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
路桥数据治理与知识库入库脚本项目,用于将标准规范、施工方案等文档数据向量化并存入 Milvus/MinIO/MySQL。
# 创建虚拟环境
uv venv
# 安装依赖(使用清华镜像)
uv sync --index-url https://pypi.tuna.tsinghua.edu.cn/simple
# 运行任意脚本(示例)
uv run -m src.app.scripts.statu_to_milvus
uv run -m src.app.scripts.base_info_json_generation
uv run -m src.app.scripts.base_in_collection
src/app/
├── config/ # 配置与客户端初始化
│ ├── setting.py # .env 配置加载(MinIO/Milvus/MySQL/Embedding)
│ ├── minio_client.py # MinIO 客户端(单例)
│ ├── milvus_client.py # Milvus 客户端(LRU缓存)
│ ├── embeddings.py # OpenAI Embeddings 客户端
│ └── database.py # SQLAlchemy 异步引擎
├── models/ # 数据库模型
│ └── standard_base_info.py # 施工标准规范表模型
└── scripts/ # 数据处理脚本
├── base_* # 编制依据处理流程
└── plan_* # 施工方案处理流程
所有服务配置通过 .env 文件管理,由 setting.py 的 Settings 类加载:
| 服务 | 关键配置项 |
|---|---|
| MinIO | MINIO_ENDPOINT, MINIO_ACCESS_KEY, MINIO_SECRET_KEY |
| Milvus | MILVUS_HOST, MILVUS_PORT, MILVUS_DB |
| MySQL | DATABASE_URL (async: mysql+aiomysql://...) |
| Embedding | EMBEDDING_BASE_URL, EMBEDDING_MODEL |
编制依据 (base_* 系列):
base_count.py → 检查 Excel ID 与目录匹配base_check.py → 校验目录结构/命名一致性base_info_json_generation.py → 生成 JSON(含 MD 切分 parent/children)base_in_minio.py → 上传文件到 MinIObase_info_in_database.py → 写入 MySQLbase_create_collection.py → 创建 Milvus Collection(含 BM25 function)base_in_collection.py → 向量化并写入 Milvus施工方案 (plan_* 系列):流程同上,Collection 名不同。
文档切分在 base_info_json_generation.py 中实现:
# 一级标题切分,超长段(>6000字符)再切片,共享 parent_idhierarchy(标题路径)parent_id:由 doc_name|parent_seq|h1_title SHA1 生成,保证稳定Collection 包含以下字段:
| 字段 | 类型 | 说明 |
|---|---|---|
text |
VARCHAR(65535) | 文本内容,enable_analyzer=True |
dense |
FLOAT_VECTOR | 密集向量(语义检索) |
sparse |
SPARSE_FLOAT_VECTOR | 稀疏向量(BM25 函数生成) |
document_id |
VARCHAR(256) | 文档 ID |
parent_id |
VARCHAR(256) | 父节点 ID |
metadata |
JSON | 元数据(chinese_name, standard_number 等) |
BM25 函数配置:
schema.add_function(
Function(
name="bm25_fn",
input_field_names=["text"],
output_field_names=["sparse"],
function_type=FunctionType.BM25,
)
)
EXCEL_FILE、ROOT_FOLDER 等路径常量,运行前需改为本地路径base_* 与 plan_* 脚本对应不同数据类型,Collection 名不同,不要混用EMBEDDING_MODEL(Qwen3-Embedding-8B)决定