摘要:本地知识库答非所问,常见原因是切片太大/太小、重叠没盖住边界句,或回答没有可点开的引用来源。本文按 AnythingLLM 文本切分说明、Dify 分段设置与召回测试文档、LangChain RecursiveCharacterTextSplitter,整理一套可改、可回滚的参数设置与引用溯源核对流程。查询日期 2026-11-02;无联盟链接。

依据:AnythingLLM 文档源码《Text Splitting & Chunking》(官网 docs 遇 Cloudflare 验证,以 GitHub 文档源为准)、Dify《指定分段设置》、Dify《Test and Tune Retrieval》、LangChain《Splitting recursively》。查询日期:2026-11-02(北京时间)。只放官网/权威普通链接(affiliate_later: 1)。参数会随版本变,以你打开的官方页面与面板显示为准。

本站已有 AnythingLLM / Dify 本地部署与文档切片入门(怎么装、默认从哪改)和 本地笔记向量化与引用核对(嵌入链路与人工勾选表)。本文不重复装面板,只收窄到三件事:切片大小怎么设置、重叠怎么设置、回答如何带上可溯源引用。你会带走一张「改一项、重嵌、用固定题回归」的操作顺序。

一、先记住:改参数不等于立刻生效

AnythingLLM 文档写明:切分设置在 Settings → AI Providers → Text Splitter & Chunking;只影响之后新嵌入的文档。库里已有的块不会自动重切。要对比新旧参数,需要把文档从工作区移除再嵌入一次。

本地知识库检索:切片大小、重叠与引用溯源怎么设置(2026)-有序
AnythingLLM 文档源码:切分策略用 RecursiveCharacterTextSplitter;默认 chunk size 1000 字符;改设置后须重新嵌入才生效(2026-11-02 截图)

Dify 侧也有类似纪律:知识库创建后分段模式(通用 / 父子)不能改,但分隔符、分段最大长度等可以再调;调完仍要用「检索测试」看命中块,而不是只看聊天语气变好没有。

动手前固定三条习惯:

  1. 一次只改一个旋钮(先 size,或先 overlap,或先 Top K)。
  2. 准备 5~10 道「金题」:问法写完整句子,并事先标好「应当命中的文件名 / 段落大意」。
  3. 改完必重嵌或重索引,再跑同一组金题;不要一边换模型一边改切片。

二、切片大小:从默认出发,按文档形态加减

1. 官方默认可以当起点

来源默认 / 建议起点单位注意
AnythingLLMchunk size 1000,overlap 20字符,不是 token;英文约 4 字符 ≈ 1 token,1000 字符大约 250 token
LangChain RecursiveCharacterTextSplitter文档示例常用较小演示值;生产需自定默认按字符列表递推切:\n\n → \n → 空格 → 单字符
Dify面板填「分段最大长度」+ 分隔符超长会被强制切开,与分隔符无关
本地知识库检索:切片大小、重叠与引用溯源怎么设置(2026)-有序
LangChain 文档:RecursiveCharacterTextSplitter 按字符列表递推切分,优先保住段落再句子再词(2026-11-02 截图)

AnythingLLM 还提醒:嵌入模型自己有最大长度;你把 chunk size 设得比模型上限还大,系统会按模型上限截断并打日志,没有额外收益。

2. 怎么判断该加大还是减小

先看失败长什么样,再动数字:

现象更可能的原因先试什么
命中片段里只有半句定义,缺前提块太小加大 size(例如 1000→1500 字符),或改用父子分段
命中了,但夹带大段无关章节块太大减小 size,或加强分隔符(按标题 / 空行切)
FAQ、词条互相串台多条短条目挤在同一块减小 size,或按「一条一卡」预处理
规章、手册「局部命中却答不全」需要更大上下文Dify 父子模式:子块匹配,返回父块
本地知识库检索:切片大小、重叠与引用溯源怎么设置(2026)-有序
Dify《指定分段设置》:关键参数含分隔符与分段最大长度;通用模式与父子模式创建后模式不可改(2026-11-02 截图)

中文材料里,同一「1000 字符」承载的信息密度通常高于英文。若嵌入模型偏英文预训练,先用默认跑金题,再按命中质量微调,不要一上来按英文博客抄 512 token 硬套。

