这是一个面向 LLM 算法岗 / 大模型应用开发 / RAG 工程实习 的完整可运行项目。项目实现从资料加载、文本切分、向量化、Chroma 持久化检索,到 MiMo 大模型生成回答和来源引用的完整 RAG 链路,并提供 CLI 与 Web UI 两种演示方式。
项目路径:
/Users/zzb/Desktop/面试实习准备/RAG
- 完整 RAG 闭环:支持
.md/.txt/.pdf/.docx资料加载、chunk 切分、本地 embedding、Chroma 检索、LLM 生成和来源引用。 - 默认中文友好:Embedding 使用
BAAI/bge-small-zh-v1.5,适合中文学习资料和面试文档。 - MiMo API 接入:默认按 OpenAI-compatible Chat API 接入 Xiaomi MiMo,配置项集中在
.env和configs/settings.yaml。 - CLI + Web 双入口:命令行方便复现,Web 页面方便演示、截图和面试讲解。
- 工程化结构:代码、配置、测试、运行手册、学习清单和面试讲解材料完整分层。
cd /Users/zzb/Desktop/面试实习准备/RAG
/opt/anaconda3/bin/python3 -m venv .venv
source .venv/bin/activate
pip install -U pip
pip install -e ".[dev]"
cp .env.example .env如果你的 python --version 已经是 3.12,也可以直接使用 python -m venv .venv。
编辑 .env,填写 MiMo Key:
XIAOMI_API_KEY=你的密钥
XIAOMI_BASE_URL=https://api.mimo-v2.com/v1
XIAOMI_MODEL=mimo-v2.5-pro检查环境:
rag-system doctor构建知识库索引:
rag-system ingest --source data/raw --reset命令行问答:
rag-system ask "RAG 系统包含哪些步骤?" --top-k 5启动 Web:
rag-system serve --host 127.0.0.1 --port 8010打开:
http://127.0.0.1:8010/
如果只是验证检索和工程链路,可以使用 fake LLM。仍然需要先安装依赖,但不会调用真实模型 API。
RAG_LLM_PROVIDER=fake rag-system ingest --source data/raw --reset
RAG_LLM_PROVIDER=fake rag-system ask "RAG 是什么?" --fake-llm如果想跳过 sentence-transformers 模型下载,可临时使用轻量 Hashing embedding:
RAG_EMBEDDING_PROVIDER=hash RAG_LLM_PROVIDER=fake rag-system ingest --source data/raw --reset
RAG_EMBEDDING_PROVIDER=hash RAG_LLM_PROVIDER=fake rag-system ask "RAG 是什么?" --fake-llmRAG/
configs/settings.yaml 项目默认配置
data/raw/ 默认知识库资料目录
storage/chroma/ Chroma 持久化索引目录,运行后生成
src/rag_system/ 核心代码
documents.py 文档加载
chunking.py 文本切分
embeddings.py Embedding 封装
vector_store.py Chroma 和内存向量库
llm.py MiMo 和 fake LLM 客户端
rag.py RAG 编排
cli.py 命令行入口
web/ FastAPI Web UI
tests/ 单元测试和 Web/CLI 冒烟测试
docs/系统设计.md 架构和数据流说明
docs/面试讲解稿.md 简历与面试表达
docs/排障指南.md 常见问题处理
详细运行手册.md 从零运行说明
项目学习清单.md 学习路线和检查清单
rag-system doctor
rag-system ingest --source data/raw --reset
rag-system ask "你的问题" --top-k 5
rag-system serve --host 127.0.0.1 --port 8010
pytest构建中文 RAG 知识库问答系统,支持 Markdown/txt/PDF/docx 资料解析、本地 BGE embedding、Chroma 向量检索和 MiMo OpenAI-compatible API 生成回答;实现 CLI 与 FastAPI Web 双入口,并在回答中返回来源 chunk、文件名和相关度,提升问答可追溯性。