Windows 本地部署 LangChain 完整教程
itomcoil 2025-06-09 22:38 7 浏览
本文以 LangChain-Chatchat 0.3.1 为例,支持中文对话、知识库问答和本地模型推理。
一、环境准备
1. 硬件与系统要求
- 操作系统:Windows 10/11(推荐)
- Python 版本:3.10(兼容性最佳)
- GPU 支持(可选):NVIDIA 显卡(CUDA 12.1 或更高)显存 ≥ 8GB(运行 7B 参数模型,如 ChatGLM3-6B)存储空间:≥30GB(模型文件 + 依赖库)
2. 安装基础工具
- Anaconda:管理 Python 环境(官网下载)
- Git:拉取代码仓库(官网下载)
- CUDA Toolkit(GPU 用户):
- bash
- 复制
- pip install torch==2.3.1 torchvision==0.18.1 torchaudio==2.3.1 --index-url https://download.pytorch.org/whl/cu121
二、部署流程
1. 创建虚拟环境
bash
复制
conda create -n langchain python=3.10
conda activate langchain
2. 安装依赖包
bash
复制
pip install "langchain-chatchat[xinference]" -U # 核心框架 + 推理引擎[1,8](@ref)
pip install sentence-transformers chromadb # 向量数据库与嵌入模型[3](@ref)
3. 配置项目目录
- 设置数据存储路径(避免中文路径):
- cmd
- 复制
- set CHATCHAT_ROOT=D:\LangChain-Data # Windows 环境变量[1,8](@ref)
- 初始化配置文件:
- bash
- 复制
- chatchat init # 生成 configs 目录和默认配置[8](@ref)
4. 下载与配置模型
- 推荐模型:对话模型:ChatGLM3-6B、Qwen-7B-Chat
- 嵌入模型:BAAI/bge-large-zh(中文语义向量)
- 操作步骤:从 HuggingFace 下载模型(需 Git LFS):
- bash
- 复制
- git lfs install git clone https://huggingface.co/THUDM/chatglm3-6b
- 将模型文件放入目录:
- 复制
- %CHATCHAT_ROOT%/models/chatglm3-6b/
- 修改配置文件 configs/model_config.py:
- python
- 复制
- "llm_model": { "chatglm3-6b": "D:\\LangChain-Data\\models\\chatglm3-6b" # 替换为实际路径 }
5. 配置向量数据库(知识库)
python
复制
# configs/kb_config.py
VS_TYPE = "Chroma" # 使用轻量级 ChromaDB[3](@ref)
EMBEDDING_MODEL = "bge-large-zh" # 中文嵌入模型
6. 启动服务
bash
复制
python startup.py -a # 启动全部模块(API+WebUI)
- 访问地址:http://127.0.0.1:8501
https://example.com/langchain-webui.png (Web 交互界面示意图)
三、高级功能配置
1. 加载本地知识库
- 将文档(PDF/TXT)放入 knowledge_base 目录
- 重建向量库:
- bash
- 复制
- python init_database.py --recreate-vs # 重新生成向量索引[8](@ref)
2. 多模型切换
编辑 configs/model_config.py,支持同时加载多个模型:
python
复制
LLM_MODELS = ["chatglm3-6b", "qwen-7b-chat"] # 模型列表
四、常见问题排查
问题类型 | 解决方案 |
CUDA 版本不匹配 | 安装 CUDA 12.1 并重装 PyTorch:pip install torch==2.3.1+cu121 |
端口冲突(8501) | 修改 configs/server_config.py 中的 WEBUI_PORT 值 |
模型加载失败 | 检查模型路径是否含空格或中文;确认 bin 文件完整 |
依赖冲突 | 使用虚拟环境;重装依赖:pip install --force-reinstall "xinference[all]" |
内存不足 | 启用模型量化(INT8/INT4),修改模型加载参数: |
五、优化建议
- GPU 加速:使用 llama-cpp-python 替代默认推理引擎(支持 GGML 量化模型)
bash
复制
pip install llama-cpp-python --force-reinstall --upgrade --no-cache-dir
- 减少显存占用:选择量化模型(如 Qwen-7B-Chat-Int4)
- 知识库分块优化:调整 chunk_size=500、chunk_overlap=100(避免信息丢失)
提示:完成部署后,通过 http://localhost:8501 测试问答功能,上传文档至知识库体验私有数据检索。遇到问题可查看 logs 目录下的错误日志定位原因。
相关推荐
- C++ 详解 to_string 与 stoi 函数
-
to_string与stoi函数std::to_string和std::stoi是C++标准库中的两个非常有用的函数,它们分别用于将整数转换为字符串和将字符串转换为整数。std::to...
- 合并单元格内容,除了“&”,三个函数一个比一个厉害
-
在EXCEL表格里有多种方法可以合并多列单元格的内容,最常见的就是使用连接符号“&”和各种函数公式,下面我们一起来看看。使用连接符号公式:=A2&"-"&B2&"-"&...
- C语言模拟实现字符串操作函数(c语言字符串用法)
-
1.strlenstrlen是用来求字符串长度的函数,字符串长度就是字符串中包含的字符的个数,但是不包含字符串结尾的‘\0’实现strlen有三种方法:(1)定义一个计数器size_t ...
- JS函数参数的arguments对象,你理解了吗?
-
前言在Javascript中,arguments是所有函数都具有的一个内置局部变量,表示的是函数实际接收的参数对象。Javascript中的arguments对象arguments是一个类数组对象,之...
- C/C++编程笔记:C语言字符串比较函数,超详细,值得收藏
-
void*memset(void*dest,intc,size_tcount);将dest前面count个字符置为字符c.返回dest的值.void*memmove(void*dest...
- Excel表格中11个常用的字符串函数
-
今天和大家聊聊常用的字符串函数,在不同的条件下,如何选择字符串函数很关键。下面我为大家列举了11个关于字符串的函数公式。一、EXACT(两个字符串进行结果比较)比较两个字符串是否完全相同(这里是要区分...
- C语言每日一练:连接字符串(c语言 连接字符串)
-
题目描述:写一函数,将两个字符串连接。输入两行字符串,例如123abc,输出连接后的字符串123abc。代码如下:#include<stdio.h>#include<st...
- C语言编程二级——如何连接3个字符串
-
今天C语言编程实践给大家带来的是不使用库函数,实现3个字符串的链接。本例用到了指针方法,下面是源代码。本例用到了函数声明,一个字符串连接函数。将s1,s2,s3连接在一起,组成s,并且函数最终返回指向...
- 快速合并字符串,除了用&外,还有这些必备技能
-
字符串的合并操作,在Excel中也是非常常见的,最常见的操作方法就是逐个复制合并或者用&符号连接合并。其实,除了这2个方法外,还有其他更实用的技巧哦!一、&符号法。目的:合并指定的字符串。方法:在目标...
- 什么是安全函数?(什么是安全函数模型)
-
公司的大佬说之前某大厂为了安全函数的替换耗资10亿美金。可想安全很重要,安全函数很重要,对于我们做系统软件的来说很重要。为什么要替换成安全函数,这里面就涉及到了一种漏洞攻击,缓冲区溢出攻击。缓冲区溢出...
- Excel如何合并字符串?CONCAT/PHONETIC/TEXTJOIN函数功能对比
-
多个单元格的内容如何合并到一个单元格?Excel一共提供四个函数,可以实现字符串的合并,但是会受到Excel版本的限制,且功能各有优异。PHONETIC函数PHONETIC存在于2016及以上版本中,...
- 「零基础学C语言」带你解析字符串连接函数:strcat_s 函数
-
目录一.strcat_s函数简介二.strcat_s函数原理三.strcat_s函数实战一.strcat_s函数简介strcat_s函数和strcat函数一样,主要用于字符串拼接;strcat...
- 强烈推荐!284页《python编程从入门到实践》完整版,PDF开放下载
-
大佬整理的python学习笔记,大家有需要的可以在文末获取。PDF获取方式:...
- 无需安装python程序,推荐6个靠谱网站在线学习编写python代码
-
对于python编程爱好者来说,并不是所有爱好者都已经安装了python程序(比如python3.12版本的exe程序),或者一些IDE(比如pycharm等),大家无需担心,马上推荐几个国内可用的靠...
- 《Python从入门到项目实践》PDF开放下载,建议收藏
-
Python从入门到项目实践》一书从入门学习者的角度出发,通过简洁有趣的语言、丰富多彩的实例、挑战大脑的任务、贴近开发实战的项目,循序渐进地让读者在实践中学习,在实践中提升实际开发能力。...
- 一周热门
- 最近发表
- 标签列表
-
- ps图案在哪里 (33)
- super().__init__ (33)
- python 获取日期 (34)
- 0xa (36)
- super().__init__()详解 (33)
- python安装包在哪里找 (33)
- linux查看python版本信息 (35)
- python怎么改成中文 (35)
- php文件怎么在浏览器运行 (33)
- eval在python中的意思 (33)
- python安装opencv库 (35)
- python div (34)
- sticky css (33)
- python中random.randint()函数 (34)
- python去掉字符串中的指定字符 (33)
- python入门经典100题 (34)
- anaconda安装路径 (34)
- yield和return的区别 (33)
- 1到10的阶乘之和是多少 (35)
- python安装sklearn库 (33)
- dom和bom区别 (33)
- js 替换指定位置的字符 (33)
- python判断元素是否存在 (33)
- sorted key (33)
- shutil.copy() (33)