引言

大模型的知识库是有限的,对于未公开的语料库,在问大模型这一类问题的时候,无法给出正确回答。在企业内部对财务报表进行分析的时候,希望通过一种方式补充这部分的内容------通过RAG技术,在大模型外面挂着一个知识库。在问问题的时候,先把提示词发到向量库,找到与这个问题相关的知识库

LangChain-ChatChat 是基于 LangChain 框架构建的开源项目,实现了 RAG 与 Agent 能力的深度融合,支持全流程离线私有部署。其核心特点包括:支持主流开源大语言模型(如 ChatGLM3、Qwen2 等)、嵌入模型(如 m3e、bge 等)及向量数据库(如 FAISS)的全链路本地化适配,可在 CPU/GPU 双环境运行,低配置设备能通过量化压缩轻量化部署;具备 RAG 引擎与 Agent 执行器双引擎,前者支持多格式文档处理,解决大模型 “知识过时” 与 “幻觉” 问题,后者内置 10 余种可插拔工具,能通过 LangGraph 实现复杂任务编排提供 Streamlit Web UI 与 FastAPI 接口,满足非技术人员直接使用和开发者二次开发集成的需求。

Langchain-Chatchat 项目地址:项目地址

项目结构

在这里插入图片描述

仓库中主要文件夹有以下几个部分:

  1. libs/chatchat-server
    该目录包含项目的服务端代码,是整个应用的核心后端实现部分。其中涵盖了与模型交互、知识库处理、API 接口(如文件聊天 file_chat 等功能)相关的逻辑,负责处理前端请求、模型调用、数据处理等核心业务流程。

提供与前端交互的 API 接口(如知识库文件管理、模型调用等)。
处理知识库的文件加载、文本分割、向量存储等核心逻辑。
实现数据库交互(如 FileDocModel 等 ORM 模型),管理文件与向量库的关联关系。

服务端运行流程简述

  1. 通过 startup.py 中的 start_main_server 启动 API 服务(基于 FastAPI)和 WebUI 服务。
  2. API 服务通过 api_server/server_app.py 注册路由,接收前端请求(如聊天、知识库操作)。
  3. 核心业务逻辑(如文件聊天)在 chat/file_chat.py 中处理:检索相关文档 → 构造提示词 → 调用 LLM 生成回答 → 流式返回结果。
  4. 知识库相关操作通过 knowledge_base/ 模块处理文件解析、分割和向量存储,支撑 RAG 功能。
  1. frontend
    存放项目的前端代码,负责用户界面的展示与交互。包含了聊天界面、模型配置、工具选择等前端页面的实现,以及与后端服务通信的相关逻辑(如 src/services/chat.ts 处理聊天请求),同时还涉及前端状态管理、插件集成等功能。

基于 Next.js 框架构建,采用 TypeScript 开发,整合了 antd、lobe-ui 等组件库,以及 zustand 状态管理、swr 请求库等工具,负责实现项目的用户界面和交互逻辑。

  1. docs
    用于存储项目的文档资源,包括项目概述、实现原理图示(如 langchain+chatglm.png 等)、开发指南(contributing 目录下的文档)等,帮助开发者和用户了解项目的使用方法、架构设计及贡献方式。

已支持的模型部署框架与模型

本项目中已经支持市面上主流的如 GLM-4-Chat 与 Qwen2-Instruct 等新近开源大语言模型和 Embedding 模型,这些模型需要用户自行启动模型部署框架后,通过修改配置信息接入项目,本项目已支持的本地模型部署框架如下:
在这里插入图片描述

