LangChain-Chatchat

2024-03-20 16:04
文章标签 langchain chatchat

本文主要是介绍LangChain-Chatchat,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在这里插入图片描述


文章目录

    • 关于 LangChain-Chatchat
      • 特性说明
      • 实现原理
      • 文档处理流程
      • 技术路线图(截止0.2.10)
    • 使用


关于 LangChain-Chatchat

Langchain-Chatchat(原Langchain-ChatGLM)基于 Langchain 与 ChatGLM 等语言模型的本地知识库问答。

  • github : https://github.com/chatchat-space/Langchain-Chatchat
  • wiki: https://github.com/chatchat-space/Langchain-Chatchat/wiki/
    • 支持列表 LLM 模型、Embedding 模型、向量数据库、工具支持列表
    • 开发环境部署
      前期准备 :软件、硬件
      部署代码:Docker 部署、最轻模式部署方案、常规模式本地部署方案(环境安装、模型下载、初始化知识库、一键启动、多卡加载)
    • 参数配置 :基础配置项 basic_config.py、模型配置项 model_config.py、提示词配置项 prompt_config.py、数据库配置 kb_config.py、服务和端口配置项 server_config.py、覆盖配置文件 或者配置 startup.py
    • 自定义:使用自定义的分词器、 Agent 工具、微调模型、嵌入模型,日志功能。
    • 最佳实践:推荐的模型组合、微调模型加载实操、预处理知识库文件、自定义的关键词调整Embedding模型、实际使用效果
  • 原理介绍:ChatGLM + LangChain 实践培训(视频 1h)
    https://www.bilibili.com/video/BV13M4y1e7cN/
    ppt : https://pan.baidu.com/s/15jmNG2dc80IWM4LlLj94Rw?pwd=7fnw

特性说明

  • 利用 langchain 思想实现的 基于本地知识库 的问答应用
  • 目标:期望建立一套对中文场景与开源模型支持友好、可离线运行的知识库问答解决方案。
  • 受 GanymedeNil 的项目 document.ai 和 AlexZhangji 创建的 ChatGLM-6B Pull Request启发,建立了 全流程可使用开源模型 实现的本地知识库问答应用。
  • 本项目的最新版本中通过使用 FastChat 接入 Vicuna, Alpaca, LLaMA, Koala, RWKV 等模型,依托于 langchain 框架支持 通过基于 FastAPI 提供的 API 调用服务,或使用基于 Streamlit 的 WebUI 进行操作。
  • 依托于本项目支持的开源 LLM 与 Embedding 模型,本项目可实现全部使用开源模型离线私有部署
    与此同时,本项目也支持 OpenAI GPT API 的调用,并将在后续持续扩充对各类模型及模型 API 的接入。

实现原理

本项目实现原理如下图所示,过程包括:
加载文件 -> 读取文本 -> 文本分割 -> 文本向量化 -> 问句向量化 -> 在文本向量中匹配出与问句向量最相似的 top k个 -> 匹配出的文本作为上下文和问题一起添加到 prompt中 -> 提交给 LLM生成回答。

在这里插入图片描述


文档处理流程

在这里插入图片描述


技术路线图(截止0.2.10)

  • Langchain 应用
    • 本地数据接入
    • 接入非结构化文档
      • .txt, .rtf, .epub, .srt
      • .eml, .msg
      • .html, .xml, .toml, .mhtml
      • .json, .jsonl
      • .md, .rst
      • .docx, .doc, .pptx, .ppt, .odt
      • .enex
      • .pdf
      • .jpg, .jpeg, .png, .bmp
      • .py, .ipynb
    • 结构化数据接入
      • .csv, .tsv
      • .xlsx, .xls, .xlsd
    • 分词及召回
      • 接入不同类型 TextSplitter
      • 优化依据中文标点符号设计的 ChineseTextSplitter
    • 搜索引擎接入
    • Bing 搜索
    • DuckDuckGo 搜索
    • Metaphor 搜索
    • Agent 实现
    • 基础React形式的Agent实现,包括调用计算器等
    • Langchain 自带的Agent实现和调用
    • 智能调用不同的数据库和联网知识
  • LLM 模型接入
    • 支持通过调用 FastChat api 调用 llm
    • 支持 ChatGLM API 等 LLM API 的接入
    • 支持 Langchain 框架支持的LLM API 接入
  • Embedding 模型接入
    • 支持调用 HuggingFace 中各开源 Emebdding 模型
    • 支持 OpenAI Embedding API 等 Embedding API 的接入
    • 支持 智谱AI、百度千帆、千问、MiniMax 等在线 Embedding API 的接入
  • 基于 FastAPI 的 API 方式调用
  • Web UI
    • 基于 Streamlit 的 Web UI

使用

Langchain-Chatchat 体验
https://mp.weixin.qq.com/s/RvS85gPjWOXkfQa9A2izpw


1、克隆项目

首先将以上项目克隆至本地,并安装相关依赖。

git clone https://github.com/chatchat-space/Langchain-Chatchat.git
pip install -r requirements.txt --trusted-host mirrors.aliyun.com
pip install -r requirements_webui.txt --trusted-host mirrors.aliyun.com

2、下载模型

