Skip to content

[BUG] 简洁阐述问题 / Concise description of the issue #5433

@CulaDebug

Description

@CulaDebug

问题描述 / Problem Description
用简洁明了的语言描述这个问题 / Describe the problem in a clear and concise manner.
��使用 Langchain-Chatchat 初始化知识库时,执行 chatchat kb -r 命令重建向量库,因嵌入模型(bge-large-zh-v1.5)输入长度限制,持续报 HTTP code: 500 错误,错误信息为 {"error":"the input length exceeds the context length"},导致部分文档无法正常嵌入到 faiss 向量库中,知识库初始化失败。

复现问题的步骤 / Steps to Reproduce
执行 chatchat kb -r,终端输出文档切分日志后,触发 input length exceeds the context length 错误,向量库重建失败。

预期的结果 / Expected Result
描述应该出现的结果 / Describe the expected result.
知识库初始化过程中,文档按配置的分块参数正常切分,嵌入模型能处理所有分块文本,无长度超限错误,成功将所有文档嵌入并重建 faiss 向量库。

实际结果 / Actual Result
描述实际发生的结果 / Describe the actual result.
PS D:\pycharm\Langchain-Chatchat-master> chatchat kb -r
recreating all vector stores
d:\pycharm\langchain-chatchat-master\venv\lib\site-packages\langchain_api\module_import.py:87: LangChainDeprecationWarning: Importing GuardrailsOutputParser from langchain.output_parsers is deprecated. Please replace the import with the following:
from langchain_community.output_parsers.rail_parser import GuardrailsOutputParser
warnings.warn(
2025-12-29 18:41:23.230 | INFO | chatchat.server.knowledge_base.kb_cache.faiss_cache:load_vector_store:109 - loading vector store in 'samples/vector_store/quentinz/bge-large-zh-v1.5' from disk.
2025-12-29 18:41:23.625 | INFO | chatchat.server.knowledge_base.utils:file2docs:336 - CSVLoader used for D:\pycharm\Langchain-Chatchat-master\data\knowledge_base\samples\content\test_files\langchain-ChatGLM_closed.csv
2025-12-29 18:41:23.625 | INFO | chatchat.server.knowledge_base.utils:file2docs:336 - UnstructuredExcelLoader used for D:\pycharm\Langchain-Chatchat-master\data\knowledge_base\samples\content\test_files\langchain-ChatGLM_closed.xlsx
2025-12-29 18:41:23.626 | INFO | chatchat.server.knowledge_base.utils:file2docs:336 - CSVLoader used for D:\pycharm\Langchain-Chatchat-master\data\knowledge_base\samples\content\test_files\langchain-ChatGLM_open.csv
2025-12-29 18:41:23.627 | INFO | chatchat.server.knowledge_base.utils:file2docs:336 - UnstructuredExcelLoader used for D:\pycharm\Langchain-Chatchat-master\data\knowledge_base\samples\content\test_files\langchain-ChatGLM_open.xlsx
2025-12-29 18:41:23.627 | INFO | chatchat.server.knowledge_base.utils:file2docs:336 - RapidOCRPDFLoader used for D:\pycharm\Langchain-Chatchat-master\data\knowledge_base\samples\content\test_files\langchain.pdf
2025-12-29 18:41:23.628 | INFO | chatchat.server.knowledge_base.utils:file2docs:336 - UnstructuredFileLoader used for D:\pycharm\Langchain-Chatchat-master\data\knowledge_base\samples\content\test_files\test.txt
2025-12-29 18:41:23.628 | INFO | chatchat.server.knowledge_base.utils:file2docs:336 - TextLoader used for D:\pycharm\Langchain-Chatchat-master\data\knowledge_base\samples\content\分布训练技术原理.md
2025-12-29 18:41:23.629 | INFO | chatchat.server.knowledge_base.utils:file2docs:336 - TextLoader used for D:\pycharm\Langchain-Chatchat-master\data\knowledge_base\samples\content\大模应用技术原理.md
2025-12-29 18:41:23.630 | INFO | chatchat.server.knowledge_base.utils:file2docs:336 - TextLoader used for D:\pycharm\Langchain-Chatchat-master\data\knowledge_base\samples\content\大模技术栈-实战与应用.md
2025-12-29 18:41:23.630 | INFO | chatchat.server.knowledge_base.utils:file2docs:336 - TextLoader used for D:\pycharm\Langchain-Chatchat-master\data\knowledge_base\samples\content\大模技术栈-算法与原理.md
2025-12-29 18:41:23.631 | INFO | chatchat.server.knowledge_base.utils:file2docs:336 - TextLoader used for D:\pycharm\Langchain-Chatchat-master\data\knowledge_base\samples\content\大模指令对齐训练原理.md
2025-12-29 18:41:23.631 | INFO | chatchat.server.knowledge_base.utils:file2docs:336 - TextLoader used for D:\pycharm\Langchain-Chatchat-master\data\knowledge_base\samples\content\大模推理优化策略.md
文档切分示例:page_content='# 大模型技术栈-实战与应用\n- 训练框架\n - deepspeed\n - megatron-lm\n - colossal-ai\n - trlx\n- 推理框架\n - triton\n - vllm\n - text-gene
ration-inference\n - lit-llama\n - lightllm\n - TensorRT-LLM(原FasterTransformer)\n - fastllm\n - inferllm\n - llama-cpp\n - openPPL-LLM\n- 压缩框架\n - bitsandbyt
es\n - auto-gptq\n - deepspeed\n- embedding框架\n - sentence-transformer\n - FlagEmbedding\n- 向量数据库 向量数据库对比\n - fais
s\n - pgvector\n - milvus\n - pinecone\n - weaviate\n - LanceDB\n - Chroma\n- 应用框架\n - Auto-GPT\n - langchain\n - llama-index\n - quivr\n- python前端\n

  • streamlit\n - gradio\n- python API工具\n - FastAPI+uvicorn\n - flask\n - Django' metadata={'source': 'D:\pycharm\Langchain-Chatchat-master\data\knowledge_base\samples\content\大模型技术栈-实战与应用.md'}
    正在将 samples/大模型技术栈-实战与应用.md 添加到向量库,共包含1条文档
    文档切分示例:page_content='# 分布式训练技术原理\n- 数据并行\n - FSDP\n - FSDP算法是由来自DeepSpeed的ZeroRedundancyOptimizer技术驱动的,但经过修改的设计和实现与PyTorch的其他组件
    持一致。FSDP将模型实例分解为更小的单元,然后将每个单元内的所有参数扁平化和分片。分片参数在计算前按需通信和恢复,计算结束后立即丢弃。这种方法确保FSDP每次只需要实现一个单元的参数,这大大
    降低了峰值内存消耗。(数据并行+Parameter切分)\n - DDP\n - DistributedDataParallel (DDP), 在每个设备上维护一个模型副本,并通过向后传递的集体AllReduce操作同步梯度,从而确保在训
    练期间跨副本的模型一致性
    。为了加快训练速度, DDP将梯度通信与向后计算重叠 ,促进在不同资源上并发执行工作负载。\n - ZeRO\n - Model state\n - Optimizer->ZeRO1\n
    - 将optimizer state分成若干份,每块GPU上各自维护一份\n - 每块GPU上存一份完整的参数W,做完一轮foward和backward后,各得一份梯度,对梯度做一次 AllReduce(reduce-
    scatter + all-gather)
    得到完整的梯度G,由于每块GPU上只保管部分optimizer states,因此只能将相应的W进行更新,对W做一次All-Gather\n - Gradient+Optimzer->ZeRO2' metadata={'source': 'D:\pycharm\Langchain-Chatchat-master\data\knowledge_base\samples\content\分布式训练技术原理.md'}
    文档切分示例:page_content=': 0\ntitle: 加油~以及一些建议\nfile: 2023-03-31.0002\nurl: https://github.com/imClumsyPanda/langchain-ChatGLM/issues/2\ndetail: 加油,我认为你的方向是对的。\nid: 0' metadata={'source': 'D:\pycharm\Langchain-Chatchat-master\data\knowledge_base\samples\content\test_files\langchain-ChatGLM_closed.csv', 'row': 0}
    文档切分示例:page_content='# 大模型推理优化策略\n- 7.1 显存优化\n - PagedAttention\n - KV cache,其具有以下特点:1. 显存占用大,14b
    ���别的模型,每个token需要约0.7M-1M的显存;2. 动态变化:KV 缓存的大小取决于序列长度,这是高度可变和不可预测的。因此,这对有效管理 KV cache 挑战较大。该研究发现,由于碎片化和过度保留,现有
    系统浪费了 60% - 80% 的显存。\n - 为了解决这个问题,该研究引入了 PagedAttention,这是一种受操作系统中虚拟内存和分页经典思想启发的注意力算法。与传统的注意力算法不同,PagedAttention
    允许在非连续的内存空间中存储连续的 key 和 value 。具体来说,PagedAttention 将每个序列的 KV cache 划分为块,每个块包含固定数量 token 的键和值。在注意力计算期间,PagedAttention 内核可以有效
    识别和获取这些块。因为块在内存中不需要连续,因而可以用一种更加灵活的方式管理 key 和 value ,就像在操作系统的虚拟内存中一样:可以将块视为页面,将 token 视为字节,将序列视为进程。序列的连连
    逻辑块通过块表映射到非连续物理块中。物理块在生成新 token 时按需分配。在 PagedAttention 中,内存浪费只会发生在序列的最后一个块中。这使得在实践中可以实现接近最佳的内存使用,仅浪费不到 4% 。' metadata={'source': 'D:\pycharm\Langchain-Chatchat-master\data\knowledge_base\samples\content\大模型推理优化策略.md'}
    文档切分示例:page_content='# 大模型技术栈-算法与原理\n- 1. tokenizer方法\n - word-level\n - char-level\n - subword-level\n - BPE\n - WordPiece\n - UniLM\n
    • SentencePiece\n - ByteBPE\n- 2. position encoding\n - 绝对位置编码\n - ROPE\n - AliBi\n - 相对位置编码\n - Transformer-XL\n - T5/TUPE\n
    • DeBERTa\n - 其他位置编码\n- 3. 注意力机制\n - 稀疏注意力\n - flash-attention\n - \n- 4. 分布式训练\n - 数据并行\n - FSDP\n - DDP\n - ZeRO\n
      • Model state\n - Optimizer->ZeRO1\n - 将optimizer state分成若干份,每块GPU上各自维护一份' metadata={'source': 'D:\pycharm\Langchain-Chatchat-master\data\knowledge_base\samples\content\大模型技术栈-算法与原理.md'}
        文档切分示例:page_content='# 大模型指令对齐训练原理\n- RLHF\n - SFT\n - RM\n - PPO\n- AIHF-based\n - RLAIF\n - 核心在于通过AI 模型监督其他 AI 模型,即在SFT阶段,从初始
        型中采样,然后生成自我批评和修正,然后根据修正后的反应微调原始模型。在 RL 阶段,从微调模型中采样,使用一个模型来评估生成的样本,并从这个 AI 偏好数据集训练一个偏好模型。然后使用偏好模型
        作为奖励信号对 RL 进行训练\n - 图片\n - 图片\n
  • 图片\n - RRHF\n - RRHF( R ank R esponse from H uman F eedback) 不需要强化学习,可以利用不同语言模
    生成的回复,包括 ChatGPT、GPT-4 或当前的训练模型。RRHF通过对回复进行评分,并通过排名损失来使回复与人类偏好对齐。RRHF 通过通过排名损失使评分与人类的偏好(或者代理的奖励模型)对齐。RRHF
    训练好的模型可以同时作为生成语言模型和奖励模型使用。\n - 图片\n- SFT-only\n - LIMA' metadata={'source': 'D:\pycharm\Langchain-Chatchat-master\data\knowledge_base\samples\content\大模型指令对齐训练原理.md'}
    文档切分示例:page_content='# 大模型应用技术原理\n- RAG\n - 向量数据库 对比\n - 选型标准\n - 开源vs.闭源vs. 源码可见\n - 客户端/SDK语言\n - 托管方式\n - self-hosted/on-premise\n - redis,pgvector,milvus\n - managed/cloud-native\n
    - zilliz,pinecone\n - embeded+cloud-native\n - chroma,lanceDB\n - self-hosted+cloud-native\n - vald,drant,wea
    viate,vspa,elasticsearch\n - 索引方法\n - 算法\n - Flat\n - Tree-based\n - Annoy(Approximate Nearest Neighbors Oh Yeah)\n - KD-Tree' metadata={'source': 'D:\pycharm\Langchain-Chatchat-master\data\knowledge_base\samples\content\大模型应用技术原理.md'}
    文档切分示例:page_content=': 0\ntitle: 效果如何优化\nfile: 2023-04-04.00\nurl: https://github.com/imClumsyPanda/langchain-ChatGLM/issues/14\ndetail: 如图所示,将该项目的README.md和该项目
    合后,回答效果并不理想,请问可以从哪些方面进行优化\nid: 0' metadata={'source': 'D:\pycharm\Langchain-Chatchat-master\data\knowledge_base\samples\content\test_files\langchain-Cha atGLM_open.csv', 'row': 0}
    RapidOCRPDFLoader context page index: 3: 38%|█████████████████████████████████████████▎ | 3/8 [00:00<00:00, 6.44it/s] 正在将 samples/分布式训练技术原理.md 添加到向量库,共包含8条文档
    RapidOCRPDFLoader context page index: 7: 100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████| 8/8 [00:00<00:00, 28.77it/s]
    文档切分示例:page_content='title\nfile\nurl\ndetail\nid\n0.0\n效果如何优化\n2023-04-04.00\nhttps://github.com/效果如何优化 #14\n如图所示,将该项目的README.md和该
    目结合后,回答效果并不理想,请问可以从哪些方面进行优化\n0\n1.0\n怎么让模型严格根据检索的数据进行回答,减少胡说八道的回答呢\n2023-04-04.00\nhttps://github.com/imClumsyPanda/langchain-Cha a
    tGLM/issues/15\n举个例子:\n1\n2.0\nWhen I try to run the python knowledge_based_chatglm.py, I got this error in macOS(M1 Max, OS 13.2)\n2023-04-07.00\nhttps://github.com/imClumsyPanda/
    langchain-ChatGLM/issues/32\n```python\n2\n3.0\n萌新求教大佬怎么改成AMD显卡或者CPU?\n2023-04-10.00\nhttps://github.com/萌新求教大佬怎么改成AMD显卡或者CPU? #48\n把.cuda()去掉就行\n3\n4.
    0\n输出answer的时间很长,是否可以把文本向量化的部分提前做好存储起来?\n2023-04-10.00\nhttps://github.com/输出answer的时间很长,是否可以把文本向量化的部分提前做好存储起来? #50\nGPU:4090 24G显存\n4' metadata={'source': 'D:\pycharm\Langchain-Chatchat-master\data\knowledge_base\samples\content\test_files\langchain-ChatGLM_open.xlsx'}
    文档切分示例:page_content='title\nfile\nurl\ndetail\nid\n0.0\n加油~以及一些建议\n2023-03-31.0002\nhttps://github.com/加油~以及一些建议 #2\n加油,我认为你的方向是对的
    。\n0\n1.0\n当前的运行环境是什么,windows还是Linux\n2023-04-01.0003\nhttps://github.com/当前的运行环境是什么,windows还是Linux #3\n当前的运行环境是什么,windows还是Linux,python是什么版本
    ?\n1\n2.0\n请问这是在CLM基础上运行吗?\n2023-04-01.0004\nhttps://github.com/请问这是在CLM基础上运行吗? #4\n请问是不是需要本地安装好clm并正常运行的情况下,再按文中的步骤执行才
    能运行起来?\n2\n3.0\n[复现问题] 构造 prompt 时从知识库中提取的文字乱码\n2023-04-01.0005\nhttps://github.com/[复现问题] 构造 prompt 时从知识库中提取的文字乱码 #5\nhi,我在尝试复现 README 中的效果,也
    用了 ChatGLM-6B 的 README 作为输入文本,但发现从知识库中提取的文字是乱码,导致构造的 prompt 不可用。想了解如何解决这个问题。\n3' metadata={'source': 'D:\pycharm\Langchain-Chatchat-mas ster\data\knowledge_base\samples\content\test_files\langchain-ChatGLM_closed.xlsx'}
    文档切分示例:page_content='ChatGPT是OpenAI开发的一个大型语言模型,可以提供各种主题的信息,\n# 如何向 ChatGPT 提问以获得高质量答案:提示技巧工程完全指南\n## 介绍\n我很高兴欢迎您阅读我的最
    书籍《The Art of Asking ChatGPT for High-Quality Answers: A complete Guide to Prompt Engineering Techniques》。本书是一本全面指南,介绍了各种提示技术,用于从ChatGPT中生成高质量的答案。\
    n我们将探讨如何使用不同的提示工程技术来实现不同的目标。ChatGPT是一款最先进的语言模型,能够生成类似人类的文本。然而,理解如何正确地向ChatGPT提问以获得我们所需的高质量输出非常重要。而这正是
    书的目的。\n无论您是普通人、研究人员、开发人员,还是只是想在自己的领域中将ChatGPT作为个人助手的人,本书都是为您编写的。我使用简单易懂的语言,提供实用的解释,并在每个提示技术中提供了示例例
    提示公式。通过本书,您将学习如何使用提示工程技术来控制ChatGPT的输出,并生成符合您特定需求的文本。\n在整本书中,我们还提供了如何结合不同的提示技术以实现更具体结果的示例。我希望您能像我写写
    时一样,享受阅读本书并从中获得知识。\n
    \n## 第一章:Prompt 工程技术简介\n什么是 Prompt 工程?\nPrompt 工程是创建提示或指导像 ChatGPT 这样的
    语言模型输出的过程。它允许用户控制模型的输出并生成符合其特定需求的文本。' metadata={'source': 'D:\pycharm\Langchain-Chatchat-master\data\knowledge_base\samples\content\test_files\test.txt'}
    文档切分示例:page_content='See discussions, stats, and author profiles for this publication at: https://www.researchgate.net/publication/372669736\nCreating Large Language Model Applicat
    ions Utilizing LangChain: A Primer on\nDeveloping LLM Apps Fast\nArticle\xa0\xa0in\xa0\xa0International Conference on Applied Engineering and Natural Sciences · July 2023\nDOI: 10.59287/i
    caens.1127\nCITATIONS\n0\nREADS\n47\n2 authors:\nSome of the authors of this publication are also working on these related projects:\nTHALIA: Test Harness for the Assessment of Legacy Inf
    ormation Integration Approaches View project\nAnalysis of Feroresonance with Signal Processing Technique View project\nOguzhan Topsakal\nFlorida Polytechnic University\n29 PUBLICATIONS\xa0\xa0\xa0155 CITATIONS\nSEE PROFILE' metadata={'source': 'D:\pycharm\Langchain-Chatchat-master\data\knowledge_base\samples\content\test_files\langchain.pdf'}
    正在将 samples/test_files/langchain-ChatGLM_closed.csv 添加到向量库,共包含172条文档
    正在将 samples/大模型推理优化策略.md 添加到向量库,共包含6条文档
    2025-12-29 18:43:41.692 | ERROR | chatchat.init_database:worker:61 - Error raised by inference API HTTP code: 500, {"error":"the input length exceeds the context length"}

环境信息 / Environment Information

  • Langchain-Chatchat 版本 / commit 号:(例如:0.3.1 或 commit 123456) / Langchain-Chatchat version / commit number: 0.3.1
  • 部署方式(pypi 安装 / 源码部署 / docker 部署):pypi 安装 / Deployment method (pypi installation / dev deployment / docker deployment): pypi installation
  • 使用的模型推理框架(Xinference / Ollama / OpenAI API 等):Xinference / Model serve method(Xinference / Ollama / OpenAI API, etc.): Ollama
  • 使用的 LLM 模型(GLM-4-9B / Qwen2-7B-Instruct 等):GLM-4-9B / LLM used (GLM-4-9B / Qwen2-7B-Instruct, etc.): Qwen2-7B-Instruct
  • 使用的 Embedding 模型(bge-large-zh-v1.5 / m3e-base 等):bge-large-zh-v1.5 / Embedding model used (bge-large-zh-v1.5 / m3e-base, etc.): bge-large-zh-v1.5
  • 使用的向量库类型 (faiss / milvus / pg_vector 等): faiss / Vector library used (faiss, milvus, pg_vector, etc.):
  • 操作系统及版本 / Operating system and version: Windows11
  • Python 版本 / Python version: 3.10
  • 推理使用的硬件(GPU / CPU / MPS / NPU 等) / Inference hardware (GPU / CPU / MPS / NPU, etc.): CPU
  • 其他相关环境信息 / Other relevant environment information:

附加信息 / Additional Information
添加与问题相关的任何其他信息 / Add any other information related to the issue.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions