ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

离网也能查资料:Off Grid AI 本地知识库 RAG 搭建教程,MiniLM 嵌入 + SQLite 检索原理一次讲透

离网也能查资料:Off Grid AI 本地知识库 RAG 搭建教程,MiniLM 嵌入 + SQLite 检索原理一次讲透 离网也能查资料Off Grid AI 本地知识库 RAG 搭建教程MiniLM 嵌入 SQLite 检索原理一次讲透【免费下载链接】OGAMThe Swiss Army Knife of Offline AI. Chat, see, speak, and generate images on your phone or Mac — GGUF LLMs, vision, Whisper speech-to-text, Stable Diffusion, tool calling, and local-network servers. Runs on your CPU, GPU, or NPU. No account, no API key, zero data leaves your device.项目地址: https://gitcode.com/gh_mirrors/of/OGAMOff Grid AI是一款完全离网无账号、无 API Key、数据不出设备的端侧 AI 应用它内置了本地知识库 RAG检索增强生成能力把 PDF、TXT 等文档导入手机或 Mac应用会用内置的MiniLM 嵌入模型将文档切块并生成向量存入本地SQLite数据库聊天时自动做余弦相似度检索把最相关的片段注入提示词——全程 CPU 可跑无需任何云服务。本教程带你从零理解这套 RAG 的搭建步骤与检索原理。为什么需要本地知识库云端 RAG 的痛点Off Grid AI 本地 RAG 的做法文档要上传到第三方服务器文档只存在你自己的设备上按 token / API 调用付费零 API 费用嵌入模型随应用内置断网即失效飞行模式下照常检索、照常回答嵌入模型不可控固定的轻量 MiniLM 模型行为可预期对于处理合同、病历、论文、内部手册等敏感资料的用户数据不出设备就是最大的价值点。整个 RAG 模块的代码集中在 src/services/rag/ 目录结构非常清晰index.ts —— 对外统一的RagService索引、删除、搜索chunking.ts —— 文档分块embedding.ts —— MiniLM 嵌入服务database.ts —— SQLite 存储retrieval.ts vectorMath.ts —— 语义检索与向量计算搭建本地知识库4 步索引流水线在应用的项目 → 知识库页面KnowledgeBaseScreen.tsx选中文档后ragService.indexDocument会自动执行一条四步流水线见 index.ts第 1 步文本抽取Extracting调用 documentService 从 PDF / TXT 中抽取纯文本单文档最多处理 50 万字符。注意如果是扫描版 PDF纯图片、无文字层由于端上没有 OCR会明确提示无法抽取文字而不是静默失败。第 2 步分块Chunking长文档会被切成若干小块chunk每块记录position序号。分块逻辑来自共享包offgrid/ragchunking.ts保证检索时命中的是一个小段落而不是整篇文档。第 3 步生成嵌入向量Embedding⭐ 核心这一步由内置的MiniLM 嵌入模型完成是本文的重点下一节详述。第 4 步写入 SQLiteIndexing三张表协同工作建表语句见 database.ts数据库文件名为rag.db表内容说明rag_documents文档元数据名称、路径、大小、所属项目、是否启用rag_chunks文本块每段纯文本 在文档中的位置rag_embeddings向量 BLOB每块的 384 维向量以Float32Array二进制存为 BLOB原子性保障如果第 3 步嵌入失败应用会整体回滚刚插入的文档和分块绝不留只有文本没有向量的半截索引回滚逻辑见 index.ts——因为这样的文档在语义检索中是隐形的。MiniLM应用内置的轻量级嵌入模型嵌入模型不需要你下载——它已经打包在应用内Android 端all-MiniLM-L6-v2-Q8_0.ggufiOS 端all-MiniLM-L6-v2-Q8_0.gguf关键参数定义在 embedding.ts参数取值为什么这么选模型格式GGUFQ8 量化权重仅约 25 MB手机轻松装下向量维度384 维MiniLM-L6-v2 的标准输出维度上下文长度512一个 chunk 足够内存占用小GPU 层数n_gpu_layers: 0纯 CPU 即可跑2 个线程足够常驻内存预算约 90 MB纳入统一内存预算管理必要时可被驱逐两个工程细节值得新手学习全局加载锁嵌入模型加载时会通过模型驻留管理器modelResidency加锁确保它永远不会和聊天大模型同时初始化避免内存峰值触发系统 OOMembedding.ts。30 秒超时兜底原生加载被限时 30 秒卡住会自动释放锁并清理防止阻塞整个应用的模型加载embedding.ts。检索原理余弦相似度 Top-K提问时发生了什么核心代码在 retrieval.ts查询向量化把你的问题用同一个 MiniLM 模型嵌入成 384 维向量逐块打分取出该项目下所有已启用文档的向量计算余弦相似度公式实现见 vectorMath.ts——本质是两个向量夹角的余弦值越接近 1 语义越相近排序取 Top-K默认取相似度最高的5 块注入提示词命中片段被包装成knowledge_base.../knowledge_base块retrieval.ts连同来源文件名和块序号一起交给本地大模型作答。 两个兜底设计让检索永不空手项目还没有任何向量时退化为直接返回文档开头的若干块检索结果还会经过上下文预算控制searchWithBudget保证注入的片段不会撑爆当前 LLM 的上下文窗口。在聊天中自动查资料你不需要手动触发检索。发送消息时聊天动作层会自动执行两步useChatGenerationActions.ts调用ragService.searchProject(projectId, query)检索当前项目知识库将结果格式化后追加到本轮生成请求中。此外还有一个显式的searchKnowledgeBase工具tools/handlers.ts当模型判断需要查资料时可主动调用。知识库按项目隔离不同项目的文档互不干扰不需要的文档可以随时关闭enabled 开关或删除。进阶知识库的跨设备同步Off Grid AI 还支持把知识库文档在多设备之间端到端加密同步同步事件由 services/sync/knowledgeDocument 发出。手机上的文档索引到 Mac 上indexSyncedDocument会通过sync_id自动去重同一文档在两台设备上各建一次向量索引配对过程见 PERSONAL_MESH.md。常见问题FAQQ1支持哪些文档格式PDF 和 TXT粘贴文本也会被写入 .txt 后再走同一套索引流程见 indexPastedText。扫描版 PDF 无文字层端上没有 OCR会明确报错。Q2重复导入同一个文件会怎样会被拦截并提示已在知识库中按路径/文件名去重index.ts。Q3嵌入模型占内存吗会影响聊天模型吗约 90 MB 常驻预算且可被内存管理器作为旁路模型驱逐它永远不会驱逐你正在生成回复的大模型。Q4向量存在哪用了专门的向量数据库吗没有——就是普通 SQLiterag.db里的 BLOB 列向量在内存里用 JS 计算余弦相似度。对个人级文档量几千块完全够用这是刻意的简化取舍。Q5如何验证检索正确性项目自带回归测试例如知识库检索往返测试 searchKnowledgeBaseRoundtrip.test.ts 和嵌入契约测试 ragEmbedding.contract.test.ts。相关源码与文档导航RAG 核心模块src/services/rag/知识库页面KnowledgeBaseScreen.tsx项目详情中的知识库区域ProjectDetailKnowledgeBaseSection.tsx嵌入模型加载Androidall-MiniLM-L6-v2-Q8_0.gguf架构总览docs/ARCHITECTURE.md代码库导读docs/standards/CODEBASE_GUIDE.md写在最后Off Grid AI 的本地知识库 RAG 证明了RAG 不一定要云端向量数据库。一个 25 MB 的 GGUF 嵌入模型 SQLite 的 BLOB 列 几十行余弦相似度代码就足以在手机上构建一个完全私密的离线资料库。理解这条抽取 → 分块 → 嵌入 → 检索的流水线后你也能在自己的项目里复刻它。【免费下载链接】OGAMThe Swiss Army Knife of Offline AI. Chat, see, speak, and generate images on your phone or Mac — GGUF LLMs, vision, Whisper speech-to-text, Stable Diffusion, tool calling, and local-network servers. Runs on your CPU, GPU, or NPU. No account, no API key, zero data leaves your device.项目地址: https://gitcode.com/gh_mirrors/of/OGAM创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表