基于 Python LangChain/LlamaIndex + FastAPI + Streamlit + Ollama 构建企业离线内网 RAG 知识问答系统

作者:澎涛 | 分类:科技 | 发布时间:2026-07-15 10:55:21 | 阅读:8 | 点赞:0 | 点踩:0

摘要

本文详细介绍如何利用 Python 生态中的 LangChain/LlamaIndex 框架,结合 FastAPI 构建后端服务,使用 Streamlit 开发前端界面,并集成本地部署的 Ollama 与 Qwen 大语言模型,打造一套完全离线、可运行于企业内网环境的 RAG(检索增强生成)知识问答系统。文章将从系统架构设计、环境搭建、核心代码实现、前后端集成、模型本地化部署到最终系统展示,提供完整的实战指南。


1. 系统架构与设计目标

在企业内网环境中,数据安全与隐私保护是首要考虑。本系统设计目标如下:


完全离线:所有组件(大模型、向量数据库、前后端服务)均部署于内网,无需连接外网。

开源技术栈:采用成熟的 Python 开源框架,降低技术门槛与授权成本。

模块化设计:前后端分离,便于独立开发、测试与部署。

易于扩展:支持更换不同的本地大模型、向量数据库及前端框架。

整体架构如下图所示:




架构分为四层:


数据层:本地文档(PDF、Word、TXT等)经过文本提取与分割后,存入本地向量数据库(如 Chroma、FAISS)。

模型层:本地部署的 Ollama 服务,加载 Qwen 等开源大模型。

后端服务层:基于 FastAPI 构建,集成 LangChain/LlamaIndex 实现 RAG 检索与生成流程。

前端交互层:使用 Streamlit 构建简洁的 Web 界面,供用户提问并展示答案。

2. 环境准备与依赖安装

首先,确保内网服务器或开发机已安装 Python 3.8+。创建虚拟环境并安装核心依赖。


# 创建项目目录

mkdir enterprise-rag-system && cd enterprise-rag-system

创建虚拟环境

python -m venv venv

source venv/bin/activate # Linux/macOS

venv\Scripts\activate # Windows

安装核心 Python 包

pip install fastapi uvicorn

pip install langchain langchain-community langchain-chroma

或者使用 LlamaIndex

pip install llama-index llama-index-vector-stores-chroma

pip install streamlit

pip install pypdf python-docx # 文档解析

pip install sentence-transformers # 本地 embedding 模型

一键获取完整项目代码

bash


安装并启动 Ollama:


从 Ollama 官网下载适用于内网系统的离线安装包,或在一台可联网的机器上提前拉取模型再迁移至内网。


# 在可联网机器上拉取 Qwen 模型 (例如 7B 版本)

ollama pull qwen2.5:7b

将模型文件(通常位于 ~/.ollama/models)拷贝至内网服务器对应目录

在内网服务器启动 Ollama 服务

ollama serve

默认服务地址为 http://localhost:11434

一键获取完整项目代码

bash

3. 后端服务开发 (FastAPI + LangChain)

后端主要负责文档处理、向量检索和调用本地大模型生成答案。


3.1 项目 结构

backend/

├── main.py     # FastAPI 主应用

├── rag_core.py   # RAG 核心逻辑

├── models.py    # 数据模型

├── chroma_db/    # 向量数据库存储目录

└── documents/    # 待处理的原始文档目录

一键获取完整项目代码

plaintext

3.2 核心 RAG 逻辑 (rag_core.py)

最后再附上实际使用的效果截图:

特别说明,本项目可完全在内网中使用,解决了用户数据安全以及离线AI的功能。

————————————————

版权声明:本文为CSDN博主「weipt」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/weipt/article/details/162878011


评论 (0)

登录 后发表评论

暂无评论