三、重叠:盖住边界句,别叠成两份库

Dify 通用模式里可配 分段重叠长度:例如重叠 50 字符,则上一段末尾 50 字会出现在下一段开头,用来避免关键句刚好落在刀口上。

本地知识库检索:切片大小、重叠与引用溯源怎么设置(2026)-有序
Dify:通用模式可设分段重叠;快速对比表说明通用直接返回命中段、父子用子段匹配父段作答(2026-11-02 截图)

AnythingLLM 默认 overlap 20,且要求 overlap 必须小于 chunk size;重叠会复制文本,相对 size 过大时,同一文档会多出不少向量,检索噪声也会上去。

可执行设置顺序:

  1. 先保持 AnythingLLM 默认 1000 / 20,或 Dify 面板当前默认,跑金题。
  2. 若错误集中在「跨段句子被切断」,只把 overlap 提到约 size 的 5%~15%(例如 size 1000 时试 50~100),其余不动。
  3. 重嵌后若噪声明显变多,把 overlap 降回去,改去清洗标题层级或换父子模式,而不是继续加 overlap。

分隔符也要一起看:Dify 写明分隔符在切分时会被删掉;别用正文里常见的字当分隔符,优先用空行、标题标记等「非内容」边界。

四、引用溯源:回答旁要能点回原段

「溯源」要落到面板或 API 能拿出的字段,别停在模型口头说「根据资料」:

  1. 命中的原文片段(可复制对照);
  2. 来源元数据(文件名、标题、分段编号、路径);
  3. 匹配分数或排序位置(方便判断是不是擦边命中)。

落地时分两层做:

检索层(先保证块对)打开 Dify 一类产品的 Retrieval Test / 检索测试:用完整用户问法测,不要只丢关键词。官方建议同一问题在不同检索深度下各跑一遍,把最稳定的深度设成默认;每次运行会留在 Records,方便对比改参前后。答错时区分「完全没命中」还是「命中了但排太低」,对应去加宽 Top K / 降低分数阈值,或换 rerank,而不是先换聊天模型。

本地知识库检索:切片大小、重叠与引用溯源怎么设置(2026)-有序
Dify《Test and Tune Retrieval》:用真实完整问法做召回测试,保留 golden questions,坏例按 miss / low score 分治(2026-11-02 截图)

生成层(再要求可引用)提示词写死:只依据提供的片段作答;片段不足就写「库里没有」。框架写法见提示词四段框架。外发前再过一遍幻觉核查清单:数字、条款、日期必须在命中片段里逐字找到。竞品表场景可对照竞品调研防幻觉清单。

若产品提供「Citation / 引用与归属」开关,打开后核对:每条引用能否跳回知识库分段列表;字段为空就当无引用,不要把聊天里的书名号当成溯源成功。

五、一张「怎么设置」核对表(可打印)

步骤你具体做什么通过标准
1. 定形态FAQ / 词条 → 偏小块 + 通用模式;手册 / 论文 → 父子或更大块文档类型写进笔记,避免混库乱切
2. 定起点AnythingLLM 1000/20;或 Dify 面板默认 + 预览分段预览里一条块能独立读懂
3. 建金题5~10 题,标期望文件与段落题库不随心情改口
4. 改 size只改大小,重嵌,跑金题命中率升且噪声可接受
5. 改 overlap只改重叠,重嵌,再跑边界句切断减少,向量数未暴涨
6. 调检索Top K、分数阈值、深度一次改一项Records 可对比
7. 开引用回答下挂原文片段与来源抽 2 条点开与磁盘文件一致
8. 固化记下最终数字与嵌入模型名换模型要重建索引

本地推理可继续用 Ollama;笔记软件侧见 Obsidian + AI 插件。敏感内容别往公有对话框贴,见 AI 隐私。

相关阅读

官方来源(查询日期 2026-11-02,北京时间)

说明:本文不含推广链接;AnythingLLM、Dify、LangChain 等均为官网或官方仓库普通链接。功能与默认参数随版本变化。个人自用本地问答与「向境内公众提供生成式 AI 服务」不是同一合规边界,对外服务须另行评估。

风险提示:检索参数没有普适最优解;调参可能改善召回,也可能引入噪声。本文不构成技术实施或合规意见,重要结论须人工对照原文。