42 lines
2.8 KiB
Markdown
42 lines
2.8 KiB
Markdown
|
|
# 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。
|