AstroResearch/migrations/20260613000000_paper_chunks_metadata.sql
Asfmq 22e7e1dcee feat: RAG 文献问答、天体目标识别、解析器模块化与批量管线扩展
核心新增:
  - 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 脚本
2026-06-15 13:25:18 +08:00

30 lines
1.3 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- migrations/20260613000000_paper_chunks_metadata.sql
-- RAG 文本切片内容表与天体目标缓存表
-- 存储文献 Markdown 段落切片的元数据与文本内容
-- rowid 与 vec_paper_chunks 虚拟表的 rowid 保持 1:1 对齐
CREATE TABLE IF NOT EXISTS paper_chunks_content (
rowid INTEGER PRIMARY KEY AUTOINCREMENT,
bibcode TEXT,
paragraph_index INTEGER,
content TEXT,
FOREIGN KEY(bibcode) REFERENCES papers(bibcode) ON DELETE CASCADE
);
-- 天体目标信息缓存表,从 SIMBAD/Sesame 解析后本地持久化
CREATE TABLE IF NOT EXISTS paper_targets (
id INTEGER PRIMARY KEY AUTOINCREMENT,
bibcode TEXT,
target_name TEXT, -- 标准化天体名称 (如 GD 358)
ra TEXT, -- 赤道坐标:赤经 (Right Ascension)
dec TEXT, -- 赤道坐标:赤纬 (Declination)
parallax REAL, -- 视差 (mas毫角秒)
spectral_type TEXT, -- 光谱分类 (如 DA1)
v_magnitude REAL, -- 视星等
aliases TEXT, -- 天体别名 (JSON 数组文本)
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY(bibcode) REFERENCES papers(bibcode) ON DELETE CASCADE,
UNIQUE(bibcode, target_name)
);
CREATE INDEX IF NOT EXISTS idx_paper_targets_name ON paper_targets(target_name);