核心新增:
- RAG 问答系统:Markdown 安全切片器 (LaTeX 保护) + 向量化 + sqlite-vec 检索 + LLM 生成
- 天体目标识别:IAU 标准正则提取 15+ 星表标识符,CDS SIMBAD/Sesame 查询与本地缓存
- 多模态 LLM:chat_completion_with_image 支持图表视觉分析
- CLI Skills Agent (cli.rs):对外暴露 rag/target/ingest 等 5 个子命令
- 解析器模块化重构:单体 778 行 → 按期刊拆分 (A&A/ar5iv/IOP/Generic/PDF) +
common.rs 静态正则工具库
管线与 Schema:
- AssetSync→AssetBatch 重命名,批量管线新增 embed/target 两个处理阶段
- 新增 paper_chunks_content (RAG 切片) 和 paper_targets (天体缓存) 两张表
- StandardPaper 新增 has_vector 字段,所有查询同步更新
前端:
- 新增 AI 助手侧边栏 (RAG 问答 + 来源跳转高亮)
- 最近浏览文献列表 (localStorage 持久化)、跨面板无缝导航
- SyncPanel 批量阶段扩展为下拉选项,支持向量化/天体识别
测试与清理:
- 集成测试合并至 ads.rs 和 llm.rs,新增 chunker + target 单元测试 15 个
- 删除旧单体 parser.rs、独立测试文件及过期 scratch 脚本
|
||
|---|---|---|
| .. | ||
| api | ||
| bin | ||
| clients | ||
| services | ||
| lib.rs | ||
| main.rs | ||
| README.md | ||
AstroResearch Backend / 后端服务模块
本模块是 AstroResearch 的后端部分,基于 Rust + Axum + SQLx (SQLite) 构建。经过分层模块化重构,代码按职责划分到了不同的子包中。
1. 代码结构说明 (Source Code Structure)
- main.rs:程序执行入口。负责环境变量初始化、数据库连接建立、SQL 迁移运行、共享应用状态
AppState配置,以及 Axum Router 路由绑定和静态资源代理托管。 - lib.rs:模块声明中心,并将
Config环境变量映射配置整合在库根节点下,避免反向引用。 - api/:API 路由的业务处理器。
- handlers.rs:定义 Axum API 处理函数(Handler),包括统一跨源检索、单篇文献下载/解析/翻译的触发逻辑、引文网络数据查询及用户笔记的增删改查。
- clients/:对接第三方 API 的客户端封装。
- services/:核心业务服务与底层数据管道。
- batch_sync.rs:后台大批量元数据异步同步器 (
MetaSync) 与文献物理资源批量处理(下载/解析)引擎 (AssetSync)。 - download.rs:智能下载器,处理多级回退、防爬休眠,优先下载 arXiv 官方 HTML,并有 ar5iv/CrossRef 兜底。
- parser.rs:文献排版转换与清洗器,支持 MathJax LaTeX 占位符防护及 MinerU 图文 PDF 降级解析。
- translation.rs:大模型对比翻译流水线。支持基于天文学对照词表的分词过滤,通过 Trie 树最长匹配机制生成 Glossary 专有名词注入 Prompt。
- query_parser.rs:解析并标准化学术检索式,为 ADS 和 arXiv 分别生成合规的专有检索语法。
- logging.rs:系统日志服务,支持控制台彩色日志输出、每日滚动写入磁盘日志文件,采用自定义上海时区 (+08:00) 格式化时间。
- batch_sync.rs:后台大批量元数据异步同步器 (
2. 单元测试 (Testing)
后端各核心处理器与业务逻辑均编写了单元测试。你可以通过以下命令在本地执行所有的单元测试:
cargo test
3. 本地运行 (Usage)
确保当前目录的父目录(项目根目录)下已正确配置 .env 及 dictionary.txt 文件,然后在项目根目录下运行:
cargo run
服务将默认在 http://localhost:8000 启动,并自动加载本地 SQLite 数据库文件。