GPU 运行本地 FP16 模型硬件配置指南

  1. 7B 模型(ChatGLM3-6B、LLaMA-7B-Chat 等)
    显存要求:最低 14GB(含模型基础占用 12-13GB+Embedding 模型 1-2GB),推荐预留 2-3GB 应对历史对话缓存,总冗余显存建议 16GB 以上。
    推荐显卡:RTX 4080(16GB GDDR6X),兼顾性价比与性能,支持 CUDA 12 + 加速,单卡即可实现稳定连续对话,生成速度约 5-10 token/s。
    配套内存:需大于显存,推荐 16GB 以上(如 DDR4 3200MHz 双通道),避免数据在内存与显存间频繁交换导致卡顿。

  2. 14B 模型(Qwen-14B-Chat 等)
    显存要求:最低 30GB(模型基础占用 28GB+Embedding 与缓存 2-3GB),实际运行建议预留 5GB 冗余,总显存需求 35GB 以上。
    推荐显卡:NVIDIA V100(32GB HBM2),专业数据中心显卡,显存带宽高(900GB/s),支持长序列对话,单卡可满足需求,生成速度约 3-6 token/s。
    配套内存:推荐 32GB 以上(如 DDR4 3200MHz RDIMM),适配显卡数据吞吐,避免预处理阶段(如 tokenize)成为性能瓶颈。

  3. 34B 模型(Yi-34B-Chat 等)
    显存要求:最低 69GB(模型基础占用 68GB+Embedding 与缓存 1-2GB),考虑复杂对话场景,建议预留 10GB 冗余,总显存需求 80GB 以上。
    推荐显卡:NVIDIA A100(80GB HBM2),支持 Tensor Core 加速,显存容量充足,单卡可稳定运行,生成速度约 2-4 token/s;若需提升速度,可搭配 NVLink 桥接多卡。
    配套内存:推荐 64GB 以上(如 DDR4 3200MHz LRDIMM),适配大模型参数加载与中间数据缓存,确保批量推理时内存不溢出。

  4. 72B 模型(Qwen-72B-Chat 等)
    显存要求:最低 145GB(模型基础占用 144GB+Embedding 与缓存 1-2GB),多卡拆分时需额外预留 5-10GB 用于卡间数据通信,总显存需求 150GB 以上。
    推荐显卡:多卡 NVIDIA A100(40GB×4 及以上,支持 NVLink 互联)或单卡 NVIDIA H100(80GB HBM3,需 2 张及以上);多卡布局需确保显卡间带宽充足,避免拆分后通信延迟影响对话流畅度。
    配套内存:推荐 128GB 以上(如 DDR5 4800MHz 多通道),适配多卡并行数据预处理,同时满足系统与框架运行需求。

显存估算公式

FP16 精度:显存占用 (GB) ≈ 模型量级(B)× 2,例如 7B 模型≈14GB、34B 模型≈68GB,该公式为基础估算,实际需叠加 1-5GB 额外占用(Embedding + 缓存)。
Int4 量化精度:显存占用 (GB) ≈ 模型量级(B)× 0.75,适合显存有限场景(如 7B 模型 Int4 仅需 5-6GB 显存),但会损失部分推理精度,生成内容细节可能减少。

环境搭建

深度学习环境搭建

本文使用环境:
Python版本:3.10
Cuda版本:>=11.7(非必须)
Ubuntu24

langchain-chatchat 环境搭建

#创建虚拟环境:
conda create -n langchain-chat python=3.10

#进入环境:
conda activate langchain-chat

#在镜像中下载chatchat源码:
pip install langchain-chatchat -U -i https://pypi.tuna.tsinghua.edu.cn/simple

ollama 模型部署

在Ubuntu中使用命令行安装ollama速度会比较远,建议在github中下载源码库

下载ollama: ollama 的 github地址

releases中选择:(第四个压缩包)
在这里插入图片描述

创建文件夹:(将ollama压缩包放到了这个路径下)

mkdir -p /data/program

进入路径:

cd /data/program/

解压ollama到 /usr 路径下:

