基于 FastAPI + Celery + Redis + Chroma + Ollama 实现的 RAG(检索增强生成)系统,提供原版和 LangChain 版两套后端实现,前端共用。
simple-rag/
├── backend/ # 原版后端(FastAPI :8000,手写实现)
├── backend-lc/ # LangChain 版后端(FastAPI :8001,LangChain + LangSmith)
├── frontend/ # React + shadcn/ui 前端(Nginx :3000 / :3001)
└── docker-compose.yml
| 维度 |
原版 backend |
LangChain 版 backend-lc |
| 端口 |
8000 |
8001 |
| 分块 |
固定窗口(500字/50重叠) |
RecursiveCharacterTextSplitter |
| Embedding |
requests 调 Ollama |
OllamaEmbeddings(区分 query/doc) |
| 向量库 |
chromadb 原生 |
langchain-chroma 封装 |
| LLM 调用 |
requests 拼 Prompt |
LCEL:PromptTemplate | ChatOllama | StrOutputParser |
| 可观测 |
日志 |
LangSmith 追踪 |
| 前端接口 |
4 个端点 |
完全兼容,零改动 |
- 安装并运行 Ollama
- 拉取模型:
ollama pull nomic-embed-text && ollama pull qwen2.5:7b
# 启动所有服务(两版本同时运行)
docker compose up -d
# 只启动 LangChain 版
docker compose up -d redis backend-lc celery-lc frontend-lc
cp backend-lc/.env.example backend-lc/.env
# 编辑 backend-lc/.env,填入 LANGCHAIN_API_KEY
docker compose up -d --build backend-lc celery-lc
| db |
用途 |
| 0 |
原版 Celery broker |
| 1 |
原版 Celery backend |
| 2 |
原版业务缓存 |
| 3 |
LangChain 版 Celery broker |
| 4 |
LangChain 版 Celery backend |
| 5 |
LangChain 版业务缓存 |
# 原版后端
cd backend && pip install -r requirements.txt
python -m uvicorn main:app --reload --port 8000
# LangChain 版后端
cd backend-lc && pip install -r requirements.txt
uvicorn main:app --reload --port 8001
# 前端
cd frontend && npm install && npm run dev