2026/4/18 16:28:26
网站建设
项目流程
狮山网站建设,完全免费网站源码,四川省建十五公司官网,企业门户网站的建设方法Langchain-Chatchat 0.3.1 Windows 部署实战指南
在企业知识管理日益智能化的今天#xff0c;如何让内部文档“活起来”#xff0c;成为员工随问随答的智能助手#xff1f;一个安全、可控、本地化运行的知识库问答系统显得尤为关键。而 Langchain-Chatchat 正是这一需求下的…Langchain-Chatchat 0.3.1 Windows 部署实战指南在企业知识管理日益智能化的今天如何让内部文档“活起来”成为员工随问随答的智能助手一个安全、可控、本地化运行的知识库问答系统显得尤为关键。而Langchain-Chatchat正是这一需求下的理想选择——它基于 LangChain 构建支持私有文档上传与语义检索所有数据处理均在本地完成无需依赖云端 API真正实现数据不出内网。本文将带你从零开始在 Windows 11 系统上完整部署Langchain-Chatchat v0.3.1并整合 Xinference 作为本地大模型推理后端。整个过程涵盖环境隔离、GPU 加速配置、中文路径避坑、模型部署与知识库构建等核心环节尤其适合希望搭建离线 RAG检索增强生成系统的开发者或技术团队。环境准备为什么需要两个 Conda 环境你可能会问为什么不直接在一个环境中安装所有依赖答案是——解耦与稳定性。Langchain-Chatchat 和 Xinference 虽然协同工作但它们对 Python 包的版本要求存在潜在冲突。例如Xinference 对pydantic、httpx等库较为敏感而主程序又可能依赖特定版本的 LangChain 模块。若混装在一起极易引发“依赖地狱”。因此我们采用双环境策略chatchat运行前端交互逻辑和知识库处理xinference专用于启动本地 LLM 推理服务支持 GPU 加速这样既能保证模块职责清晰也便于后续独立升级与调试。基础要求一览项目推荐配置操作系统Windows 10 / 1164位Python 版本3.10实测最稳定显卡NVIDIA GPUCUDA 支持≥6GB 显存存储空间≥20GB 可用空间模型文件较大包管理工具Miniconda 或 Anaconda⚠️ 特别提醒尽管 Python 3.11 已普及但部分底层包如llama-cpp-python在 Windows 上仍对 3.10 兼容性最佳。为避免编译失败建议锁定 Python 3.10。第一步创建虚拟环境并安装核心组件打开Anaconda Prompt以管理员权限运行更佳执行以下命令。创建chatchat主程序环境conda create -n chatchat python3.10 conda activate chatchat激活后使用清华镜像源加速安装pip install langchain-chatchat[xinference] -U -i https://pypi.tuna.tsinghua.edu.cn/simple安装完成后验证是否成功chatchat --help如果输出帮助信息说明主程序已就绪。创建xinference推理服务环境切换回命令行新建第二个环境conda create -n xinference python3.10 conda activate xinference安装 PyTorch CUDA 支持先查看你的 CUDA 驱动版本nvidia-smi输出中会显示类似CUDA Version: 12.7虽然驱动支持到 12.7但我们只需选择 PyTorch 官方提供的兼容版本即可。目前推荐使用CUDA 12.1版本的 PyTorch前往 PyTorch 官网选择- OS: Windows- Package: Pip- Language: Python- Compute Platform: CUDA 12.1执行如下命令pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121安装完成后测试 GPU 是否可用python -c import torch; print(torch.cuda.is_available())预期输出为True。若返回False请检查显卡驱动是否正常、是否有其他进程占用 GPU。安装 Xinference 及其扩展包继续安装pip install xinference[all]但在 Windows 上这个命令常常卡在llama-cpp-python的安装上因为它需要从源码编译并启用 CUDA 支持。关键突破解决llama-cpp-python编译难题这是整个部署中最容易“翻车”的一步。由于llama-cpp-python在 PyPI 上没有为 Windows 提供预编译的 CUDA wheel 包直接 pip 安装往往会失败。解决方案手动下载预编译 Wheel 文件访问 GitHub 发布页获取社区构建好的版本 https://github.com/abetlen/llama-cpp-python/releases查找符合你环境的.whl文件例如llama_cpp_python-0.3.4-cp310-cp310-win_amd64.whl其中-cp310表示 Python 3.10-win_amd64是 Windows 64 位系统- 若未标注 “cpu-only”通常已启用 CUDA 支持下载后保存至本地如D:\downloads\然后执行pip install D:\downloads\llama_cpp_python-0.3.4-cp310-cp310-win_amd64.whl安装成功后再运行pip install xinference[all]此时应能顺利通过。启动 Xinference 服务前的重要设置执行以下命令启动服务xinference-local --host 127.0.0.1 --port 9997但如果你的用户名包含中文字符如C:\Users\张伟很可能会遇到如下错误ValueError: Unable to configure handler file_handler这是因为 Python 日志模块无法正确解析非 ASCII 路径。根治之道自定义XINFERENCE_HOME解决方案是将默认工作目录重定向到不含中文的路径mkdir D:\xinference_logs mkdir D:\xinference_logs\logs set XINFERENCE_HOMED:\xinference_logs确认设置生效echo %XINFERENCE_HOME%输出应为D:\xinference_logs。此后每次进入xinference环境都需重新设置该变量。为了避免重复操作建议将其写入批处理脚本。模型部署在 Web 界面中启动 LLM 与 Embedding 模型保持xinference环境运行浏览器访问 http://127.0.0.1:9997你会看到 Xinference 的图形化控制台。部署 Qwen2.5-InstructLLM点击左上角Launch Model → LLM填写参数参数值Model TypeLLMModel FormatGGUF 或 HuggingFaceModel Nameqwen2.5-instructModel Size7B 或 14B根据显存选择Quantizationq4_k_m推荐精度与速度平衡GPUsautoHost127.0.0.1Port自动分配 小技巧如果网络较慢可以提前用梯子拉取模型或把本地已下载的 GGUF 文件拖入界面加载。点击Launch后等待模型加载完成。成功后会在“Running Models”列表中出现。部署 BGE-M3Embedding 模型同样方式添加 Embedding 模型参数值Model TypeEmbeddingModel NameBAAI/bge-m3Dimension1024Max Length8192点击 Launch 即可。✅ BGE-M3 是当前最强的开源多向量检索模型之一支持 dense、sparse 和 hybrid 检索模式特别适合复杂语义匹配场景。配置 Langchain-Chatchat 并连接模型服务回到chatchat环境初始化项目结构conda activate chatchat chatchat init该命令会在当前目录生成configs/,data/,knowledge_base/等文件夹。 默认知识库存放路径为knowledge_base/sample/content/你可以将 PDF、Word、TXT 等文档放入其中。修改模型配置文件编辑configs/model_settings.yaml确保 LLM 和 Embedding 模型地址指向 Xinferencellm_model_dict: qwen2.5-instruct: model_name: qwen2.5-instruct server_address: http://127.0.0.1:9997 local_model_path: null deployment_name: null embedding_model_dict: bge-m3: model_name: BAAI/bge-m3 server_address: http://127.0.0.1:9997 local_model_path: null 注意事项-model_name必须与 Xinference 中部署的名称完全一致区分大小写- 地址必须是http://127.0.0.1:9997不能写成localhost或0.0.0.0构建知识库让文档“被理解”将你的私有文档复制到knowledge_base/sample/content/支持格式包括.txt,.pdf,.docx,.md,.pptx等。然后执行重建命令chatchat kb -r-r表示 rebuild首次运行必须加上。程序将自动完成以下流程文档加载与文本提取PDF 使用 PyMuPDFWord 使用 python-docx文本分块chunk size 默认 512overlap 150调用 BGE-M3 生成向量嵌入存入本地向量数据库默认 Chroma运行结束后提示Successfully saved embeddings for knowledge base: sample即表示知识库构建成功。启动 Web UI开启智能问答之旅最后一步chatchat start -a-a表示监听所有接口等价于--host 0.0.0.0 --port 7860。浏览器访问 http://127.0.0.1:7860你应该看到一个简洁的聊天界面。尝试提问“介绍一下你自己”如果收到基于你上传文档的回答说明整个链路已打通常见问题排查清单❌ ModuleNotFoundError: No module named ‘httpx’原因新版xinference或openai依赖httpx1.0但langchain-chatchat当前仅兼容0.27.x。解决方案pip install httpx0.27.2这是一个典型的版本冲突案例务必锁定此版本。❌ ConnectionRefusedError: [WinError 10061]连接被拒绝常见原因有三Xinference 服务未启动model_settings.yaml中地址拼错模型尚未在 Xinference 中运行快速验证方法浏览器访问 http://127.0.0.1:9997/v1/models若返回 JSON 列表且包含你部署的模型则说明服务正常。❌ CUDA out of memory显存不足时的应对策略更换小模型如 7B 替代 14B使用更低量化等级如q3_k_m关闭浏览器硬件加速、游戏等 GPU 占用程序在任务管理器中结束python.exe进程释放显存✅ 如何更换其他模型Langchain-Chatchat 支持任意可通过 Xinference 加载的模型只要满足LLM 支持 Chat Template能调用apply_chat_templateEmbedding 输出固定维度向量推荐组合类型推荐模型LLMQwen2.5, DeepSeek-V2, Llama3-ChineseEmbeddingbge-m3, text2vec-large-chinese只需在 Xinference 中部署新模型并在model_settings.yaml中更新名称即可。效率提升编写一键启动脚本为了省去每次都要手动激活环境和设置变量的麻烦建议创建两个.bat批处理脚本。start_xinference.batecho off call conda activate xinference set XINFERENCE_HOMED:\xinference_logs echo Starting Xinference on http://127.0.0.1:9997 xinference-local --host 127.0.0.1 --port 9997 pausestart_chatchat.batecho off call conda activate chatchat echo Starting Chatchat Web UI on http://127.0.0.1:7860 chatchat start -a pause双击即可快速启动极大提升日常调试效率。总结与展望通过以上步骤你已经成功搭建了一套完整的本地化 RAG 系统使用Xinference实现了本地大模型推理通过Langchain-Chatchat构建了可搜索的知识库所有环节均可离线运行保障数据隐私这套架构不仅适用于个人知识管理也可扩展为企业级应用接入企业微信/钉钉机器人实现即时答疑添加语音识别与合成模块打造“听得懂、说得出”的 AI 助手开发多租户管理系统支持不同部门独立维护知识库更重要的是这一切都建立在开源生态之上。你可以自由定制、深度优化而不受任何商业 API 的限制。未来随着更多轻量化模型的涌现如 Qwen2.5-3B、Phi-3-mini这类本地智能系统将在边缘设备、中小企业乃至教育领域发挥更大价值。GitHub 项目地址https://github.com/chatchat-space/Langchain-Chatchat愿你在构建属于自己的 AI 助手之路上越走越远。当第一句基于私有文档的回答从屏幕弹出时你会明白真正的智能始于可控的数据终于无限的可能。创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考