章节二十五项目简介与环境准备一、项目简介1. 项目定位智库是一个企业级智能知识库系统基于RAG检索增强生成技术为垂直领域提供精准、智能的知识检索与问答服务。核心目标将非结构化文档PDF、Markdown转化为可检索的结构化知识。通过多路召回策略提升检索准确率。提供流畅的流式问答交互体验。2. 核心模块数据处理流水线支持PDF/Markdown等多格式文档导入执行文档结构化解析、智能切片、元数据提取及向量化存储的全链路预处理。智能检索系统集成混合检索稠密向量稀疏向量、HyDE假设性问题生成、MCP联网搜索及Rerank重排序等高级策略确保回答的准确性和时效性。3. 功能特性文档智能导入支持PDF/Markdown文件上传自动解析、切分、向量化。混合向量检索稠密向量稀疏向量BM25混合检索。多路召回融合向量检索HyDEWeb搜索。智能重排序Reranker模型重排序断崖检测动态截断。流式问答SSE实时推送逐字输出答案。会话历史管理MongoDB存储对话历史支持上下文连续对话。4. 系统架构系统分四层API层HTTP接口暴露、请求路由用FastAPIUvicorn实现。Processor层业务流程编排、节点调度用LangGraph实现。Utils层工具函数封装、外部服务调用。数据层数据持久化、检索用Milvus/MongoDB/MinIO。5. 技术栈类别技术说明后端框架FastAPI Uvicorn异步高性能HTTP服务工作流引擎LangGraph有状态图编排框架大语言模型阿里云DashScope (Qwen)qwen-flash / qwen3-vl-flash向量嵌入OpenAI API BGE-M31536维 / 1024维稀疏重排序模型BGE-Reranker-Large本地部署向量数据库Milvus混合检索稠密稀疏文档数据库MongoDB对话历史存储对象存储MinIO文件与图片存储PDF解析MinerUPDF转Markdown前端HTML5 JS轻量实现二、环境准备1. 服务器环境安装CentOS配置虚拟网络VMnet8安装CentOS7磁盘40G内存4GCPU 2x2。安装后配置网络手动配置IPv4用远程工具连接关闭防火墙。2. 安装Docker第一步备份原有repo文件。第二步安装yum-utils。第三步添加Docker CE的阿里云yum源。第四步安装Docker CE、CLI、containerd和compose插件。第五步关闭防火墙启动Docker并设置开机自启。第六步执行docker -v验证安装成功。3. 部署中间件MinIO对象存储第一步加载镜像docker load -i minio.tar。第二步启动容器映射9000API端口和9001Web Console端口。第三步默认账号密码minioadmin/minioadmin。第四步在.env中配置MINIO_ENDPOINT、MINIO_ACCESS_KEY、MINIO_SECRET_KEY、MINIO_BUCKET_NAME。Milvus向量数据库第一步下载Milvus官方单机版docker-compose配置文件。第二步修改minio端口号避免冲突添加Attu管理容器配置。第三步加载镜像attu、milvus-etcd、milvus-minio、milvus。第四步执行docker compose up -d启动所有服务。第五步在.env中配置MILVUS_URL、CHUNKS_COLLECTION、MILVUS_METRIC_TYPE等。MongoDB文档数据库第一步加载镜像docker load -i mongo.tar。第二步启动容器映射27017端口。第三步在.env中配置MONGO_URL和MONGO_DB_NAME。4. Python开发环境安装uv包管理器Windows设置执行策略创建配置文件配置清华镜像源。安装Python 3.11执行uv python install 3.11。配置.env文件包含模型API密钥DashScope、BGE模型路径、各中间件连接地址等配置。安装项目依赖使用uv add安装核心依赖包python-dotenv环境变量管理langgraph工作流框架fastapiWeb框架minio对象存储客户端langchain-openai / langchainLLM应用框架langchain-text-splitters文本分割pymongoMongoDB驱动pymilvusMilvus客户端numpy、colorlog等工具库5. 项目目录结构knowledge/ ├── api/ # API路由层 │ ├── query_router.py # 查询服务路由 │ └── import_router.py # 导入服务路由 ├── core/ # 核心配置 ├── processor/ # 业务处理流程LangGraph │ ├── import_process/ # 导入流程 │ │ ├── main_graph.py # 导入流程图定义 │ │ ├── state.py # 状态类型定义 │ │ └── nodes/ # 处理节点 │ └── query_process/ # 查询流程 ├── schema/ # 数据模型定义 ├── services/ # 业务服务层 ├── utils/ # 工具函数库 ├── front/ # 前端页面 ├── .env # 环境配置文件 └── pyproject.toml # Python依赖声明名词解释RAG检索增强生成先从知识库找资料再让大模型回答减少胡说。Milvus开源向量数据库专门存和搜向量做语义检索很快。MongoDB文档型数据库存JSON格式数据适合存对话历史。MinIO兼容S3协议的对象存储用来存文件和图片。Embedding向量化技术把文本映射成低维数字向量。Rerank重排序先用多路召回一批结果再用模型打分排序选出最好的。HyDE先让AI生成假答案再搜向量提高检索准确率的技巧。DashScope阿里云的大模型服务平台提供Qwen等模型API。BGE-M3混合向量嵌入模型能同时生成稠密向量和稀疏向量。MinerUPDF转Markdown工具支持公式、表格等复杂排版提取。SSE服务端推送事件协议用来实现流式输出。