FastAPI + LangChain LangChain+ Ollama Ollama+ Streamlit Streamlit + 开源大语言模型+ Embedding模型+ 向量数据库+ Xinference+ GLM-4-Chat

构建可离线部署的本地知识库RAG问答应用

LangChain负责应用编排,Xinference与Ollama承载模型接入,FastAPI和Streamlit分别提供API与WebUI。

✓ 支持离线私有部署✓ 支持主流开源模型与向量数据库 ✕ 需自行启动模型部署框架✕ 需修改配置信息接入

方案简介

这是一套面向中文场景的本地知识库问答方案,以开源大语言模型和应用框架为基础,围绕文档处理、向量检索与回答生成建立完整的 RAG 流程。项目目标是提供友好的中文和开源模型支持,并尽可能在本地、离线环境中完成部署。

方案适合需要使用本地资料进行问答、希望控制数据部署位置,或希望通过开源模型构建知识库应用的使用者。它既提供基于 FastAPI 的服务调用方式,也提供基于 Streamlit 的 WebUI 操作方式;同时保留对 OpenAI GPT API 的调用能力。

亮点与能力

  • 支持本地知识库问答,覆盖从文件加载到回答生成的主要流程。
  • 支持主流开源 LLM、Embedding 模型与向量数据库。
  • 可通过 Xinference、Ollama 等模型部署框架接入模型。
  • 可接入 GLM-4-Chat、Qwen2-Instruct、Llama3 等模型。
  • 通过 FastAPI 提供 API 服务调用。
  • 通过 Streamlit 提供 WebUI 操作。
  • 支持全部使用开源模型进行离线私有部署,同时也支持 OpenAI GPT API 调用。

组成与分工

  • LangChain:提供应用编排思想和知识库问答流程的框架基础。
  • Xinference:作为本地模型部署框架,负责承载可接入的模型服务。
  • Ollama:作为另一种本地模型部署框架,提供模型接入能力。
  • GLM-4-Chat:可接入的开源大语言模型之一。
  • FastAPI:对外提供 API 服务调用入口。
  • Streamlit:提供可交互的 WebUI 操作界面。
  • Embedding 模型:将文档和问题转换为向量,参与相似度检索。
  • 向量数据库:保存文本向量并支持相似内容匹配。

实施步骤

1. 选择模型部署方式

先确定使用 Xinference、Ollama 等已支持的本地模型部署框架,并准备相应的开源大语言模型和 Embedding 模型。模型服务需要先由使用者启动,项目再通过配置接入。

2. 准备知识库材料

将需要问答的文件作为知识库输入。方案按“加载文件—读取文本—文本分割—文本向量化”的顺序处理文档,为后续检索建立向量表示。

3. 建立检索链路

用户提出问题后,系统先对问题进行向量化,在文本向量中匹配与问题向量最相似的 top k 个片段,再把匹配出的文本作为上下文与问题一起放入 prompt。

4. 接入回答模型

将检索得到的上下文和问题提交给 LLM,由模型生成最终回答。模型部署框架和项目之间通过配置完成连接。

5. 选择访问入口

需要程序化调用时使用 FastAPI 提供的 API;需要交互式操作时使用 Streamlit WebUI。两者都建立在同一套知识库问答能力之上。

使用与配置要点

日常使用时,核心操作是维护知识库文件、选择已接入的模型,并提交问题进行检索问答。回答生成依赖检索到的上下文,因此应先确认知识库已完成文本处理和向量化。

验证方案是否跑通,可以检查以下链路是否连续:文件能够被加载,文本能够被切分,文档和问题能够完成向量化,系统能够返回 top k 相似文本,并将这些文本连同问题提交给 LLM 生成回答。若需要外部系统接入,则通过 FastAPI API 调用;若面向用户操作,则通过 Streamlit WebUI 使用。

注意事项与常见问题

  • 本项目本身不涉及微调和训练过程;微调或训练可以用于优化本项目效果,但不属于该方案的基础流程。
  • 使用本地模型时,模型部署框架需要由用户自行启动,然后再通过修改配置信息接入项目。
  • README 提到 Docker 镜像将会在近期更新,因此 Docker 部署信息不能作为当前材料中完整的实施依据。
  • 除离线开源模型外,项目也支持调用 OpenAI GPT API;这属于额外的模型 API 接入路径。

优缺点

  • ✓ 支持离线私有部署
  • ✓ 支持主流开源模型与向量数据库
  • ✕ 需自行启动模型部署框架
  • ✕ 需修改配置信息接入

出处

本方案挖掘自开源项目 chatchat-space/Langchain-Chatchat,方案内容与实施命令均来自其 README 原文。

方案出处
chatchat-space/Langchain-Chatchat:Langchain-Chatchat(原Langchain-ChatGLM)基于 Langchain 与 ChatGLM, Qwen 与 Llama 等语言模型
38615 star Langchain-Chatchat(原Langchain-ChatGLM)基于 Langchain 与 ChatGLM, Qwen 与 Llama 等语言模型的 RAG 与 Agent 应用 | Langchain-Chatchat (formerly langchain-ChatGLM), local knowledge based LLM (like ChatGLM, Qwen and Ll

本方案由真实开源项目挖掘整理,实施命令均来自其 README 原文,安装使用请遵循项目开源协议。