ragflow、langchain+chroma、llamaindex和fastapi四种方式可分别实现deepseek知识库的零代码搭建、手动部署、快速集成与rest服务封装。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜

一、使用RAGFlow零代码搭建DeepSeek知识库
RAGFlow是一款面向非技术用户的开源RAG引擎,通过深度文档理解能力自动解析PDF、Word、Excel、PPT等多格式文件,并构建可检索的知识向量库。其内置可视化工作流编排与引用溯源功能,使DeepSeek模型能基于真实文档片段生成答案,显著降低幻觉风险。
1、访问RAGFlow官方GitHub仓库或Docker Hub,拉取最新稳定镜像:docker pull ragflow/ragflow:latest。
2、执行一键启动命令,绑定本地端口:docker run -d -p 3000:80 -v $(pwd)/data:/app/data ragflow/ragflow:latest。
3、浏览器打开 http://localhost:3000 ,注册账号后进入控制台,点击“新建知识库”,输入名称并选择“DeepSeek-R1”作为默认LLM。
4、上传本地文档(单次支持≤500MB),系统自动完成OCR识别、表格提取、语义分块及向量化,状态栏显示“索引完成”即表示知识库就绪。
5、在对话界面输入问题,如“请根据《用户手册V2.3》第5章说明重置密码的步骤”,系统将精准定位原文段落并调用DeepSeek生成结构化回复。
二、基于LangChain+Chroma手动部署DeepSeek RAG
该方法适用于需完全掌控数据流向与检索逻辑的开发者,通过Python脚本定制文档解析策略、嵌入模型选型及检索相似度阈值,实现对DeepSeek推理输入内容的精细调控。
1、创建conda虚拟环境并安装核心依赖:conda create -n ds-rag python=3.9 && conda activate ds-rag && pip install langchain chromadb transformers torch sentence-transformers。
2、下载DeepSeek-R1-7B量化模型至本地,使用transformers加载为pipeline:from transformers import AutoTokenizer, AutoModelForCausalLM; model = AutoModelForCausalLM.from_pretrained("./deepseek-r1-7b-q4_k_m")。
3、初始化Chroma向量数据库,指定持久化路径:import chromadb; client = chromadb.PersistentClient(path="./chroma_db")。
4、加载PDF文档并切分为512字符滑动窗口块,调用bge-m3中文嵌入模型生成向量:from sentence_transformers import SentenceTransformer; embedder = SentenceTransformer("BAAI/bge-m3"); embeddings = embedder.encode(chunks)。
5、将文档块及其向量批量写入Chroma集合,设置metadata标记来源文件名与页码,便于后续溯源。
三、利用LlamaIndex快速集成DeepSeek与私有数据源
LlamaIndex专为RAG优化设计,提供简洁API抽象层,支持从数据库、API、本地文件系统等多种数据源同步构建索引,并原生兼容DeepSeek模型的tokenizer与generation参数配置。
1、安装LlamaIndex及配套组件:pip install llama-index llama-index-llms-deepseek llama-index-embeddings-sentence-transformers。
2、配置DeepSeek LLM实例,显式指定base_url指向本地Ollama服务或HuggingFace pipeline接口:from llama_index.llms.deepseek import DeepSeek; llm = DeepSeek(model="deepseek-r1-7b", api_base="http://localhost:11434/v1")。
3、定义嵌入模型,选用适配中文的jina-embeddings-v2-base-zh:from llama_index.embeddings.jina import JinaEmbedding; embed_model = JinaEmbedding(model_name="jina-embeddings-v2-base-zh")。
4、加载本地目录下所有txt与md文件,构建Document对象列表,并调用VectorStoreIndex.from_documents()触发向量化与索引构建。
5、创建查询引擎,启用HyDE(Hypothetical Document Embeddings)增强检索,执行自然语言提问即可获得融合知识库内容的回答。
四、通过FastAPI封装DeepSeek RAG为REST服务
将RAG系统封装为标准HTTP接口,便于前端应用、企业OA或低代码平台直接调用,支持JSON请求体传入问题与知识库ID,返回带引用锚点的答案及匹配文档片段。
1、新建main.py,导入FastAPI、Pydantic模型及前述Chroma/LangChain模块:from fastapi import FastAPI, Body; from pydantic import BaseModel。
2、定义请求体模型,包含question(str)、kb_id(str)、top_k(int,默认3)字段:class QueryRequest(BaseModel): question: str; kb_id: str; top_k: int = 3。
3、初始化全局Chroma客户端与DeepSeek tokenizer,在startup事件中预加载常用知识库索引。
4、声明POST接口/v1/query,接收QueryRequest对象,执行向量检索后拼接context,构造prompt模板:f"你是一名专业助手,请严格依据以下资料回答问题:{retrieved_texts}。问题:{req.question}"。
5、调用model.generate()获取响应,解析输出并以JSON格式返回answer、references(含文件名与匹配位置)及retrieval_score数组。











