Skip to content
zR edited this page Jan 22, 2024 · 25 revisions

欢迎来到 Langchain‐Chatchat 的 Wiki , 在这里开启 Langchain 与大模型的邂逅!

项目简介

📃 LangChain-Chatchat (原 Langchain-ChatGLM): 基于 Langchain 与 ChatGLM 等大语言模型的本地知识库问答应用实现。

🤖️ 一种利用 langchain 思想实现的基于本地知识库的问答应用,目标期望建立一套对中文场景与开源模型支持友好、可离线运行的知识库问答解决方案。

💡 受 GanymedeNil 的项目 document.aiAlexZhangji 创建的 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生成回答。

算法流程

大家可以前往Bilibili平台查看原理介绍视频:

📺 原理介绍视频

开发组也为大家绘制了一张实现原理图,效果如下:

实现原理图

从文档处理角度来看,实现流程如下:

实现原理图2

技术路线图(截止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