2024 32kstar 的目前最佳开源RAG框架之一的 Langchain-Chatchat开源项目实践(一)

2024 32kstar 的目前最佳开源RAG框架之一的 Langchain-Chatchat开源项目实践(一)

文章目录

  • 2024 32kstar 的目前最佳开源RAG框架之一的 Langchain-Chatchat开源项目实践(一)
  • 一、前言
  • 二、实践步骤
    • 1、软硬件要求
      • (1) 确定模型推理框架和模型
    • 2. 初始化项目配置与数据目录
      • (1)确定项目根目录
      • (2)chatchat项目初始化
      • (3)修改配置文件
    • 3. 初始化知识库
    • 4. 启动项目

一、前言

github地址:https://github.com/chatchat-space/Langchain-Chatchat
各位未来的开发者请上座,随着自然语言处理(NLP)技术的飞速发展,基于大模型的知识库问答系统成为了连接人机交互的重要桥梁。最近,部署开源项目Langchain-Chatchat,通过一系列的调试与实践,成功地让这个系统在我本地的环境中稳定运行。本文将分享我在启动Langchain-Chatchat项目、配置环境以及启动可视化界面的经验。预计时间 24分钟,启动你的rag项目!
下面是RAG对比:来自工业界的开源知识库 RAG 项目最全细节对比
在这里插入图片描述

二、实践步骤

1、软硬件要求

💡 软件方面,本项目已支持在 Python 3.8-3.11 环境中进行使用,并已在 Windows、macOS、Linux 操作系统中进行测试。

💻 硬件方面,0.3.0 版本已修改为支持不同模型部署框架接入,可在 CPU、GPU、NPU、MPS 等不同硬件条件下使用。

  1. 安装 Langchain-Chatchat
pip install langchain-chatchat -U

为确保所使用的 Python 库为最新版,建议使用官方 Pypi 源或清华源。

(1) 确定模型推理框架和模型

从 0.3.0 版本起,Langchain-Chatchat 不再根据用户输入的本地模型路径直接进行模型加载,涉及到的模型种类包括 LLM、Embedding、Reranker 及后续会提供支持的多模态模型等,均改为支持市面常见的各大模型推理框架接入,如 Xinference、Ollama、LocalAI、FastChat、One API 等。

在这里,博主使用比较常见的Openai系列模型用于演示
模型推理框架主要是确认平台,如Openai,和两个模型:
大语言模型:gpt-4o
向量化模型:text-embedding-3-large

2. 初始化项目配置与数据目录

Langchain-Chatchat 使用本地 yaml 文件的方式进行配置,用户可以直接查看并修改其中的内容,服务器会自动更新无需重启。

(1)确定项目根目录