tar -C /usr -xzf ollama-linux-amd64.tgz
  1. tar:这是用于创建和提取归档文件的核心命令
  2. -C /usr:
    -C 是 tar 的一个选项,用于指定 “切换目录”(Change directory)
    /usr 是要切换到的目标目录
    作用:在提取文件前,先将工作目录切换到 /usr,这样所有文件都会被提取到这个目录下
  3. -xzf:这是三个选项的组合:
    -x:表示 “提取”(extract)文件
    -z:表示处理 gzip 压缩的文件(.gz 或 .tgz 扩展名)
    -f:表示后面跟着的是要处理的文件名

赋予执行权限:

chmod +x /usr/bin/ollama

给 /usr/bin/ollama 这个文件添加 “可执行权限”,让系统允许通过这个文件启动 Ollama 程序。Linux 系统中,文件默认没有执行权限(即使是程序文件),必须手动配置后才能运行,否则会提示 “Permission denied(权限不足)”。

  • chmod:是 Linux 用于 “修改文件权限” 的核心命令,全称为 “change mode”。
  • +x:“+” 表示 “添加权限”,“x” 表示 “执行权限”(即允许文件作为程序运行),组合起来就是 “给目标文件添加执行权限”。
  • /usr/bin/ollama:是 Ollama 程序的 “可执行文件路径”。

把ollama作为系统的启动服务
创建一个user(需要用到ollama的用户作为系统服务,做用户隔离)

useradd -r -s /bin/false -m -d /usr/share/ollama ollama

创建一个名为 ollama 的系统专用用户,用于运行 Ollama 服务。

  • useradd : Linux 用于 “创建用户” 的命令,对应 “user delete”(userdel)删除用户、“user modify”(usermod)修改用户。
  • -r : 创建 “系统用户”(system user),而非普通登录用户。区别:系统用户 UID(用户 ID)范围更小(通常<1000),不显示在登录界面,仅用于运行服务。
  • -s /bin/false : 指定用户的 “登录 Shell” 为 /bin/false(一个不可交互的伪 Shell)。作用:禁止这个用户通过终端登录系统,彻底杜绝人为操作该用户的可能,仅允许系统通过服务调用。
  • -m : 自动创建用户的home directory,若不加此参数,home directory 不会自动生成。
  • -d /usr/share/ollama : 指定用户的home directory 路径为 /usr/share/ollama。
    /usr/share 是 Linux 存放 “程序共享数据” 的目录,把 Ollama 用户的home directory 放这里,方便存储 Ollama 的模型数据、配置文件等。
  • ollama :最后一个参数是 “用户名”,即创建的用户名为 ollama,与服务名对应,便于管理识别。

创建 ollama 用户后,后续配置 Ollama 服务(ollama.service 文件)时,会指定 User=ollama 和 Group=ollama,让服务以这个专用用户的身份运行;而 chmod +x 确保该用户有权限执行 /usr/bin/ollama 程序。
若 Ollama 服务出现漏洞被攻击,攻击者最多只能获取 ollama 用户的权限,无法修改系统核心文件(如 /etc/passwd、/usr/bin 下的其他程序),大幅降低系统被破坏的风险。

创建服务文件:

vim /etc/systemd/system/ollama.service

通过 systemd 工具将 Ollama(本地大模型运行工具)配置为系统级服务,实现开机自动启动、故障自动恢复等功能.
systemd 是 Linux 主流的系统服务管理器(如 Ubuntu、CentOS 等均默认使用),所有系统服务的配置文件都存放在 /etc/systemd/system/ 目录下。使用 vim 编辑器创建名为 ollama.service 的文件,就是为 Ollama 定义一套 “运行规则”,让系统知道如何启动、管理这个服务。

粘贴以下内容:

[Unit]
Description=Ollama Service
After=network-online.target

[Service]
ExecStart=/usr/bin/ollama serve
User=ollama
Group=ollama
Restart=always
RestartSec=3

[Install]
WantedBy=default.target

