尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Langchain-Chatchat 知识库怎么在 kb_settings.yaml 中切换文本分割器并调整 CHUNK_SIZE 参数

Langchain-Chatchat 知识库怎么在 kb_settings.yaml 中切换文本分割器并调整 CHUNK_SIZE 参数 Langchain-Chatchat 知识库怎么在 kb_settings.yaml 中切换文本分割器并调整 CHUNK_SIZE 参数【免费下载链接】Langchain-ChatchatLangchain-Chatchat原Langchain-ChatGLM基于 Langchain 与 ChatGLM, Qwen 与 Llama 等语言模型的 RAG 与 Agent 应用 | Langchain-Chatchat (formerly langchain-ChatGLM), local knowledge based LLM (like ChatGLM, Qwen and Llama) RAG and Agent app with langchain项目地址: https://gitcode.com/GitHub_Trending/la/Langchain-ChatchatLangchain-Chatchat 在文件进入知识库时会对文本做切分切分器与分块长度由kb_settings.yaml中的TEXT_SPLITTER_NAME、CHUNK_SIZE、OVERLAP_SIZE三个配置项控制。当你希望改用 Markdown 标题切分、tiktoken 计数切分或者觉得默认 750 字符一段太长/太短时需要修改这个文件并让服务重新读取配置。本文覆盖从生成配置文件、修改配置项到确认新参数生效的完整操作路径。准备先生成 kb_settings.yamlkb_settings.yaml是运行时配置文件仓库中不随代码提供需要由初始化命令生成。其文件位置由 settings.py 中的KBSettings定义model_config SettingsConfigDict(yaml_fileCHATCHAT_ROOT / kb_settings.yaml)即文件落在数据目录CHATCHAT_ROOT根下。执行chatchat init会创建数据目录、复制 samples 知识库并生成全部默认配置文件执行成功后会打印生成默认配置文件成功。如果数据目录不在默认位置按 docs/contributing/settings.md 的用法用环境变量指定CHATCHAT_ROOT/path/to/data chatchat init注意把/path/to/data替换为你实际的数据目录README 中的示例使用的是D:\chatchat-test\data这类绝对路径。修改 TEXT_SPLITTER_NAME 与 CHUNK_SIZE打开CHATCHAT_ROOT/kb_settings.yaml与本文任务相关的配置项如下括号内为 settings.py 中的默认值TEXT_SPLITTER_NAME: ChineseRecursiveTextSplitter # 默认值 CHUNK_SIZE: 750 # 知识库中单段文本长度 OVERLAP_SIZE: 150 # 知识库中相邻文本重合长度CHUNK_SIZE的文档注释是“知识库中单段文本长度(不适用MarkdownHeaderTextSplitter)”OVERLAP_SIZE是“知识库中相邻文本重合长度(不适用MarkdownHeaderTextSplitter)”这一点在切到标题切分时要特别注意见下文说明。可选的切分器名称TEXT_SPLITTER_NAME的取值必须是text_splitter_dict中已有的键内置四款为切分器名称source 配置说明ChineseRecursiveTextSplitter空项目自定义的中文递归切分器默认分隔符为中英文句读符号见 chinese_recursive_text_splitter.mdSpacyTextSplitterhuggingfacetokenizergpt2从 huggingface 加载 tokenizer 后切分RecursiveCharacterTextSplittertiktokentokenizercl100k_base按 tiktoken 编码计数切分MarkdownHeaderTextSplitter使用headers_to_split_on按标题层级切分默认按#、##、###、####切分如果TEXT_SPLITTER_NAME填的不是上面四个内置名kb/utils.py 中的make_text_splitter会先在chatchat.server.file_rag.text_splitter模块里按同名查找自定义切分器找不到再回退到 langchain 内置实现因此扩展切分器时可以直接填类名。各切分器的加载路径由text_splitter_dict中对应条目的source决定tiktoken走from_tiktoken_encoderhuggingface走from_huggingface_tokenizer配置为gpt2时用 GPT2TokenizerFast其余值通过 AutoTokenizer 加载source为空时先尝试带 spacyzh_core_web_smpipeline 的构造方式失败则退回不带 pipeline 的构造。settings.py 中对text_splitter_dict的注释是“TextSplitter配置项如果你不明白其中的含义就不要修改”所以切换切分器时建议只改TEXT_SPLITTER_NAME一行不动text_splitter_dict本体只有要改 Markdown 标题层级时才需要编辑MarkdownHeaderTextSplitter条目下的headers_to_split_on。MarkdownHeaderTextSplitter 的特殊性切到MarkdownHeaderTextSplitter时CHUNK_SIZE和OVERLAP_SIZE不生效——切分完全由headers_to_split_on的标题层级决定默认按#到####四级标题切块且strip_headersFalse。此时调整CHUNK_SIZE对该切分器没有任何影响想要更细的粒度应调整标题层级配置。让修改生效并验证settings.md 说明配置项有缓存.yaml文件被修改时会自动刷新缓存因此修改保存后无需手工清理缓存。验证方式有两种启动服务。chatchat start -a的启动信息中会打印当前分词器startup.py 的输出形如当前使用的分词器MarkdownHeaderTextSplitter确认打印的名称与你写入TEXT_SPLITTER_NAME的一致即说明配置被正确读取以上为按文档逻辑展示的示例输出名称以你的实际配置为准。用 Python 打印整组知识库配置与 settings.md 给出的用法一致from chatchat.settings import Settings print(Settings.kb_settings) # 知识库相关配置项重点核对TEXT_SPLITTER_NAME、CHUNK_SIZE、OVERLAP_SIZE三个值。注意 settings.md 同时提醒只有Settings.kb_settings.XX这种访问方式会自动跟踪配置文件修改如果代码里先s Settings.kb_settings再读s.XX配置不会自动刷新。已有知识库需要重建才会按新参数切分切分发生在文件导入知识库、向量化之前上传接口 kb_doc_api.py 的chunk_size、chunk_overlap、zh_title_enhance参数默认值就取自Settings.kb_settings.CHUNK_SIZE等配置导入时按参数切分。已经建好向量库的旧数据不会随配置修改自动重新切分按 README“初始化知识库”一步用文档给出的命令重建知识库让文件按当前参数重新切分chatchat kb -rREADME 要求执行该命令前确保已启动模型推理框架及对应 embedding 模型并完成模型接入配置。不改 yaml 的临时覆盖方式如果只是某一次导入想用不同的分块长度而不想动kb_settings.yaml上传接口支持按请求覆盖kb_doc_api.py 中chunk_size的描述是“知识库中单段文本最大长度”、chunk_overlap是“知识库中相邻文本重合长度”不传时才落回 yaml 默认值。WebUI 知识库页面的“单段文本最大长度”“相邻文本重合长度”输入框knowledge_base.py默认值同样取自Settings.kb_settings.CHUNK_SIZE/OVERLAP_SIZE输入框中修改只影响当前页面操作不会改写配置文件。小结改TEXT_SPLITTER_NAME时必须取text_splitter_dict中已有的键或自定义切分器的类名否则make_text_splitter会抛错并回退到RecursiveCharacterTextSplitter兜底切分行为与预期不一致且不易察觉。CHUNK_SIZE/OVERLAP_SIZE对MarkdownHeaderTextSplitter无效标题切分只认headers_to_split_on。验证以启动信息“当前使用的分词器”一行和print(Settings.kb_settings)的返回值为准已有知识库按 README 用chatchat kb -r重建后才会按新参数重新切分。【免费下载链接】Langchain-ChatchatLangchain-Chatchat原Langchain-ChatGLM基于 Langchain 与 ChatGLM, Qwen 与 Llama 等语言模型的 RAG 与 Agent 应用 | Langchain-Chatchat (formerly langchain-ChatGLM), local knowledge based LLM (like ChatGLM, Qwen and Llama) RAG and Agent app with langchain项目地址: https://gitcode.com/GitHub_Trending/la/Langchain-Chatchat创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表