设置 Chatchat 存储配置文件和数据文件的根目录(可选

# on linux or macos
export CHATCHAT_ROOT=/path/to/chatchat_data# on windows
set CHATCHAT_ROOT=/path/to/chatchat_data

若不设置该环境变量,则自动使用当前目录为根目录。(推荐)

(2)chatchat项目初始化

新建一个新文件夹

chatchat init

该命令会执行以下操作:

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

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

(3)修改配置文件

  • 配置模型(model_settings.yaml)
    需要根据步骤 2. 模型推理框架并加载模型 中选用的模型推理框架与加载的模型进行模型接入配置,具体参考 model_settings.yaml 中的注释。主要修改以下四个:
    DEFAULT_LLM_MODEL
    DEFAULT_EMBEDDING_MODEL
    api_base_url
    api_key
# 默认选用的 LLM 名称
DEFAULT_LLM_MODEL: gpt-4o# 默认选用的 Embedding 名称
DEFAULT_EMBEDDING_MODEL: text-embedding-3-large# 将 `LLM_MODEL_CONFIG` 中 `llm_model, action_model` 的键改成对应的 LLM 模型
# 在 `MODEL_PLATFORMS` 中修改对应模型平台信息

在这里插入图片描述

配置知识库路径(basic_settings.yaml)(可选)
默认知识库位于 CHATCHAT_ROOT/data/knowledge_base,如果你想把知识库放在不同的位置,或者想连接现有的知识库,可以在这里修改对应目录即可。

# 知识库默认存储路径KB_ROOT_PATH: D:\chatchat-test\data\knowledge_base# 数据库默认存储路径。如果使用sqlite,可以直接修改DB_ROOT_PATH;如果使用其它数据库,请直接修改SQLALCHEMY_DATABASE_URI。DB_ROOT_PATH: D:\chatchat-test\data\knowledge_base\info.db# 知识库信息数据库连接URISQLALCHEMY_DATABASE_URI: sqlite:///D:\chatchat-test\data\knowledge_base\info.db

配置知识库(kb_settings.yaml)(可选)

默认使用 FAISS 知识库,如果想连接其它类型的知识库,可以修改 DEFAULT_VS_TYPE 和 kbs_config。

3. 初始化知识库

进行知识库初始化前,请确保已经启动模型推理框架及对应 embedding 模型,且已按照上述步骤3完成模型接入配置。

chatchat kb -r

更多功能可以查看 chatchat kb --help

出现以下日志即为成功:

在这里插入图片描述
注:上面的知识库是chatchat官方自带的,使用默认配置和Openai的推理平台和两个模型基本百分之百是上面的日志。

4. 启动项目

chatchat start -a

出现以下界面即为启动成功:

在这里插入图片描述

注1:由于 chatchat 配置默认监听地址 DEFAULT_BIND_HOST 为 127.0.0.1, 所以无法通过其他 ip 进行访问。

注2:如需通过机器ip 进行访问(如 Linux 系统), 需要到 basic_settings.yaml 中将监听地址修改为 0.0.0.0。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/888560.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spark 计算总销量

Spark 计算总销量 题目: 某电商平台存储了所有商品的销售数据,平台希望能够找到销量最好的前 N 个商品。通过分析销售记录,帮助平台决策哪些商品需要更多的推广资源。 假设你得到了一个商品销售记录的文本文件 product_id, product_name,…

西安理工大学丨ChatGPT助力学术论文写作训练营-助力发表SCI一区、二区

在当今学术研究中,科研人员在撰写论文时面临诸多挑战。首先是信息量的剧增,科研人员需要快速消化新知识,筛选相关信息并清晰表达。但论文写作不仅是信息的罗列,还需要条理清晰、逻辑严密、语言精准,特别是在竞争激烈的…

网络安全应急响应流程图

一、网络安全应急响应建设的背景和现状 当前,许多地区和单位已经初步建立了网络安全预警机制,实现了对一般网络安全事件的预警和处置。但是,由于网络与信息安全技术起步相对较晚,发展时间较短,与其他行业领域相比&…

2024 阿里云Debian12.8安装apach2【图文讲解】

1. 更新系统,确保您的系统软件包是最新的 sudo apt update sudo apt upgrade -y 2. 安装 Apache Web 服务器 apt install apache2 -y 3. 安装 PHP 及常用的扩展 apt install php libapache2-mod-php -y apt install php-mysql php-xml php-mbstring php-curl php…

vue2播放视频和预览文件的组件以及使用方法

##文件预览组件 按照组件 解决展示pdf的问题 npm install pdfh5 npm install canvas2.8.0 --ignore-scripts npm install --save dommatrix npm install --save web-streams-polyfill解决excel和docx预览的问题 npm install vue-office/docx vue-demi0.14.6 npm inst…

本地windows环境下,在vscode里将go项目打成docker镜像,并运行访问

此处只展示一个简单go代码实例. #前提:需要装好docker和golang环境,本地docker启动且配置好镜像源地址: # 容器镜像加速服务-云港网络 1.首先在vscode中写一个简单输出的demo go mod init +go mod tidy编译一下,命令运行如下: 2.使用命令生成Dockerfile文件 $ g…

GIT的使用方法以及汉化方法

1.下载git软件,可以从官网下载 下载后默认安装即可。 2.找到一个文件夹,或者直接打开gitbash gitbash可以使用cd指令切换目录的 打开后输入 git clone https:[git仓库的网页]即可克隆仓库 就是这个地址 克隆后即可使用代码 如果忘记了命令可以使用 -…

【Linux】Linux安全与密钥登录指南

在使用Linux服务器时,确保服务器的安全至关重要。本文将为你介绍一些关键的Linux安全措施,包括开启密钥登录、查看登录日志、限制登录IP以及查看系统中能够登录的账号。以下内容适合小白用户,通过简单的操作就能有效提升服务器的安全性。 目录…

前缀和(四)除自身以外数组的乘积

238. 除自身以外数组的乘积 给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法&…

C# 13 中的新增功能

C# 12 中的新增功能C# 11 中的新增功能C# 10 中的新增功能C# 9.0 中的新增功能C# 8.0 中的新增功能C#7.0中有哪些新特性?C#6.0中10大新特性的应用和总结C# 5.0五大新特性 将C#语言版本升级为预览版 C# 13 包括一些新增功能。 可以使用最新的 Visual Stu…

图解RabbitMQ七种工作模式生产者消费者模型的补充

文章目录 1.消费者模型2.生产者-消费者模型注意事项2.1资源释放顺序问题2.2消费者的声明问题2.3虚拟机和用户的权限问题 3.七种工作模式3.1简单模式3.2工作模式3.3发布/订阅模式3.4路由模式3.5通配符模式3.6RPC通信3.7发布确认 1.消费者模型 之前学习的这个消息队列的快速上手…

如果模块把http改成了https请求,测试方案应该怎么制定

首先确定要测试的模块、接口、功能等,以及测试的目标,确保HTTPS请求能够正常进行、数据传输安全等。 1.功能测试 回归相应的功能模块以及业务逻辑,是否正常 2.兼容测试 测试不同浏览器和操作系统是否能够正常支持HTTPS连接。 验证模块在各种设…

编写按层次顺序(同一层自左至右)遍历二叉树的算法。或:按层次输出二叉树中所有结点;

解:思路:既然要求从上到下,从左到右,则利用队列存放各子树结点的指针是个好办法。 这是一个循环算法,用while语句不断循环,直到队空之后自然退出该函数。 技巧之处:当根结点入队后,会…

头歌 Linux之线程管理

第1关:创建线程 任务描述 通常我们编写的程序都是单进程,如果在一个进程中没有创建新的线程,则这个单进程程序也就是单线程程序。本关我们将介绍如何在一个进程中创建多个线程。 本关任务:学会使用C语言在Linux系统中使用pthrea…

Leetcode101. 对称二叉树(HOT100)

链接 我的错误代码: class Solution { public:bool isSymmetric(TreeNode* root) {if(!root)return true;if(!root->left&&!root->right)return true;if(!(root->left&&root->right))return false;if(root->left->val!root->…

Java 集合:强大的数据管理工具

在 Java 编程中,集合是一种非常重要的工具,它提供了一种方便的方式来存储和操作一组对象。本文将深入探讨 Java 集合框架,包括其主要类型、特点、用法以及一些最佳实践。 一、引言 在软件开发过程中,我们经常需要处理一组数据。…

qtcanpool 知 09:测试框架

文章目录 前言不满改进优化后语 前言 很久以前,作者写的代码都没有测试用例,最多就是写个 demo 验证一下,毕竟不是专业出身,也没经过大公司的洗礼。 后来,参与到一些项目才知道有专门的测试,而且开发也要测…

网络安全系列 之 SQL注入学习总结

目录 1. sql注入概述2. sql注入测试工具3. sql注入防御方法 3.1 问题来源3.2 防御方法4. SQL注入防御举例 4.1 使用JDBC时,SQL语句进行了拼接 1. 使用statement的executeQuery、execute、executeUpdate等函数时,传入的SQL语句拼接了来自外部的不可信参数…

《平衡之策:C++应对人工智能不平衡训练数据的数据增强方法》

在人工智能的广袤领域中,数据是驱动模型学习与成长的核心燃料。然而,不平衡的训练数据却如同一颗隐藏的暗礁,常常使模型的训练之船偏离正确航道,导致性能不佳与偏差增大。当我们聚焦于 C这一强大的编程语言时,又有哪些…

完整指南:在Ubuntu 20.04 ROS 1环境中配置和使用Orbbec SDK

完整指南:在Ubuntu 20.04 ROS 1环境中配置和使用Orbbec SDK 要在Ubuntu 20.04系统中使用ROS 1环境配置和使用Orbbec SDK,可以遵循以下详细且系统化的步骤。这些步骤将引导您从下载必要的工具和SDK到学习如何使用这些资源,确保您能有效地利用…