文件内的 [Unit]「[Service]」「[Install]」是 systemd 服务配置的固定分段,每段承担不同功能:

  1. [Unit] 段:定义服务的 “基础信息” 和 “依赖关系
    Description=Ollama Service:给服务起一个 “备注名”,方便用户识别(比如用 systemctl list-units 查看服务时,会显示这个描述)。
    After=network-online.target:定义服务的 “启动顺序”—— 要求 Ollama 服务在 “网络完全就绪” 之后再启动。
    因为 Ollama 启动后需要通过网络提供接口(如本地 API),若网络没准备好就启动,可能导致服务异常;network-online.target 是系统内置的 “网络就绪” 信号
  2. [Service] 段:定义服务的 “运行规则”(核心配置)
    这是服务配置的核心,决定了 Ollama 如何运行、用什么身份运行、故障后如何处理
    ExecStart=/usr/bin/ollama serve:指定服务的 “启动命令”—— 告诉系统,启动 Ollama 服务时,要执行 /usr/bin/ollama serve 这个命令。
    其中 /usr/bin/ollama 是 Ollama 的可执行文件路径(默认安装路径),serve 是 Ollama 的 “服务模式”(启动后持续后台运行,提供 API 或交互接口)。
    User=ollama / Group=ollama:指定服务的 “运行身份”—— 用 ollama 用户和 ollama 用户组来运行服务,而非 root 超级用户。
    这是 Linux 安全最佳实践:避免服务以最高权限运行,即使服务被攻击,也能限制攻击者的操作范围(比如无法修改系统核心文件)。
    Restart=always:定义 “故障恢复策略”—— 无论 Ollama 服务因何种原因停止(如程序崩溃、内存溢出、手动杀死进程),系统都会自动重启服务。
    RestartSec=3:指定 “重启间隔”—— 服务停止后,系统会等待 3 秒再重启,避免因瞬时故障(如网络波动)导致服务 “频繁重启”,减少系统资源浪费
  3. [Install] 段:定义服务的 “开机启动规则
    WantedBy=default.target:指定服务的 “开机启动目标”—— 将 Ollama 服务关联到系统的 default.target(系统默认的启动目标,通常对应 “多用户命令行模式” 或 “图形界面模式”)。
    这意味着:当系统启动到默认模式时,会自动启动 Ollama 服务;若不配置这一段,systemctl enable 命令无法生效。

重新加载配置:

systemctl daemon-reload

把ollama的服务作为系统启动服务:

systemctl enable ollama

在启动ollama:

systemctl start ollama

执行ollama版本命令,查看是否配置成功:

ollama --version

----------出现的问题:----------

System has not been booted with systemd as init system (PID 1). Can't operate.
Failed to connect to bus: Host is down

原因可能是我用的Docker 容器 不支持 systemctl。
所以我直接使用 ollama serve 命令启动 ollama,随后下载模型(不影响使用)

下载deepseek模型:
ollama地址:ollama地址

ollama run deepseek-r1

小技巧:
当你使用ollama run <模型名>或ollama pull <模型名>命令下载模型时,如果下载过程中速度变慢,你可以通过按下Ctrl+C中断下载,然后再次执行下载命令,Ollama 会从上次中断的位置继续下载

在这里插入图片描述

chatchat 初始化

使用chatchat init 初始化程序的上下文信息(模型配置,知识库配置)—这个配置的生成有一个默认的路径,为了确保生成到指定路径下,需要配置环境变量,设置 Chatchat 存储配置文件和数据文件的根目录。

vim /root/.bashrc

CHATCHAT_ROOT 的路径根据自己的电脑配置,是/root/data/ 还是 /data/。因为我使用的容器 根目录下还有一个root 所以我路径设置为/root/data/ 。

#插入信息:
export CHATCHAT_ROOT=/root/data/

#刷新:
source /root/.bashrc

#验证环境变量配置是否成功:
echo ${CHATCHAT_ROOT}

