From 04a35faba3ab57985df7a4aa0dd6f2e859b01d0e Mon Sep 17 00:00:00 2001 From: simonkoson <28867558@qq.com> Date: Tue, 26 May 2026 15:24:31 +0800 Subject: [PATCH] =?UTF-8?q?chore(phase3):=20=E8=A1=A5=E6=8F=90=E4=BA=A4=20?= =?UTF-8?q?Task1=20=E6=97=A5=E5=BF=97/=E6=B8=85=E7=90=86=E8=84=9A=E6=9C=AC?= =?UTF-8?q?=20+=20=E6=A0=8F=E7=9B=AElogo=EF=BC=8C=E5=BF=BD=E7=95=A5?= =?UTF-8?q?=E5=AF=86=E7=A0=81=E9=87=8D=E7=BD=AE=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 3 ++ backend/scripts/cleanup_test_data.py | 28 ++++++++++++++++++ frontend/src/assets/logo_small.png | Bin 0 -> 79125 bytes logs/phase3_log_task1.md | 41 +++++++++++++++++++++++++++ 4 files changed, 72 insertions(+) create mode 100644 backend/scripts/cleanup_test_data.py create mode 100644 frontend/src/assets/logo_small.png create mode 100644 logs/phase3_log_task1.md diff --git a/.gitignore b/.gitignore index 87d908d..39d7019 100644 --- a/.gitignore +++ b/.gitignore @@ -41,3 +41,6 @@ homePC/ # ĘýžÝżâą¸ˇÝ / SQL dump(˛ť˝ř°ćąžżâ) backups/ + +# 敏感脚本(永不上传) +backend/scripts/reset_password.py diff --git a/backend/scripts/cleanup_test_data.py b/backend/scripts/cleanup_test_data.py new file mode 100644 index 0000000..904ff23 --- /dev/null +++ b/backend/scripts/cleanup_test_data.py @@ -0,0 +1,28 @@ +""" +清理测试数据脚本 +""" + +from dotenv import load_dotenv +from pathlib import Path + +_env_path = Path(__file__).parent.parent / ".env" +load_dotenv(str(_env_path)) + +from sqlalchemy import text +from app.db.session import engine + +conn = engine.connect() + +# 清空知识库 +conn.execute(text("DELETE FROM knowledge_embeddings")) +conn.execute(text("DELETE FROM knowledge_items")) +conn.commit() + +# 查行数 +ki = conn.execute(text("SELECT COUNT(*) FROM knowledge_items")).scalar() +ke = conn.execute(text("SELECT COUNT(*) FROM knowledge_embeddings")).scalar() + +print(f"knowledge_items rows: {ki}") +print(f"knowledge_embeddings rows: {ke}") + +conn.close() \ No newline at end of file diff --git a/frontend/src/assets/logo_small.png b/frontend/src/assets/logo_small.png new file mode 100644 index 0000000000000000000000000000000000000000..c018101a7bf0c2eb99686aa157c422b58be88cd7 GIT binary patch literal 79125 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 LNkvXXu0mjfs>`ZJ literal 0 HcmV?d00001 diff --git a/logs/phase3_log_task1.md b/logs/phase3_log_task1.md new file mode 100644 index 0000000..4cbd4f2 --- /dev/null +++ b/logs/phase3_log_task1.md @@ -0,0 +1,41 @@ +# Phase 3 开发日志 + +> 本文件记录 Phase 3(知识库基础设施)各 Task 的已完成事实。 +> 续接快照(待办/决策)见单独文件,不混入本 log。 + +--- + +## Task 1 — embedding 最小链路验证 ✅(2026-05-26 完成) + +### 目标 +用最小代价验证 Phase 3 的命脉:文本能否转成正确维度的向量、整条「解析→embedding→入库→语义检索」链路能否跑通。不碰 schema、不碰前端、不碰 docx。 + +### 关键结论(地基事实,后续 Task 依赖) +- **embedding 服务确定为 MiniMax embo-01**。前期查证已排除 DeepSeek(官方无 embedding 接口)。 +- **embo-01 输出维度 = 1536**,与 `001_init.sql` 中 `knowledge_embeddings.embedding vector(1536)` 完全匹配,无需改维度、无需改宪法。 +- **embo-01 真实接口结构**(实测确认,非凭印象): + - 请求:`{"model":"embo-01", "texts":[...], "type":"db"|"query"}` —— 注意是 `texts` 数组,不是 OpenAI 的 `input`。 + - 返回:向量在 `vectors` 字段(`data["vectors"][0]`),不是 OpenAI 的 `data[0].embedding`。 + - 存文档用 `type="db"`,查询用 `type="query"`,不可混。 + - 调用需 `Authorization: Bearer {API_KEY}` + `GroupId` 两个凭证(MiniMax 特有 GroupId)。 +- **检索方式**:使用 pgvector 数据库原生余弦距离算子 `<=>`,不在 Python 侧计算。 +- **凭证管理**:API Key + GroupId 存于 `backend/.env`(`MINIMAX_EMBED_API_KEY` / `MINIMAX_GROUP_ID`),代码从 .env 读取,未进任何代码、未进 git(.env 已在 .gitignore)。 +- 注意:embedding 接口地址 `https://api.minimax.chat/v1/embeddings`,与 Cline 写代码所用的 M2.7 chat 接口是两套独立配置,互不影响。 + +### 新增/改动文件(已 commit & push,commit 38873ac) +- `backend/requirements.txt`(+pgvector==0.2.5) +- `backend/app/core/config.py`(+引导凭证字段) +- `backend/app/models/knowledge.py`(新增,embedding 字段用 pgvector.Vector) +- `backend/app/services/embedding_service.py`(新增,embo-01 调用封装) +- `backend/app/services/knowledge_service.py`(新增,写库 + SQL 向量检索) +- `backend/scripts/test_embo01_api.py`(探路脚本) +- `backend/scripts/verify_embedding.py`(全链路验证脚本) +- `backend/sample_md/`(空目录,测试文件已清) + +### 收尾 +- 验证用测试数据已全部清除:knowledge_items = 0 行,knowledge_embeddings = 0 行,sample_md/ 空。 +- 知识库当前为干净空库,等待真实笔记导入。 + +### 顺手核实到的现状(未处理,留待办) +- episodes 表当前仅 7 行。 +- Phase 2 的「批量导入」前端有入口但从未真实导入过收视数据(制片人确认:是流程上没提醒导入,加上收视表里有测试数据不会删)。属 Phase 2 遗留债,记入 backlog,另行处理,不并入 Phase 3。