Langchain-Chatchat 服务端部署指南:从安装、初始化配置到知识库构建与服务启动 Langchain-Chatchat 服务端部署指南从安装、初始化配置到知识库构建与服务启动【免费下载链接】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原 Langchain-ChatGLM是一个基于 ChatGLM、Qwen、Llama 等大语言模型与 Langchain 应用框架的开源、可离线部署的 RAG 与 Agent 应用项目。本文基于仓库中 libs/chatchat-server/README_en.md 的完整内容展开并结合 chatchat/cli.py、chatchat/settings.py 等源码系统讲解项目安装、数据目录与 YAML 配置初始化、知识库向量库重建以及 API Server 与 WebUI 双进程服务的启动方式读完即可独立完成一次完整的离线 RAG 服务部署。项目定位与核心能力Langchain-Chatchat 的核心目标是建立一套对中文场景与开源模型友好、可离线运行的本地知识库问答解决方案。其 RAG 流程为加载文件 → 读取文本 → 文本分割 → 文本向量化 → 问句向量化 → 在向量库中检索出与问句最相似的 top-k 文本 → 将检索结果与问题共同注入 prompt → 提交给 LLM 生成回答。项目实现原理如下图所示从文档处理的角度看整体数据流如下0.3.x 版本在 LLM 对话、知识库对话、搜索引擎对话之外还统一了 File RAG支持 BM25KNN 混合检索、数据库对话Text2SQL、多模态图片对话、文生图、Agent 工具调用等能力详细功能对照可参考根目录 README.md 中的「0.3.x 版本功能一览」。模型接入侧项目通过 Xinference、LocalAI、Ollama、FastChat 等本地模型加载框架接入 GLM-4-Chat、Qwen2-Instruct、Llama3 等开源模型同时兼容 OpenAI SDK 协议的各类在线 API。项目安装1. 通过 PyPI 安装推荐pip install langchain-chatchat # 如果使用 xinference 提供模型 API # pip install langchain-chatchat[xinference] # 从旧版本升级时建议重新执行 init 以更新 yaml 配置模板 # pip install -U langchain-chatchat # chatchat init安装langchain-chatchat后会注册一个名为chatchat的命令行入口其指向 chatchat/cli.py 中的main命令组在 pyproject.toml 中声明为chatchat chatchat.cli:main。需要注意两点原文档明确标注虚拟环境隔离Chatchat 应放置在独立的虚拟环境中conda、venv、virtualenv 等避免与业务项目依赖冲突。已知问题langchain-chatchat与xinference不能安装在同一个环境中否则可能导致部分插件出现 bug如文件上传问题。因此推荐为模型服务与 Chatchat 分别创建环境。从 pyproject.toml 可以看到Python 版本要求为3.10,3.12,!3.9.7核心依赖锁定在langchain 0.1.17、langchain-community 0.0.36、fastapi ~0.109.2、streamlit 1.34.0、faiss-cpu ~1.7.4、SQLAlchemy ~2.0.25等版本可选依赖xinference、zhipuai以 extras 形式提供与上述pip install langchain-chatchat[xinference]的用法对应。2. 源码安装除 PyPI 外也可以从源码启动。源码配置方式便于定位 bug 和修改基础设施但项目方并不建议初学者使用此方式开发部署细节可参考 开发指南。3. Docker 部署docker pull chatimage/chatchat:0.3.1.2-2024-0720 docker pull ccr.ccs.tencentyun.com/chatchat/chatchat:0.3.1.2-2024-0720 # 国内镜像项目方强烈建议使用docker compose进行部署详细说明见 Docker 部署指南仓库根目录下的 Dockerfile 可作为自定义镜像构建的参考。4. AutoDL 镜像项目提供 AutoDL 镜像0.3.0版本其中使用的代码已更新至本项目v0.3.0版本适合在 GPU 云主机上一键体验。初始化数据目录与 YAML 配置项目运行需要独立的数据目录来存放知识库、SQLite 数据库、日志等。通过环境变量CHATCHAT_ROOT指定数据根路径不设置时默认使用当前目录随后执行chatchat init生成全部默认配置# 设置数据存储根路径 # 未设置时使用当前目录 export CHATCHAT_ROOT/path/to/chatchat_data # 初始化数据目录与 yaml 配置模板 chatchat initCHATCHAT_ROOT 下会生成什么在 chatchat/settings.py 中可以看到CHATCHAT_ROOT Path(os.environ.get(CHATCHAT_ROOT, .)).resolve()即所有数据路径均相对该变量解析。chatchat init执行的 init 命令 会依次完成调用 BasicSettings.make_dirs() 创建全部数据目录data/、data/logs/、data/media/{image,audio,video}、data/temp/、data/knowledge_base/将内置的示例知识库 samples 目录含大模型技术文档、Excel/CSV 样例等复制到CHATCHAT_ROOT/data/knowledge_base/samples调用create_tables()初始化知识库 SQLite 数据库生成全部 YAML 配置模板文件。初始化后可在CHATCHAT_ROOT或当前目录下找到*_settings.yaml系列文件。从 Settings.createl_all_templates() 的源码结构看模板共 5 个配置文件对应配置类主要内容basic_settings.yamlBasicSettings日志开关log_verbose、HTTPX_DEFAULT_TIMEOUT、知识库路径KB_ROOT_PATH、数据库SQLALCHEMY_DATABASE_URI、跨域开关OPEN_CROSS_DOMAIN、API/WebUI 服务地址端口kb_settings.yamlKBSettings默认知识库DEFAULT_KNOWLEDGE_BASE默认samples、默认向量库类型DEFAULT_VS_TYPE可选faiss/milvus/zilliz/pg/es/relyt/chromadb默认faiss、文本分割器等model_settings.yamlApiModelSettingsMODEL_PLATFORMS模型平台列表、默认 LLMDEFAULT_LLM_MODEL默认glm4-chat、默认 EmbeddingDEFAULT_EMBEDDING_MODEL、LLM_MODEL_CONFIG分角色温度/历史轮数配置等tool_settings.yamlToolSettingsAgent 工具开关与 API Key 等prompt_settings.yamlPromptSettings各场景系统提示词模板这些配置类支持热加载set_auto_reload但 BasicSettings 的注释 明确说明除log_verbose/HTTPX_DEFAULT_TIMEOUT外其余配置修改后需重启服务才生效。chatchat init 的可选参数chatchat init还接受若干选项可在初始化时直接落定模型配置见 cli.py参数说明-x, --xinference-endpoint指定 Xinference API 服务地址默认http://127.0.0.1:9997/v1-l, --llm-model指定默认 LLM 模型默认glm4-chat-e, --embed-model指定默认 Embedding 模型CLI 帮助默认bge-large-zh-v1.5而 settings.py 中 DEFAULT_EMBEDDING_MODEL 的当前默认值为bge-m3以实际生成模板为准-r, --recreate-kb初始化同时重建知识库必须确保指定的 embed model 可用-k, --kb-names要重建的知识库名称多个名称以英文逗号分隔默认samples初始化完成后程序会提示「请先检查确认 model_settings.yaml 里模型平台、LLM 模型和 Embed 模型信息已经正确」——这是后续所有 RAG 功能正常工作的前提。构建知识库并启动服务chatchat kb -r重建向量库确认配置无误后尤其是 LLM 与 Embedding 模型先重建知识库向量库chatchat kb -r该命令对应 init_database.py 中注册的kb子命令。从源码可以看到它除-r, --recreate-vs重建向量库适用于向 content 目录新增文档后、或DEFAULT_VS_TYPE/DEFAULT_EMBEDDING_MODEL变更后重新向量化外还提供了一整套知识库运维选项参数作用-r, --recreate-vs重建向量库--create-tables不存在时创建空表--clear-tables重建向量库前清空/删除数据库表-u, --update-in-db仅重建数据库中已存在文件的向量跳过本地新增文件-i, --increment仅对本地新增且不在库中的文件做增量向量化--prune-db删除库中在本地目录已不存在的文档记录--prune-folder删除本地目录中在库中不存在的文档文件释放磁盘-n, --kb-name指定要操作的知识库名称默认为KB_ROOT_PATH下全部知识库-e, --embed-model指定 Embedding 模型默认取配置中的DEFAULT_EMBEDDING_MODEL--import-db从指定 sqlite 数据库导入表实际重建时会调用 migrate.py 中的folder2db(kb_names, moderecreate_vs, vs_type..., embed_model...)按kb_settings.yaml中的DEFAULT_VS_TYPE将content目录下的文档切分并向量化入库。chatchat start -a双进程启动chatchat start -astart子命令注册于 startup.py三个开关为-a, --all同时启动 API Server 与 WEBUI Server即chatchat start -a的效果--api仅启动 API 服务-w, --webui仅启动 WebUI 服务。从 start_main_server 的源码结构看服务启动采用multiprocessing的spawn方式派生两个独立进程API Server由 run_api_server 以 uvicorn 运行 FastAPI 应用create_app默认监听basic_settings.yaml中API_SERVER的0.0.0.0:7861WEBUI Server由 run_webui 通过 Streamlit bootstrap 机制运行 webui.py默认端口8501。启动时 dump_server_info 会打印操作系统、Python 版本、项目版本当前仓库源码版本为0.3.1.3见 chatchat/init.py、langchain 版本、数据目录、当前分词器与默认 Embedding 名称便于快速核对部署状态日志则写入basic_settings.yaml的LOG_PATH默认CHATCHAT_ROOT/data/logs。如果配置无误浏览器页面会自动弹出此时即可在对话页选择知识库提问或在知识库页管理文档。更新日志与项目里程碑0.3.1.1 (2024-07-15) 修复清单修复 WEBUI 中 system message 设置无效的问题修复模型平台不支持代理的问题移除无效的vqasprocessor与aqa_processor工具修复 Prompt 配置错误导致的KeyError: template修复 Searx 搜索引擎不支持中文的问题修复初始化时默认连接 xinference、默认服务不存在时报错的问题修复初始化时shutil.copytree在 src 与 dst 相同时报错的问题。项目里程碑2023 年 4 月Langchain ChatGLM 0.1.0 发布支持基于 ChatGLM-6B 模型的本地知识库问答2023 年 8 月项目更名并采用 fastchat 作为模型加载方案支持更多模型与数据库2023 年 10 月0.2.5 版本发布引入 Agent 能力2023 年 12 月开源项目累计获得超过 20K stars2024 年 6 月0.3.0 版本发布带来全新的项目架构即本文所述的chatchat init / kb / startCLI 体系。许可与引用项目代码遵循 Apache 2.0 协议见 LICENSE。如果该项目对你的研究有帮助建议按以下方式引用software{langchain_chatchat, title {{langchain-chatchat}}, author {Liu, Qian and Song, Jinke, and Huang, Zhiguo, and Zhang, Yuxuan, and glide-the, and Liu, Qingwei}, year 2024, journal {GitHub repository}, publisher {GitHub} }小结部署 Langchain-Chatchat 的完整路径可以归纳为四步在独立虚拟环境中pip install langchain-chatchat避免与 xinference 混装export CHATCHAT_ROOT...后执行chatchat init生成数据目录与*_settings.yaml配置模板并核对model_settings.yaml中的模型平台、LLM 与 Embedding 配置执行chatchat kb -r将 samples或自建知识库向量化入库执行chatchat start -a同时拉起 7861 端口的 FastAPI 服务与 8501 端口的 Streamlit WebUI。这套「环境变量定根目录、YAML 定行为、CLI 管生命周期」的设计使得离线私有化 RAG 部署只需数条命令即可完成如需深入定制建议结合 贡献指南、设置说明 与 仓库结构文档 进一步阅读源码。【免费下载链接】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),仅供参考