ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

msgvault语义搜索教程:配置Ollama本地嵌入,按“意思“查找邮件而不靠关键词

msgvault语义搜索教程:配置Ollama本地嵌入,按“意思“查找邮件而不靠关键词 msgvault语义搜索教程配置Ollama本地嵌入按意思查找邮件而不靠关键词【免费下载链接】msgvaultArchive a lifetime of email and chat. Offline search, analytics, and AI query over your full message history. Powered by SQLite and DuckDB项目地址: https://gitcode.com/gh_mirrors/ms/msgvaultmsgvault 是一款本地化消息归档工具可以把多年的邮件、聊天记录和会议转录归档到 SQLite 或 PostgreSQL 中并提供离线搜索、分析与 AI 查询能力。本教程带你用Ollama 本地嵌入模型为 msgvault 开启语义搜索不再依赖关键词精确匹配而是按意思查找邮件——哪怕查询词与正文一个字都不重叠也能命中真正相关的消息。整个过程无需云 API、消息文本不离开本机。什么是语义搜索关键词搜索全文检索要求你猜中邮件里用过的词搜invoice没写 invoice 的邮件就找不出来。语义搜索先把每条消息转成一组数字向量嵌入向量再按向量距离排序——表达相同概念的内容在向量空间里彼此靠近。于是你搜的能命中的planning offsite agenda规划外场活动议程标题为 Q2 team kickoff、正文讨论同一主题的那封邮件how do we handle refunds从未出现 refund 字样但讲退款流程的邮件那个部署失败的问题最后怎么解决的讨论 deploy failure 排查过程的整串往来msgvault 在关键词搜索之上构建了该能力向量和归档都保存在本地SQLite 归档存放在vectors.db中只有文本 → 向量这一步会发送到你在配置中指定的嵌入端点。选择本地端点如 Ollama数据就全程不出机器。完整说明见 docs/usage/vector-search.md。准备工作确认你的 msgvault 支持向量后端语义搜索要求二进制带向量编译标签。标准构建已包含该能力make build # 等价于 go build -tags fts5 sqlite_vec如果你自己用go build编译过确认带了-tags fts5 sqlite_vec否则会在请求向量搜索时看到 binary was built without -tags sqlite_vec 报错。官方 Docker 镜像也已内置sqlite_vec。第一步安装 Ollama 并拉取嵌入模型在本机安装 Ollama或 llama.cpp server、LM Studio 等 OpenAI 兼容端点均可。拉取嵌入模型。msgvault 文档推荐nomic-embed-text768 维ollama pull nomic-embed-text ollama serve # 默认监听 127.0.0.1:11434一般安装后已常驻 用ollama show nomic-embed-text查看模型上下文长度——nomic-embed-text的训练上下文为 2048 token这决定了后面max_input_chars的取值上限。第二步在 config.toml 中开启向量搜索编辑~/.msgvault/config.toml加入[vector]配置块[vector] enabled true backend sqlite-vec [vector.embeddings] endpoint http://127.0.0.1:11434/v1 # Ollama 的 OpenAI 兼容端点 model nomic-embed-text dimension 768 document_prefix search_document: # nomic-embed-text 必需的指令前缀 query_prefix search_query: # 同上 batch_size 32 timeout 30s max_retries 3 max_input_chars 2000 # 每块字符上限2k-token 模型保守值几个容易踩坑的要点nomic-embed-text必须设置两个前缀search_document:/search_query:漏掉会严重影响召回。max_input_chars宁小勿大。Ollama 的 OpenAI 兼容端点对超长输入是静默截断而不是报错悄悄降低召回。2k-token 模型建议从 2000~6000 起步再用一段代表性邮件正文实测详见 docs/usage/vector-search.md 的 sizing 指南。可选开启预处理自动剔除引用回复块、签名、HTML 标记让嵌入更干净[vector.preprocess] strip_quotes true strip_signatures true strip_html true所有字段的完整含义参考 docs/configuration.md。第三步构建嵌入索引msgvault embeddings build --full-rebuild --yes命令会为每条非删除消息生成向量写入新的代generation覆盖率补满后原子激活。要点可中断可恢复CtrlC随时退出再跑一次msgvault embeddings build会从断点继续。首次构建期间向量/混合搜索会返回index_building此时可先用--mode fts关键词搜索过渡。进度输出包含完成数、吞吐率、每字符耗时与 ETA 估计。第四步按意思搜索邮件# 纯语义搜索 msgvault search planning offsite agenda --mode vector # 混合搜索BM25 关键词 向量RRF 融合排序通常效果最好 msgvault search planning offsite agenda --mode hybrid --explain--explain会展示检索路径--json输出带分数结果。注意向量/混合模式至少需要一个自由文本词会被嵌入成查询向量纯过滤条件查询如from:alice会被拒绝此时改用--mode fts。HTTP 端点同样支持curl http://localhost:8080/api/v1/search?qplanningoffsitemodehybrid保持索引更新新邮件自动嵌入新同步进来的消息需要补嵌向量。两种工作流手动同步CLI同步后补跑一次增量构建即可msgvault sync yougmail.com msgvault embeddings build # 增量补齐缺失行很快守护进程msgvault serve配置定时嵌入彻底省心[vector.embed.schedule] cron */5 * * * * # 每 5 分钟兜底扫一次 run_after_sync true # 每次计划内同步成功后立即嵌入各同步路径的触发规则对照表见 docs/usage/vector-search.md。常见错误速查错误含义处理vector_not_enabled[vector] enabled为 false 或未启用向量后端开启配置确认二进制带sqlite_vec标签index_stale模型、维度、前缀等指纹与当前配置不符跑msgvault embeddings build --full-rebuild --yesindex_building索引正在构建中等构建完成急用先走--mode ftsmissing_free_text向量/混合模式缺少自由文本词查询里加上自然语言词或改用ftsembedding_timeout嵌入端点超时冷启动常见重试或调大timeout进阶与延伸阅读混合搜索调参[vector.search]段的rrf_k、subject_boost、ANN 加速器等参数见 docs/configuration.md。大归档加速嵌入完成后执行msgvault embeddings optimize训练本地 ANN 加速器搜索保持可用且结果精确重排。范围控制[vector.embed.scope]可按消息类型或账号限定索引范围既省嵌入成本也充当隐私边界。模型切换换模型/维度/前缀后旧索引会自动标记 stale重建即可原子切换。推荐配置向导已有 Voyage/OpenAI 等云端密钥时可用msgvault setup providers一键引导配置见 docs/usage/recommended-configuration.md。至此msgvault 的语义搜索已在你的本机完整跑通邮件归档、嵌入模型、向量索引全部离线驻留用自然语言说意思就能翻出多年前的关键信息。【免费下载链接】msgvaultArchive a lifetime of email and chat. Offline search, analytics, and AI query over your full message history. Powered by SQLite and DuckDB项目地址: https://gitcode.com/gh_mirrors/ms/msgvault创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表