#刷新环境后需要重新进入环境:
conda activate langchain-chat

#执行初始化命令:生成配置文件
chatchat init

查看文件:

ls data

模型配置,知识库配置,基础的环境配置,提示词配置,工具的配置

在这里插入图片描述

修改配置文件

重点关注 model_settings.yaml

cd data
vim model_settings.yaml

修改以下几个部分:
默认选用的LLM名称
平台名称
平台类型
openai api url — ollama端口是11434
在llm_models中添加使用的模型deepseek-r1
在embed_models添加使用的嵌入模型 bge-m3

DEFAULT_LLM_MODEL: deepseek-r1

platform_name: ollama

platform_type: ollama

api_base_url: http://127.0.0.1:11434/v1

在这里插入图片描述
在这里插入图片描述

我的 model_settings.yaml 文件内容如下:

# 模型配置项


# 默认选用的 LLM 名称
DEFAULT_LLM_MODEL: deepseek-r1

# 默认选用的 Embedding 名称
DEFAULT_EMBEDDING_MODEL: bge-m3

# AgentLM模型的名称 (可以不指定,指定之后就锁定进入Agent之后的Chain的模型,不指定就是 DEFAULT_LLM_MODEL)
Agent_MODEL: ''

# 默认历史对话轮数
HISTORY_LEN: 3

# 大模型最长支持的长度,如果不填写,则使用模型默认的最大长度,如果填写,则为用户设定的最大长度
MAX_TOKENS:

# LLM通用对话参数
TEMPERATURE: 0.7

# 支持的Agent模型
SUPPORT_AGENT_MODELS:
  - chatglm3-6b
  - glm-4
  - openai-api
  - Qwen-2
  - qwen2-instruct
  - gpt-3.5-turbo
  - gpt-4o

# LLM模型配置,包括了不同模态初始化参数。
# `model` 如果留空则自动使用 DEFAULT_LLM_MODEL
LLM_MODEL_CONFIG:
  preprocess_model:
    model: ''
    temperature: 0.05
    max_tokens: 4096
    history_len: 10
    prompt_name: default
    callbacks: false
  llm_model:
    model: ''
    temperature: 0.9
    max_tokens: 4096
    history_len: 10
    prompt_name: default
    callbacks: true
  action_model:
    model: ''
    temperature: 0.01
    max_tokens: 4096
    history_len: 10
    prompt_name: ChatGLM3
    callbacks: true
  postprocess_model:
    model: ''
    temperature: 0.01
    max_tokens: 4096
    history_len: 10
    prompt_name: default
    callbacks: true
  image_model:
    model: sd-turbo
    size: 256*256

# # 模型加载平台配置


# # 平台名称
platform_name: ollama

# # 平台类型
# # 可选值:['xinference', 'ollama', 'oneapi', 'fastchat', 'openai', 'custom openai']
platform_type: ollama

# # openai api url
api_base_url: http://127.0.0.1:11434/v1

# # api key if available
# api_key: EMPTY

# # API 代理
# api_proxy: ''

# # 该平台单模型最大并发数
# api_concurrencies: 5

# # 是否自动获取平台可用模型列表。设为 True 时下方不同模型类型可自动检测
# auto_detect_model: false

# # 该平台支持的大语言模型列表,auto_detect_model 设为 True 时自动检测
# llm_models: []

# # 该平台支持的嵌入模型列表,auto_detect_model 设为 True 时自动检测
# embed_models: []

# # 该平台支持的图像生成模型列表,auto_detect_model 设为 True 时自动检测
# text2image_models: []

# # 该平台支持的多模态模型列表,auto_detect_model 设为 True 时自动检测
# image2text_models: []

# # 该平台支持的重排模型列表,auto_detect_model 设为 True 时自动检测
# rerank_models: []

# # 该平台支持的 STT 模型列表,auto_detect_model 设为 True 时自动检测
# speech2text_models: []

