AI 应用人工智能大模型AI AgentRAG后端前端桌面应用【免费下载链接】OpenFic专为小说创作打造的跨平台、用户友好、AI Native 的一站式 Vibe Writing 工具。A cross-platform, user-friendly, AI-native, all-in-one Vibe Writing tool designed specifically for novel writing.项目地址https://gitcode.com/gh_mirrors/op/OpenFic点击查看免费下载写长篇小说时最头疼的一件事写到第三百章却想不起来第一章埋的那条伏笔叫什么名字。OpenFic 是一款专为小说创作打造的 AI Native 一站式写作工具它内置了基于 LanceDB 的 Agentic RAG 语义检索引擎——把整本书的章节向量化入库让 AI Agent 用自然语言提问即可在百万字前文中精准捞出相关段落并且能自主判断索引是否过期、该不该重建。上图是 OpenFic 的主界面右侧面板中Agent 正在为当前章节检索前情返回了带章节标题和匹配分数的原文片段——这正是本文要拆解的整套语义检索链路。一、百万字小说的前文检索难在哪里传统方式有两个死穴关键词搜不准在编辑器里 CtrlF 搜玉鼠找不到角色外号铁掌判官对应的那段描写语义不同、字面不同就查不到。上下文装不下百万字 ≈ 上百万 token远超任何 LLM 的上下文窗口不可能把书全喂给模型。所以需要 RAGRetrieval-Augmented Generation先检索、再阅读。而 OpenFic 做的不是固定管线的 RAG而是Agentic RAG——检索能力被包装成 Agent 的工具由模型自己决定何时查、查什么、结果不满意要不要换关键词再查甚至主动触发索引重建。二、章节向量索引流水线从一章正文到可检索的表OpenFic 的索引以项目为单位每个项目对应 LanceDB 中一张独立表索引键形如chapters:{project_id}实现代码集中在 backend/app/retrieval/ 模块。流水线分四步1. 结构感知分块让每个片段都保留完整语义默认分块参数为800 字符/块、100 字符重叠可在设置中调整。分块器RecursiveCharacterChunker见 backend/app/retrieval/internal/indexing/chunking.py采用三级降级策略优先按段落空行为单元贪心打包单段超长时按句子边界。等二次切分仍然超长才按 chunk_size 硬切。这比纯滑动窗口更能避免把一段对话拦腰截断保证嵌入向量承载的是完整语义单元。更巧妙的是章节前缀注入每个分块入库时会拼接第 N 章 章节标题前缀再参与向量化backend/app/retrieval/chapter_index.py 中的_build_chapter_prefix同时原始正文单独存在raw_text列用于回传显示——这样向量既知道这段话说了什么也知道它是哪一章的。2. 批量向量化 写入 LanceDB分块完成后后台任务按每次请求最多 50 个分块的节奏调用你配置的 Embedding 模型default_embedding_model逐批写入 LanceDB。任务定义见 backend/app/background/jobs/definitions/retrieval_chapter_index_batch.py每批独立提交事务并向前端推送进度10/101 → 20/101 → …百万字长篇也能渐进构建、随时可取消。3. 三类索引各司其职写入后引擎会为表建立三种索引见 backend/app/retrieval/engine.py索引类型作用vectorIVF-HNSW-SQ余弦距离语义相似度检索抗改写、抗同义textFTS 全文倒排精确词面匹配专门面向中文做了 ngram 二元组分词关闭英文词干与停用词标量字段BTree按project_id/chapter_id/volume_id过滤这个向量 BM25双通道设计是中文场景的关键向量擅长意合换个说法也能找到全文索引擅长形合人名、地名、招式名必须字面对上两者互补。4. 状态机管理索引新鲜度索引不是一次性产物。OpenFic 为每章记录 SHA-256 内容哈希据此实时判定章节状态backend/app/retrieval/chapter_index.pystale过期你修改了已索引章节 → 内容哈希对不上自动标记过期needs_rebuild需重建更换了 Embedding 模型、向量维度或表结构版本 → 整个项目索引强制重建fresh新鲜全部章节与索引一致可直接检索。三、Agentic RAG 核心两个工具 一套查询管线检索能力最终以两个工具暴露给 Agent位于 backend/app/agent_runtime/tools/impls/chapter/工具一search_chapters —— 混合检索、RRF 融合、置信度裁剪Agent 传入一句自然语言如主角第一次展示异能的场景工具内部执行完整管线见 backend/app/agent_runtime/tools/impls/chapter/search_chapters.py 与 backend/app/retrieval/internal/query/builder.py双通道召回向量检索与 BM25 全文检索各取 Top 40 候选HNSW 的ef参数调至 200 保证召回率并按project_id过滤确保只搜当前项目RRF 融合排序用倒数排名融合k60向量权重 0.7合并两路结果归一化为 0~1 置信度无需对齐两种分数的量纲可选 Rerank 精排若开启了 Rerank 模型对候选做交叉编码精排进一步提升 Top 结果质量置信度裁剪低于 0.3 置信度的分块直接丢弃避免无关段落污染上下文按章节分组回传最终只返回 Top 5 分块按卷 → 章 → 片段 分数结构化组织Agent 拿到的是第 22 章 拍卖会……52.58这样可引用的结果。工具二update_index —— 让 Agent 自己决定何时重建这就是 Agentic 的精髓所在。检索前工具会先检查索引新鲜度索引状态Agent 拿到检索请求时的行为fresh直接执行混合检索stale提示索引非最新可用forcetrue强制检索或先更新索引needs_rebuild / no_index拒绝检索明确告知需要先建索引当自动索引策略设为由 Agent 决定时提示文本会顺带建议模型调用 update_index 工具入队重建任务。也就是说该重建了这个决策本身也被交给了模型——你只负责继续写Agent 自己维护记忆的时效性。四、新手上手指南开启语义检索只需 4 步添加一个 Embedding 模型在设置 → 模型中接入任意支持 embedding 的模型服务商并把它设为默认嵌入模型default_embedding_model选择启用范围进入设置 → 索引面板对应 frontend/src/features/settings/components/index-settings.tsx索引模式可选全部项目 / 指定项目 / 关闭还可微调分块大小与重叠可选配置 Rerank开启重排序并指定一个 rerank 模型Top 结果会更精准选择自动索引策略保存章节时立即索引、由 Agent 决定或手动三选一。首次点击更新索引后面板会实时显示每个项目的章节级进度10/101 → 20/101完成后即可检索。五、这套实现值得借鉴的 5 个设计点双通道召回是中文长文的刚需ngram FTS 与向量检索缺一不可RRF 融合免去了分数对齐的麻烦前缀注入 raw_text 分离一个设计同时解决向量缺上下文和回传要干净两个问题哈希驱动的新鲜度状态机stale / needs_rebuild / fresh 三态让索引可不可信变得可计算而不是玄学Agentic 的边界感检索工具拒绝在 needs_rebuild 状态下带病工作宁可让 Agent 走 update_index也不返回错误记忆工程化兜底置信度阈值裁剪噪声、50 块/批的渐进式索引、失败即整任务可重发——百万字场景下稳比快重要。如果你想在自己的创作工作流里复刻类似能力可以从 backend/app/retrieval/ 目录读起engine.py是最核心的 LanceDB 封装chapter_index.py展示了如何把通用检索引擎对接到具体业务章节、项目、哈希状态机两者分层清晰非常适合作为 RAG 落地参考。赞分享AI 应用人工智能大模型AI AgentRAG后端前端桌面应用【免费下载链接】OpenFic专为小说创作打造的跨平台、用户友好、AI Native 的一站式 Vibe Writing 工具。A cross-platform, user-friendly, AI-native, all-in-one Vibe Writing tool designed specifically for novel writing.项目地址https://gitcode.com/gh_mirrors/op/OpenFic点击查看免费下载相关推荐实测百万文本块搜索Memvid如何实现毫秒级语义检索实测百万文本块搜索Memvid如何实现毫秒级语义检索 在数据爆炸的时代高效管理和检索海量文本信息成为开发者面临的重要挑战。Memvid作为一款基于视频的A人工智能Agent 记忆RAG向量数据库LLM Zoomcamp 2025 向量检索模块基于 Qdrant 的语义搜索、RAG 实现与混合检索实战LLM Zoomcamp 2025 向量检索模块基于 Qdrant 的语义搜索、RAG 实现与混合检索实战 本文围绕 LLM Zoomcamp 2025 年课示例工程教程人工智能大模型TaskWeaver 文档检索角色DocumentRetriever实战指南基于 FAISS 的 RAG 检索实现TaskWeaver 文档检索角色DocumentRetriever实战指南基于 FAISS 的 RAG 检索实现 导读 本文围绕 TaskWeaverAI Agent数据分析创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考