摘要
本文详细介绍如何利用 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