# # 该平台支持的 TTS 模型列表,auto_detect_model 设为 True 时自动检测
# text2speech_models: []
MODEL_PLATFORMS:
  - platform_name: xinference
    platform_type: xinference
    api_base_url: http://127.0.0.1:9997/v1
    api_key: EMPTY
    api_proxy: ''
    api_concurrencies: 5
    auto_detect_model: true
    llm_models: []
    embed_models: []
    text2image_models: []
    image2text_models: []
    rerank_models: []
    speech2text_models: []
    text2speech_models: []
  - 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:7b
      - qwen2:7b
      - deepseek-r1
    embed_models:
      - quentinz/bge-large-zh-v1.5
      - bge-m3
    text2image_models: []
    image2text_models: []
    rerank_models: []
    speech2text_models: []
    text2speech_models: []
  - platform_name: oneapi
    platform_type: oneapi
    api_base_url: http://127.0.0.1:3000/v1
    api_key: sk-
    api_proxy: ''
    api_concurrencies: 5
    auto_detect_model: false
    llm_models:
      - chatglm_pro
      - chatglm_turbo
      - chatglm_std
      - chatglm_lite
      - qwen-turbo
      - qwen-plus
      - qwen-max
      - qwen-max-longcontext
      - ERNIE-Bot
      - ERNIE-Bot-turbo
      - ERNIE-Bot-4
      - SparkDesk
    embed_models:
      - text-embedding-v1
      - Embedding-V1
    text2image_models: []
    image2text_models: []
    rerank_models: []
    speech2text_models: []
    text2speech_models: []
  - platform_name: openai
    platform_type: openai
    api_base_url: https://api.openai.com/v1
    api_key: sk-proj-
    api_proxy: ''
    api_concurrencies: 5
    auto_detect_model: false
    llm_models:
      - gpt-4o
      - gpt-3.5-turbo
    embed_models:
      - text-embedding-3-small
      - text-embedding-3-large
    text2image_models: []
    image2text_models: []
    rerank_models: []
    speech2text_models: []
    text2speech_models: []

下载 bge-m3模型:

ollama pull bge-m3

初始化知识库

在进行知识库初始化前,请确保已经启动模型推理框架及对应 embedding 模型

在 chatchat kb -r 初始化知识库之前,需要删除一些无关的文档,节省时间

cd data/data/knowledge_base/samples/content

rm -rf *.md
cd  test_files/
rm -rf *.xlsx
rm -rf *.csv
rm -rf test.txt

在这里插入图片描述
我就保留了langchain.pdf文件 用来查看效果。

回到 data :

cd data

初始化知识库:

chatchat kb -r

出现以下结果表示成功了:

----------------------------------------------------------------------------------------------------
知识库名称      :samples
知识库类型      :faiss
向量模型:      :bge-m3
知识库路径      :/root/data/data/knowledge_base/samples
文件总数量      :2
入库文件数      :2
知识条目数      :68
用时            :0:07:21.206060
----------------------------------------------------------------------------------------------------

总计用时        :0:07:21.219414

启动chatchat程序:

chatchat start -a

ctrl + 点击下面的URL

  You can now view your Streamlit app in your browser.

  URL: http://0.0.0.0:8501

结果如下:
在这里插入图片描述

可能出现的问题:
1.httpx版本错误

2025-10-20 16:10:40.161 | ERROR    | chatchat.webui_pages.utils:get:64 - TypeError: error when get /tools: Client.__init__() got an unexpected keyword argument 'proxies'
2025-10-20 16:10:40.166 | ERROR    | chatchat.webui_pages.utils:get:64 - TypeError: error when get /tools: Client.__init__() got an unexpected keyword argument 'proxies'
2025-10-20 16:10:40.166 | ERROR    | chatchat.webui_pages.utils:get:64 - TypeError: error when get /tools: Client.__init__() got an unexpected keyword argument 'proxies'
2025-10-20 16:10:40.166 | ERROR    | chatchat.webui_pages.utils:to_json:233 - AttributeError: API未能返回正确的JSON。'NoneType' object has no attribute 'json'

