Commit Graph

4 Commits

Author SHA1 Message Date
Blizzard d5dfb7a928 fix(rag,desktop): Milvus 集合丢失自愈 + 检索框布局塌陷
真实演示中暴露的两个 bug:

1) Milvus 重连健壮性(mcp-go/internal/rag/milvus.go)
   基础设施重启后向量集合丢失,但 ensure() 的 m.ok 缓存认定集合仍在、跳过重建,
   导致 insert/search 报 "collection not found",必须重启进程才恢复。
   修复:新增 invalidate() + isCollectionGone();insert/search 遇"集合不存在"类错误
   时清缓存 + 重 ensure(重建集合)+ 重试一次。
   实测:运行期 drop 集合后再入库 → 日志"清缓存重建后重试写入" → 写入成功且可检索(自愈,无需重启)。

2) 检索框布局塌陷(desktop frontend/src/ui/Input.tsx)
   Phase A 给 Input 基类内置了 w-full,与检索行调用方的 flex-1 / w-16 冲突,
   查询框被挤成一条缝。修复:基类去掉 w-full,宽度交由调用方(Field 内 flex-col 自动撑满,
   或显式 w-full/flex-1/w-16)。
   实测(Preview):查询框 412px、topK 64px;报告页输入仍撑满(764/220px),无回归。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-13 14:05:53 +08:00
Blizzard 8ff68078b7 feat: 知识库管理界面(入库监控 + 检索台)
桌面端「知识库」模块从占位变为可用:入库(切块/embedding/Milvus 监控) +
检索调试台(向量召回,带分数与来源)。

- mcp-go: 新工具 kb_search(返回结构化 JSON [{text,score}]);rag.Hit 加 json 标签
- gateway: POST /api/v1/kb/search → kb_search(结构化命中给检索台)
- desktop: lib/api ingestKb/searchKb;新 KbView(左 入库+监控日志 / 右 检索台命中列表
  带 Milvus 来源徽标+分数);App 接 kb 视图;LeftNav 知识库 ready
- 验证: gateway/mcp-go build✓ + e2e PASS + 前端 build✓;真实浏览器——入库3条→监控
  '已入库3块';语义查询'存储和搜索向量的组件'→Milvus(0.612)>Neo4j>NATS 排序正确,
  全走真实百炼 embedding(控制面下发)+Milvus

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-10 17:40:32 +08:00
Blizzard e5bbe7318c feat(rag): Milvus 集合维度自适应 — 切换 embedding 模型自动重建
ensure() 检测已存集合的向量维度,与当前 embedding 维度不一致则 Drop+重建
(DescribeCollection 读 TypeParams[dim])。支持从 mock(256)切到真实 embedding(如
百炼 text-embedding-v3=1024 维)无需手动清库。

验证: 接阿里云百炼 text-embedding-v3(OpenAI 兼容)真实 embedding——集合自动
256→1024 重建,入库5条;语义检索(查询措辞与文档不同):'存储搜索向量的组件'
→Milvus、'传消息的中间件'→NATS、'知识图谱存哪'→Neo4j,全部语义命中正确。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-10 17:12:24 +08:00
Blizzard 84d1a1dd3a feat: RAG 核心链 — embedding(provider) + Milvus 真连 + 入库/检索
mcp-go 接通向量 RAG:embedding(OpenAI 兼容 provider 抽象) + Milvus 真实连接,
kb_ingest 入库、wiki_search 真检索。retriever 节点一行不改即从桩变真。

- mcp-go internal/rag: embed.go(OpenAI 兼容 /embeddings 客户端) + milvus.go(milvus-sdk-go
  真连,集合按首次 embedding 维度懒建+AUTOINDEX/COSINE索引+加载,insert/向量search) +
  rag.go(Engine: 切块→embed→insert / embed query→search;embedding 或 Milvus 缺则降级)
- mcp-go gateway: 新工具 kb_ingest,wiki_search 换真(RAG 向量检索,kb 过滤 topK)
- mcp-go main: rag.Open 读 MILVUS_ADDR/EMBED_BASE_URL/EMBED_API_KEY/EMBED_MODEL 环境变量
- gateway: POST /api/v1/kb/ingest → kb_ingest(供知识库页/脚本)
- scripts/mock_embeddings.py: 确定性词法向量(字+bigram 哈希),无真 key 验证检索
- 开发期 embedding 接在线 API(无真 key 用 mock),见 llm-provider-strategy
- 验证: 全模块 build✓ + e2e PASS; live——入库5条→Milvus;retriever 节点查'向量数据库'
  →召回 Milvus 那条→DeepSeek 答'Milvus';查'知识图谱'→Neo4j(向量检索区分正确)

注: 当前向量单路;Bleve/Neo4j 融合 + rerank + 真实语义 embedding 为后续。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-10 17:07:36 +08:00