# DeepSeek_KnowledgeBase **Repository Path**: ma-sining/deepseek-knowledge-base ## Basic Information - **Project Name**: DeepSeek_KnowledgeBase - **Description**: 基于 LangChain + ChromaDB + Ollama 本地模型构建的私有知识库问答系统。 Embedding 模型:qwen3-embedding:0.6b (Ollama)、LLM 模型:qwen2.5:0.5b (Ollama 本地)、向量数据库:ChromaDB、文档切片大小:500 字符、切片重叠:150 字符 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-13 - **Last Updated**: 2026-03-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # RAG 企业知识库系统 基于 LangChain + ChromaDB + Ollama 本地模型构建的私有知识库问答系统。 ## 项目简介 RAG(Retrieval-Augmented Generation,检索增强生成)是一种让大模型"开卷考试"的技术。它先从知识库中检索相关文档,再让大模型基于检索结果生成答案,有效解决了大模型的"幻觉"和"知识滞后"问题。 ### 核心优势 - 🔒 **完全本地化** - 数据不离开本地,保护隐私安全 - 🎯 **答案可溯源** - 每个回答都有据可依,可追溯来源 - ⚡ **无需微调** - 知识库更新无需重新训练模型 - 💰 **零 API 成本** - 使用本地模型,无需付费 API ## 系统架构 ``` ┌─────────────────────────────────────────────────────────────────┐ │ RAG 工作流程 │ ├─────────────────────────────────────────────────────────────────┤ │ │ │ 【索引阶段 - 离线处理】 │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │ PDF文档 │ -> │ 文档切片 │ -> │ 向量化 │ -> │ 向量数据库│ │ │ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │ │ │ │ 【查询阶段 - 在线响应】 │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │ 用户问题 │ -> │ 向量检索 │ -> │ 组装Prompt│ -> │ LLM生成 │ │ │ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │ │ │ └─────────────────────────────────────────────────────────────────┘ ``` ## 技术栈 | 组件 | 技术 | 说明 | |------|------|------| | 框架 | LangChain | RAG 流程编排 | | 向量数据库 | ChromaDB | 轻量级本地向量存储 | | Embedding | qwen3-embedding:0.6b | 文本向量化模型 | | LLM | qwen2.5:0.5b / DeepSeek | 大语言模型 | | 运行时 | Ollama | 本地模型运行环境 | ## 环境要求 - Python 3.9+ - Ollama(已安装并运行) - 8GB+ 内存(运行本地模型) ## 快速开始 ### 1. 安装 Ollama 访问 [Ollama 官网](https://ollama.ai) 下载安装,或使用包管理器: ```bash # Windows (使用 winget) winget install Ollama.Ollama # macOS brew install ollama # Linux curl -fsSL https://ollama.ai/install.sh | sh ``` ### 2. 下载模型 ```bash # 下载 Embedding 模型(用于向量化) ollama pull qwen3-embedding:0.6b # 下载 LLM 模型(用于生成答案) ollama pull qwen2.5:0.5b ``` ### 3. 安装 Python 依赖 ```bash # 创建虚拟环境(推荐) python -m venv .venv # 激活虚拟环境 # Windows: .\.venv\Scripts\activate # Linux/macOS: source .venv/bin/activate # 安装依赖 pip install -r requirements.txt ``` ### 4. 准备知识库文档 将你的 PDF 文档放入项目根目录,并修改 `main.py` 中的 `PDF_PATH` 配置: ```python PDF_PATH = "your_document.pdf" # 修改为你的文档路径 ``` ### 5. 运行系统 ```bash python main.py ``` ## 配置说明 ### 模型配置 ```python # Ollama 本地模型配置 OLLAMA_BASE_URL = "http://localhost:11434" OLLAMA_EMBEDDING_MODEL = "qwen3-embedding:0.6b" # Embedding 模型 OLLAMA_LLM_MODEL = "qwen2.5:0.5b" # LLM 模型 # 切换为云端 API(可选) USE_LOCAL_LLM = False # 改为 False 使用 DeepSeek API ``` ### 文档切片参数 ```python text_splitter = RecursiveCharacterTextSplitter( chunk_size=500, # 每个切片的最大字符数 chunk_overlap=150, # 相邻切片的重叠字符数 ) ``` | 参数 | 建议值 | 说明 | |------|--------|------| | chunk_size | 500-1000 | 太大会包含噪音,太小会丢失语义 | | chunk_overlap | 10%-20% | 保持上下文连贯性 | ### 检索参数 ```python retriever = vectorstore.as_retriever(search_kwargs={"k": 3}) ``` - `k`: 返回最相关的 k 个文档片段,建议 3-5 ## 使用示例 ``` 🚀 正在初始化企业知识库系统... Embedding 模型: qwen3-embedding:0.6b (Ollama) LLM 模式: 本地 Ollama 📄 正在加载 PDF 文档... ✂️ 正在进行文档切片... ✅ 文档处理完成,共切分为 6 个片段。 🧠 正在连接 Ollama 并加载 Embedding 模型... ✅ Ollama 连接成功!向量维度: 1024 💾 正在构建/加载向量数据库... ✅ 向量库构建完成! 🤖 正在连接本地 Ollama LLM: qwen2.5:0.5b ... ✅ 系统就绪! ================================================== 💬 请输入问题 (输入 'q' 退出): 公司的请假制度是什么? ⏳ 正在结合本地知识库思考... 🤖 AI 回答: 根据文档记载,公司的请假制度如下: 1. 年假:员工入职满一年后享有5天年假... 2. 病假:需提供医院证明... 信息来源:员工手册第3章第2节 ``` ## 项目结构 ``` DeepSeek_KnowledgeBase/ ├── main.py # 主程序入口 ├── requirements.txt # Python 依赖 ├── company_handbook.pdf # 示例知识库文档 ├── chroma_db/ # 向量数据库存储目录 ├── .venv/ # Python 虚拟环境 └── README.md # 项目说明文档 ``` ## 常见问题 ### Q: Ollama 连接失败? 确保 Ollama 服务正在运行: ```bash # 检查 Ollama 状态 ollama list # 如果没有运行,启动 Ollama ollama serve ``` ### Q: 如何使用其他模型? 修改配置即可: ```python # 使用更大的模型(效果更好,需要更多资源) OLLAMA_LLM_MODEL = "qwen2.5:7b" # 使用其他 Embedding 模型 OLLAMA_EMBEDDING_MODEL = "nomic-embed-text" ``` ### Q: 如何使用 DeepSeek API? 1. 创建 `.env` 文件: ```env DEEPSEEK_API_KEY=your_api_key_here ``` 2. 修改配置: ```python USE_LOCAL_LLM = False ``` ### Q: 向量数据库存储在哪里? 向量数据库持久化存储在 `./chroma_db` 目录,重启后数据不会丢失。如需重建,删除该目录即可。 ## 扩展开发 ### 支持更多文档格式 ```python from langchain_community.document_loaders import ( PyPDFLoader, # PDF Docx2txtLoader, # Word UnstructuredMarkdownLoader, # Markdown TextLoader, # 纯文本 ) # 根据文件类型选择加载器 loader = Docx2txtLoader("document.docx") ``` ### 添加对话历史记忆 ```python from langchain.chains import create_history_aware_retriever from langchain_community.chat_message_histories import ChatMessageHistory # 实现多轮对话记忆 ``` ## 参考资料 - [LangChain 官方文档](https://python.langchain.com/) - [Ollama 官网](https://ollama.ai/) - [ChromaDB 文档](https://www.trychroma.com/) - [RAG 原理详解](https://blog.csdn.net/m0_46165586/article/details/158773528) ## License MIT License