<meta name="referrer" content="no-referrer" />

之前介绍过如何使用 cherry studio 搭建本地知识库应用,不过它只能在个人电脑上运行,无法实现web端的应用。如何利用开源工具LangChain - Chatchat,在本地快速构建一个知识库的web应用,希望对大家有所帮助,如果有什么疑问欢迎留言评论。

安装 python 3.11.9

LangChain - Chatchat支持的Python版本为3.8 - 3.11,这里以python 3.11.9为例。

  • 环境:python 3.11.9
  • IDE:pycharm

下载地址:
Python Release Python 3.11.9 | Python.org
利用 pytcharm 新建一个项目,选择 python 3.11.9 做为基础解释器,新建一个 venv 环境。

设置解释器

先Fork 官方项目langchain-chatchat。

将项目 clone 到文件夹。

git clone git@github.com:chatchat-space/Langchain-Chatchat.git

安装支持库

#必须安装
pip install langchain-chatchat -U
#可选安装
pip install "langchain-chatchat[xinference]" -U

Xinference 是一个模型平台类似与 ollama,可选安装

如果运行 rag 报错-TypeError, 需要降级 httpx。没有报错则忽略

pip install httpx==0.27.2

初始化配置文件

chatchat init

运行后进行以下炒作:

  • 创建所有需要的数据目录
  • 复制 samples 知识库内容
  • 生成默认 yaml 配置文件

模型推理框架加载模型

从 0.3.0 版本起,Langchain-Chatchat 不再根据用户输入的本地模型路径直接进行模型加载,涉及到的模型种类包括 LLM、Embedding、Reranker 及后续会提供支持的多模态模型等,均改为支持市面常见的各大模型推理框架接入,如 XinferenceOllamaLocalAIFastChatOne API 等。因此,请确认在启动 Langchain-Chatchat 项目前,首先进行模型推理框架的运行,并加载所需使用的模型。

文本嵌入模型

本文选择使用 ollama 下载本地嵌入模型 bge-large-zh-v 1.5: latest

ollama

默认对话模型

对话模型比较大,我选择使用硅基流动 api 。我测试的时候硅基流动的文本嵌入模型没法直接调用。

修改模型配置

配置模型(modelsettings. yaml)
需要根据步骤 2. 模型推理框架并加载模型中选用的模型推理框架与加载的模型进行模型接入配置,具体参考 modelsettings. Yaml 中的注释。主要修改以下内容:

# 默认选用的 LLM 名称  
DEFAULT_LLM_MODEL: deepseek-ai/DeepSeek-R1-Distill-Qwen-7B
  
# 默认选用的 Embedding 名称  
DEFAULT_EMBEDDING_MODEL: quentinz/bge-large-zh-v1.5:latest

MODEL_PLATFORMS:
- platform_name: ollama  
  platform_type: ollama  
  api_base_url: http://127.0.0.1:11434/v1  
  api_key: EMPTY  
  api_proxy: ''  
  api_concurrencies: 5  
  auto_detect_model: false  
  llm_models:  
    - qwen:1.8b  
    - qwen2:7b  
  embed_models:  
    - quentinz/bge-large-zh-v1.5:latest
- platform_name: openai  
  platform_type: openai  
  api_base_url: https://api.siliconflow.cn/v1/
  # 使用自己的apikey   
  api_key: sk-  
  api_proxy: ''  
  api_concurrencies: 5  
  auto_detect_model: false  
  llm_models:  
    - Pro/deepseek-ai/DeepSeek-V3  
    - deepseek-ai/DeepSeek-R1  
    - Pro/deepseek-ai/DeepSeek-R1  
    - deepseek-ai/DeepSeek-R1-Distill-Qwen-7B

邀请链接

最近硅基流动在做推广活动,用下面的链接注册,就可以获得2000万Tokens(14元平台配额),如果需要,就用下面的链接注册吧。
模型邀请链接:
https://cloud.siliconflow.cn/i/p61lgKxB
邀请码:p61lgKxB

初始化知识库,并测试模型是否配置好。

chatchat kb -r

成功效果如下:

成功效果

5. 启动项目

chatchat start -a

测试对话

对话界面

测试知识库问答

知识库问答

遇到的坑

TypeError

image.png

错误原因:httpx==0.28.0 版本可能会导致上述错误。建议将 httpx 的版本降级到 0.27.2,因为这个版本已经被证实可以解决问题

  • 执行以下命令来降级 httpx

    pip install httpx==0.27.2

无法使用硅基流动文本嵌入模型

无法用 openai 格式直接调用硅基流动的文本嵌入模型,需要用 ollama 、oneapi 等工具。

优化方向

  • 使用 oneapi 等工具更方便的选择模型,管理模型
  • 修改 streamlit 设置,制作最的 ui 界面,修改logo

小结

LangChain-Chatchat项目利用 langchain+ollama 实现 RAG 对话应用,前段采用 streamlit 框架,整个项目全部使用 python,模型框架支持 ollama、oneapi、Xinference 等模型框架,几乎可以使用任何模型进行调试,适合进行二次开发,如果使用本地模型,则对硬件有一定要求,建议大家测试使用免费 api 即可,等成熟后再考虑本地部署或者用收费 api 。

BY

如有帮助,请收藏点赞加关注~
微信公众号:环境猫er
CSDN : 细节处有神明
个人博客:https://maoyu92.github.io/

本文由mdnice多平台发布


陈文茂
1 声望1 粉丝