git clone https://www.modelscope.cn/qwen/Qwen-1_8B-Chat-Int8.git
git clone https://www.modelscope.cn/AI-ModelScope/bge-large-zh.git  

模型下载路径为 /models


3、初始化配置文件和知识库

python copy_config_example.py
python init_database.py --recreate-vs

4、修改配置信息

model_config.py

# 修改为下载模型的地址
MODEL_ROOT_PATH = "/models"# 修改为本地使用模型
LLM_MODELS = ["Qwen-1_8B-Chat-Int8"]

5、启动

python startup.py --all-webui --model-name Qwen-1_8B-Chat-Int

2024-03-20(三)
喝了一杯 黑糖珍珠鲜牛奶~

这篇关于LangChain-Chatchat的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/829989

相关文章

LLM大模型教程:langchain 教程

软件安装 pip install pymupdfpip install langchainpip install langchain-cliconda install -c pytorch -c nvidia faiss-gpu=1.7.4 mkl=2021 blas=1.0=mkl 由于langchain不支持qwen模型,我们需要自定义模型 from typing import A

基于LangChain+LLM的相关技术研究及初步实践

01 概述 大模型概述 大模型是指具有大规模参数和复杂计算结构的机器学习模型。这些模型通常由深度神经网络构建而成,拥有数十亿甚至数千亿个参数。大模型的设计目的是为了提高模型的表达能力和预测性能,能够处理更加复杂的任务和数据。大模型在各种领域都有广泛的应用,包括自然语言处理、计算机视觉、语音识别和推荐系统等。大模型通过训练海量数据来学习复杂的模式和特征,具有更强大的泛化能力,可以对未见过的数据

langchain 《斗破苍穹》智谱 RAG 问题搜索

目录 代码 项目介绍 模型对比实验 分块方法对比 检索方法对比 结果 10条问题 15条问题 局限性 代码 https://github.com/5zjk5/prompt-engineering/tree/master 项目介绍 《斗破苍穹》小说 RAG 问答,爬虫爬取整部小说章节,并分别保存到不同的数据源中。 txt,pdf,markdown,word。

LangChain教程 - 系列文章

LangChain 是一个专为开发大语言模型(LLM)应用程序设计的框架。它提供了丰富的模块化工具,支持开发者轻松构建、管理和部署复杂的 LLM 应用程序。LangChain 允许将语言模型、提示模板、输出解析器等组件进行无缝集成,同时支持链式调用和复杂任务的处理,适用于对话系统、内容生成、翻译等多种场景。 系列文章索引: LangChain教程 - 介绍 LangChain教程 - 使用 LC

LangChain学习

1、LangChain主要用于开发LLM应用 chain可以理解成一个pipeline。构建各种各样的pipeline。 2、可以自动定制prompt,解析输出格式 优化prompt格式,使得输出结果更好llm本身输出的只是一个字符串,自动解析为json等格式 3、memory机制,制作聊天机器人 llm本身只有输入输出,无法对话,需要将历史对话也输入到prompt才能聊天如对话

【LangChain】深入解析LangChain:如何使用输出解析器优化结果处理

😁 作者简介:一名前端爱好者,致力学习前端开发技术 ⭐️个人主页:夜宵饽饽的主页 ❔ 系列专栏:JavaScript小贴士 👐学习格言:成功不是终点,失败也并非末日,最重要的是继续前进的勇气 ​🔥​前言: 在使用langchain的过程中,输出解析器时非常关键的,可以帮助我们将复杂的模型响应转换为结构化、易于使用的数据格式,这是我自己的学习笔记,希望可以帮助到大家,欢迎大家的

How can I change from OpenAI to ChatOpenAI in langchain and Flask?

题意:“在 LangChain 和 Flask 中,如何将 OpenAI 更改为 ChatOpenAI?” 问题背景: This is an implementation based on langchain and flask and refers to an implementation to be able to stream responses from the OpenAI

LangChain学习资料

本文提供了一个LangChain框架的综合资源库,包括低代码工具、服务、代理、模板等,还列举了知识管理和聊天机器人等开源项目,以及学习笔记、视频教程等学习资料,旨在帮助开发者更好地利用和学习LangChain。 摘要由CSDN通过智能技术生成 文章目录 一、LangChain框架二、工具 2.1 低代码2.2 服务2.3 代理2.4 模板2.5 平台三、开源项目 3.1 知识管理3.

【大模型】LangChain基础学习

前言:LangChain是一个用于构建端到端语言模型应用的框架 目录 1. 基础知识2. 基本使用2.1 安装2.2 启动示例2.3 使用prompt2.4 输出解析器 3. 相关应用3.1 RAG 参考文献 1. 基础知识 六大组件 模型(Models):包含各大语言模型的LangChain接口和调用细节,以及输出解析机制。提示模板(Prompts):使提示工程流线化

langchain结合searXNG实现基于搜索RAG

目录 一、背景 二、环境说明和安装 1.1 环境说明 2.2 环境安装 2.2.1 searXNG安装 代码实现 代码 结果输出 直接请求模型输出 ​编辑 参考 一、背景         大语言模型的出现带来了新的技术革新,但是大模型由于训练语料的原因,它的知识和当前实时热点存在时间差距,存在很严重的幻觉。而RAG检索增强生成能够解决这个问题,知识以prompt的