ARTICLE DETAIL

资讯详情

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

NocoBase 知识库分段管理(Segments)全解析:从分段列表到重新向量化

NocoBase 知识库分段管理(Segments)全解析:从分段列表到重新向量化 NocoBase 知识库分段管理Segments全解析从分段列表到重新向量化【免费下载链接】nocobaseNocoBase is an open-source AI no-code platform for building business systems fast. Instead of generating everything from scratch, AI works on top of production-proven infrastructure and a WYSIWYG no-code interface, so you get both speed and reliability.项目地址: https://gitcode.com/GitHub_Trending/no/nocobaseNocoBase 的 AI 知识库在文档上传后会先把正文按分段参数拆成多个分段再将启用中的分段写入向量存储RAG检索增强生成命中的也是这些分段而非整篇原始文档。本文围绕「Documents」页面中的「Segments」分段管理功能完整讲解分段列表、编辑、启用/禁用/删除、重新分段等全部操作并结合 plugin-ai 插件 的源码说明分段与关联问题在检索链路中的真实作用帮助你精确控制知识库的检索粒度和上下文质量。为什么检索命中的是「分段」而不是整篇文档文档上传后NocoBase 会先按分段参数把正文拆成若干分段再把启用中的分段写入向量存储。RAG 检索时命中的也是这些分段而不是整篇原始文档。因此三个分段参数会直接决定知识库的效果「Split document」是否按参数拆分文档。开启后生成多个分段关闭后整篇文档作为一个分段。「Chunk size」每个分段的最大字符数默认6000。值越小分段越细值越大单个命中结果包含的上下文越多。「Chunk overlap」相邻分段之间保留的重叠字符数默认1200。适当重叠可以减少段落边界造成的上下文断裂。从源码结构看分段的检索结果被建模为「内容 元数据」的结构化数据见 knowledge-base.type.ts 中的DocumentSegmented类型export type DocumentSegmented { content: string; metadata: Recordstring, any; id?: string; };也就是说每个分段除了正文内容外还会携带元数据例如下文会讲到的关联问题matchedQuestions检索时元数据同样参与匹配。打开分段管理进入知识库的「Documents」页面在某篇文档右侧点击「Segments」会打开「Segment management」弹窗这里展示当前文档生成的所有分段。原文档配图为 NocoBase 在线文档站托管的外部图片本仓库内无对应图片文件故此处不重复引用。查看分段列表分段列表包含以下信息字段含义「No.」分段序号从 1 开始显示「Preview」分段内容预览「Characters」当前分段字符数「Related questions」当前分段配置的关联问题数量「Enabled」是否参与向量化和检索「Updated at」分段最近更新时间打开「Enabled only」开关后列表只显示启用中的分段。这个开关只影响列表显示不会修改分段数据。历史数据说明如果某篇文档是通过旧版本知识库插件上传的可能没有单独保存分段信息。旧版本知识库插件会把分段内容和分段向量一起保存在向量数据库中因此「Segment management」里的分段列表可能为空。这种情况不影响知识库检索。只有需要查看或编辑分段列表时才需要重新向量化或重新分段通常不需要仅为了让列表显示数据而重新处理文档。编辑分段正文与关联问题点击某个分段右侧的「Edit」可以打开分段详情在详情里可以修改「Content」分段正文「Related questions」额外的可检索问法关联问题的作用原理「Related questions」用于给当前分段补充常见问法。它不会改写分段正文但会参与向量检索如果用户输入的问题和某条关联问题匹配度较高检索结果会返回这条关联问题对应的文档分段。这一点在源码中有直接印证。AI 员工的知识库检索入口 ai-knowledge-base.ts 中的buildKnowledgeBaseContent会把命中的关联问题拼接到分段内容之前再交给大模型const buildKnowledgeBaseContent (content: string, metadata?: Recordstring, unknown) { const matchedQuestions normalizeMatchedQuestions(metadata?.matchedQuestions); if (!matchedQuestions.length) { return content; } return Related questions:\n${matchedQuestions.join(\n)}\n\n${content}; };其中normalizeMatchedQuestions会过滤掉空字符串只保留非空的问题文本。也就是说当某个分段的关联问题被命中时最终注入提示词的检索结果会以Related questions: ...开头帮助大模型理解用户问法的来源。保存后NocoBase 会更新分段文件并触发当前文档重新向量化。回到「Documents」列表时状态可能会短暂显示为「Pending」。启用、禁用和删除分段「Enabled」开关用于控制单个分段是否参与检索启用分段会被写入向量存储可以被 RAG 和命中测试检索到禁用分段保留在列表中但不会参与后续向量化和检索点击「Delete」会删除当前分段及其向量数据。删除后文档的分段数、字符数会重新统计。⚠️ 注意禁用或删除分段都会触发重新向量化。处理完成前文档状态可能显示为「Pending」。重新分段调整 Split document / Chunk size / Chunk overlap点击右上角「Segment settings」可以为当前文档重新设置分段参数其中Split document是否按参数拆分文档。开启后会生成多个分段关闭后会把整篇文档作为一个分段Chunk size每个分段的最大字符数默认6000。值越小分段越细值越大单个命中结果包含的上下文越多Chunk overlap相邻分段之间保留的重叠字符数默认1200。适当重叠可以减少段落边界造成的上下文断裂点击「Resegment」会按当前参数重新生成分段。⚠️ 注意重新分段会丢弃已经手工编辑过的分段内容和关联问题。只有确认需要按新参数重建分段时再执行这个操作。检索链路源码透视分段如何被命中结合源码可以完整还原「分段 → 向量化 → 检索 → 注入提示词」的调用链。知识库功能的抽象接口定义在 features/knowledge-base.tsexport interface KnowledgeBaseFeature { getKnowledgeBase(knowledgeBaseKeys: string[]): PromiseKnowledgeBase[]; getKnowledgeBaseGroup(knowledgeBaseKeys: string[]): PromiseKnowledgeBaseGroup[]; getAccessibleKnowledgeBaseKeys(options: KnowledgeBaseAccessOptions): Promisestring[]; search(options: SearchOptions): PromiseDocumentSegmentedWithScore[]; }search返回的DocumentSegmentedWithScore就是「命中分段 相似度分数」其类型定义同样在 knowledge-base.type.ts 中export type DocumentSegmentedWithScore DocumentSegmented { score: number; }; export type SearchOptions { knowledgeBaseKeys?: string[]; query: string; topK?: number; score?: string; roleNames?: string[]; };而 ai-knowledge-base.ts 中的KnowledgeBaseManager.retrievePrompt展示了实际调用方式从 AI 员工配置中读取knowledgeBase下的knowledgeBaseKeys、topK、score调用features.knowledgeBase.search进行检索const { knowledgeBaseKeys [], topK, score } employee.knowledgeBase ?? {}; const docs await this.plugin.features.knowledgeBase.search({ knowledgeBaseKeys, query, topK, score, roleNames });检索命中的多个分段会通过buildKnowledgeBaseContent依次拼装、以换行连接后注入提示词没有命中时则返回No document match in knowledge base之类的占位说明。这意味着分段是检索的最小单位chunkSize直接决定单次命中的上下文长度关联问题与正文同时参与向量化编辑「Related questions」后需要重新向量化才会生效禁用/删除分段会改变可检索集重新向量化完成前文档处于「Pending」状态属于预期行为。分段参数调优建议chunkSize 偏小如1000~3000分段更细、定位更精准但单个命中上下文不足可能需要依赖多段拼接chunkSize 偏大超过默认6000单个命中携带更多上下文但噪声也随之增加且向量检索的匹配精度可能下降chunkOverlap 不要设 0相邻分段边界处的句子可能被截断适当重叠默认1200可以保住跨段语义调整参数后务必点击「Resegment」重建分段并注意该操作会清空手工编辑的内容与关联问题若只是修改少量分段优先使用逐条「Edit」而非整体重新分段。通过「Segment management」的分段列表、逐条编辑与全局重新分段你可以把知识库的检索粒度控制在适合业务问答的精度上并与「关联问题」机制配合覆盖更多真实问法。【免费下载链接】nocobaseNocoBase is an open-source AI no-code platform for building business systems fast. Instead of generating everything from scratch, AI works on top of production-proven infrastructure and a WYSIWYG no-code interface, so you get both speed and reliability.项目地址: https://gitcode.com/GitHub_Trending/no/nocobase创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表