需求背景:我们公司在新人入职的时候,总是需要考试,因为需要学习很多的资料,才行。所以我就想能否做一个RAG出来,然后做一个网页,整个项目运行后,就可以进行项目搜索了
1、可以选择指定的文件夹目录,该文件夹下可以有很多的不同类型的文件,如Doc,Excel,txt,Md等 2、在对话框中,还可以选择不同的大模型 3、可以在对话框中,针对你想要问的问题进行搜索,进行回答,还可以联网进行搜索 4、使用react框架,还有Ant Design来设计,Vite技术来写
1、使用自己搭建大模型的技术,去部署一个Eembbings模型,这样就可以不需要购买服务了(这里有很多种技术,得待会研究一下) 2、后端使用langchain技术,使用Python的 FastAPI,作为后端 3、数据库使用Milvs,再搭建一个后端,用于管理整个向量数据库
1、使用火山大模型,比较经济实惠
$env:UV_DEFAULT_INDEX = "https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple"
安装完后,在项目下执行命令,对项目进行初始化
uv init当我们输入完命令后:我们会发现,下面会生成4个文件
.python-version 这里说明了当前项目使用的什么Python版本
pyproject.toml 这里记录了项目的信息
Simple-RAG 是一个基于检索增强生成(RAG)技术的私有化知识库解决方案。它旨在解决新人入职时面临的资料繁杂、学习成本高的问题。通过本地化部署 Embedding 模型和集成高性能 LLM,实现针对企业内部文档(Doc, Excel, PDF, MD)的精准问答。
本系统采用前后端分离架构,核心链路如下:
- 前端: React 18 + Ant Design + Vite
- 后端: Python 3.12 + FastAPI + LangChain
- 向量数据库: Milvus (Standalone) + Attu (GUI)
- 模型层:
- Embedding: 本地部署
bge-small-zh-v1.5(由 HuggingFace/ModelScope 提供支持) - LLM: 火山引擎 (Volcengine Ark) 提供高性价比推理服务
- Embedding: 本地部署
- 多格式扫描: 自动递归解析指定文件夹下的 Doc, Excel, Txt, Markdown 等文件。
- 本地向量化: 无需购买外部向量化服务,本地部署模型保证数据隐私。
- 双模式问答: 支持基于私有知识库的问答及互联网实时搜索扩展。
- 流式输出: 仿 ChatGPT 的 SSE 流式响应,极速交互体验。
- 可视化管理: 通过 Attu 实时监控向量数据库索引状态。
确保你的系统已安装:
- Docker & Docker Compose
- uv (高性能 Python 包管理器)
- Node.js 18+ & pnpm
# 增加
$env:UV_DEFAULT_INDEX = "https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple"
# 安装 uv (PowerShell)
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
# 初始化环境
uv init
uv add fastapi uvicorn langchain langchain-community langchain-huggingface pymilvus python-dotenv
# 启动向量数据库 (Docker)
docker-compose up -d
# 配置环境变量 (.env)
ARK_API_KEY=your_key_here
ARK_ENDPOINT_ID=your_endpoint_herecd frontend
pnpm install
pnpm devsimple-rag/
├── backend/ # FastAPI 后端服务
│ ├── core/ # RAG 核心逻辑 (LangChain)
│ ├── models/ # 本地 Embedding 模型存放
│ └── api/ # 接口路由
├── frontend/ # React + Ant Design 前端
├── data/ # 默认文档存放目录
├── docker-compose.yml # Milvus 服务编排
└── pyproject.toml # uv 项目管理
- Phase 1: 跑通本地
bge-small-zh模型与 Milvus 的向量入库流程。 - Phase 2: 开发基于《三国演义》文档的测试问答 Demo。
- Phase 3: 集成火山大模型流式 API。
- Phase 4: 前端 Ant Design 界面适配与引用溯源展示。
欢迎提 Issue 或 Pull Request 来完善这个项目。作为一个旨在通过 西蒙学习法 实践的开源项目,我们鼓励一切能够简化架构或提升检索准确度的改进。
*### 💡 提示:
你可以根据实际情*况修改其中的 ARK_API_KEY 等占位符。这份文档不仅适合 GitHub 仓库展示,也能在公司内部评审中显得非常专业。需要我帮你写一份 docker-compose.yml 来配合这个仓库吗?