-
Notifications
You must be signed in to change notification settings - Fork 6.1k
Description
问题描述 / 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
- Model state\n - Optimizer->ZeRO1\n - 将optimizer state分成若干份,每块GPU上各自维护一份' metadata={'source': 'D:\pycharm\Langchain-Chatchat-master\data\knowledge_base\samples\content\大模型技术栈-算法与原理.md'}
\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 thepython 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.