P2 向量索引与语义检索(2026-08-11)

293 字

P2 向量索引与语义检索(2026-08-11)

阶段:P2(向量索引)——给 2,152 篇原始语料建本地语义索引,支持"结合知识库"式语义查询。
构建日期:2026-08-11,纯本地,无外部 API。
状态:✅ 完成(断点续跑补齐 553 个文件)

是什么

raw/articles/ 下全部 2,152 个可读 markdown 文件做分块 + 中文嵌入(BAAI/bge-small-zh-v1.5),存成 faiss 向量索引。查询时把问题嵌入后检索 top-k 相关文本块,返回文件路径 + 相似度 + 片段

解决什么问题:Obsidian 全文搜索是关键词匹配;这套索引能按语义找到相关文件——比如搜"国产模型价格战"能命中没出现"价格战"字样的相关段落。

构建参数

模型 BAAI/bge-small-zh-v1.5(本地缓存,离线)
向量维度 512
索引结构 faiss IndexFlatIP(内积 + L2 归一化嵌入)
分块 600 字符 / 重叠 80
最小块长 20 字符(过短丢弃)
最小文章长 100 字符
索引文件数 2,152 / 2,153(1 个过短跳过)
总块数 26,484
构建耗时 中断前 ~1700 文件 + 续跑 10.3 min(CPU)

文件位置

文件 作用
wiki/tools/build_vector_index.py 构建主索引(含断点续跑,可增量重跑)
wiki/tools/wiki_search.py 查询工具(CLI)
~/文档/AI研究wiki-vectordb/ 向量库本体(vault 外,避免 Obsidian 索引臃肿)

使用

# 查询(top 8 结果,含相似度与片段)
python3 ~/文档/我的AI研究wiki/wiki/tools/wiki_search.py "OpenClaw Agent 架构" --top 8

# 显示更完整片段
python3 ~/文档/我的AI研究wiki/wiki/tools/wiki_search.py "Kimi K3 开源价格战" --show-text

结果按相关度排序,相似度 | 相对路径(raw/articles/)| 第N块 | 片段预览
相似度 ≥0.7 视为强相关,0.6–0.7 视为相关(本批验证查询全部 ≥0.65)。

离线强制:构建与查询都设了 HF_HUB_OFFLINE=1——本机有模型缓存,若不设会联网检查 huggingface,在代理环境下挂起(实测卡死 0% CPU)。模型仅在缓存存在时可用。

重建/增量

# 增量(新语料进库后重跑,自动检测 checkpoint 只处理新文件)
/usr/bin/python3.10 wiki/tools/build_vector_index.py

断点续跑原理:读已有 wiki_flat.index + meta.jsonl 建立 done_paths,只处理未编码文件。建议新语料进库后每月重跑一次。

验证查询(9 条,全部达标)

P2 语料广度验证(5 条)

查询 相似度 命中主题
具身智能 人形机器人 融资 0.718 具身智能融资报告 / 世界模型 / 赛道融资全景
自进化 agent 记忆 反思 Hermes 0.731 Hermes 自进化设计 / 记忆系统
AI 编程 Cursor 效率 单位经济 0.668 AI 编程应用 / 组织提效 / 生产率研究
国产大模型 API 降价 价格战 0.711 中国大模型价格战 / API 商业化
Anthropic 与 OpenAI 模型竞争 领先 0.774 模型竞争格局 / 编程工具三分天下

P3 三联页语义验证(4 条,预置于 triple_pages_plan.md)

查询 相似度 应命中 → 实际命中
Claude Code 源码泄漏 0.824 claude/ 5 篇 → 命中 4 篇 + 相关微信文章
OpenClaw Agent 架构 0.779 openclaw/ 教程 + 架构解读 → 命中
Kimi K3 开源价格战 0.767 微信文章 → 命中 K3 评测/价格战
MCP 协议 接入教程 0.707 openclaw/ 教程 → 命中 Skills/MCP 教程

结论:检索质量达标,全部命中目标目录与主题;Claude Code 源码泄漏查询 top-5 命中 4 篇 claude/ 专文,与预置期望一致。P3 三联页的语义验证查询全部通过(≥0.6)。

与工作流的关系

  • 用户说 "结合知识库" 时:先跑 wiki_search.py 召回候选文件,再读文件精读,最后综合回答。
  • 向量检索召回 → wiki/sources/ 精读 → wiki/concepts/entities 交叉引用 → 综合输出,符合 vault CLAUDE.md 的查询权限规则。
  • P4 图谱复用规划见 wiki/tools/output/kg_plan.md(L0 底座 + L1 实体抽取),待 P4 启动。