出现上面的问题只需要将httpx的版本回退到 0.27.2 版本。

2.地址访问不了:

#可能是防火墙的问题:
ufw allow 8501 #开放8501这个端口

basic_settings.yaml文件:

# 服务器基本配置信息
# 除 log_verbose/HTTPX_DEFAULT_TIMEOUT 修改后即时生效
# 其它配置项修改后都需要重启服务器才能生效,服务运行期间请勿修改


# 生成该配置模板的项目代码版本,如这里的值与程序实际版本不一致,建议重建配置文件模板
version: 0.3.1.3

# 是否开启日志详细信息
log_verbose: false

# httpx 请求默认超时时间(秒)。如果加载模型或对话较慢,出现超时错误,可以适当加大该值。
HTTPX_DEFAULT_TIMEOUT: 300.0

# 知识库默认存储路径
KB_ROOT_PATH: /root/data/data/knowledge_base

# 数据库默认存储路径。如果使用sqlite,可以直接修改DB_ROOT_PATH;如果使用其它数据库,请直接修改SQLALCHEMY_DATABASE_URI。
DB_ROOT_PATH: /root/data/data/knowledge_base/info.db

# 知识库信息数据库连接URI
SQLALCHEMY_DATABASE_URI: sqlite:////root/data/data/knowledge_base/info.db

# API 是否开启跨域
OPEN_CROSS_DOMAIN: false

# 各服务器默认绑定host。如改为"0.0.0.0"需要修改下方所有XX_SERVER的host
# Windows 下 WEBUI 自动弹出浏览器时,如果地址为 "0.0.0.0" 是无法访问的,需要手动修改地址栏
DEFAULT_BIND_HOST: 0.0.0.0

# API 服务器地址。其中 public_host 用于生成云服务公网访问链接(如知识库文档链接)
API_SERVER:
  host: 0.0.0.0
  port: 7861
  public_host: 127.0.0.1
  public_port: 7861

# WEBUI 服务器地址
WEBUI_SERVER:
  host: 0.0.0.0
  port: 8501


查看向量库文件:

# 查看目录大小
du -sh samples/vector_store/bge-m3

#检查是否有完整的索引文件  
ls -l saples/vector_store/bge-m3 

samples/vector_store/bge-m3 是使用嵌入模型生成的向量库存储目录。 向量库用于存储文档的向量表示,一遍后续进行知识库查询时,通过向量相似匹配来快速找到相关文档。

index.faiss : 由FAISS库生成,用于高效存储和检索向量数据,支持快速的向量相似度查询操作。
index.pkl : 通常是一个pickle格式的文件,可能用于存储与向量索引相关的元数据,比如文档的原始信息,向量的维度等,以便在加载向量库时能完整还原相关数据。

在这里插入图片描述

RAG对话

web端操作:
可以直接上传文件—依据文件重建向量库
在这里插入图片描述
终端操作:
将需要向量化的文件夹放到 /root/data/data/knowledge_base/samples/content 路径下:
然后运行初始化向量库: chatchat kb -r

结果如下:
在这里插入图片描述

----------------------------------------------------------------------------------------------------
知识库名称      :samples
知识库类型      :faiss
向量模型:      :bge-m3
知识库路径      :/root/data/data/knowledge_base/samples
文件总数量      :52
入库文件数      :52
知识条目数      :11555
用时            :0:40:49.009174
----------------------------------------------------------------------------------------------------

总计用时        :0:40:49.033373

在这里插入图片描述

小结

如有问题欢迎交流探讨。
langchain相关学习可参考【大模型开发框架】LangChain核心架构解析与应用实践(一)

更多推荐