需完成文档格式统一、分块向量化、RAG检索注入及权限隔离四步:先用pdfplumber/OCR等提取纯文本并UTF-8保存;再以RecursiveCharacterTextSplitter分块,bge-small-zh-v1.5嵌入后存入FAISS;接着通过vLLM部署DeepSeek,RAG中间件动态拼接检索片段构造prompt;最后通过Docker网络隔离、FAISS路径权限控制与Basic Auth实现安全防护。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

如果您希望让DeepSeek模型基于您个人的文档进行知识学习与问答,但缺乏本地知识库构建的具体操作路径,则可能是由于文档格式处理、向量化流程或检索配置未正确完成。以下是实现此目标的步骤:
一、准备文档并统一格式
本地知识库依赖结构清晰、内容可解析的文本数据,原始文档需转换为模型可读的纯文本形态,避免排版干扰和编码错误。
1、将PDF文件使用pdfplumber或PyMuPDF提取文字,保存为UTF-8编码的.txt文件。
2、对Word文档(.docx)调用python-docx库逐段读取正文,过滤页眉页脚及表格非文本内容。
3、扫描类PDF先通过OCR工具(如PaddleOCR)识别文字,再校验识别结果中的乱码与断行问题。
4、合并所有文档至单一目录,命名不含空格与特殊符号,例如“合同_2024.txt”“产品手册_v2.txt”。
二、分块与向量化处理
长文档需切分为语义连贯的片段,再经嵌入模型生成向量,以便后续相似度检索,分块粒度直接影响问答准确性。
1、使用LangChain的RecursiveCharacterTextSplitter,设置chunk_size=512,chunk_overlap=64。
2、加载本地部署的bge-small-zh-v1.5嵌入模型,对每个文本块执行embedding生成。
3、将向量与原始文本块元数据(文件名、起始位置)一同存入FAISS索引文件faiss_index.bin。
4、验证索引:输入“付款方式”,检索top-3相似块,确认返回内容来自《销售合同》而非无关文档。
三、对接DeepSeek推理服务
需绕过默认上下文限制,将检索结果动态注入模型输入,使DeepSeek在生成时聚焦于您的私有知识片段。
1、启动DeepSeek-Coder-33B-instruct的vLLM服务,启用--enable-lora参数预留微调接口。
2、编写RAG中间件:接收用户问题→查询FAISS索引→拼接前2个高相关文本块→构造system prompt:“你仅能依据以下【知识片段】回答,禁止编造。”
3、将拼接后的prompt提交至/v1/completions接口,设置max_tokens=1024,temperature=0.1。
4、响应中若出现“根据提供的资料”“文中提到”等表述,说明知识注入链路已生效;若返回“我不知道”且检索块非空,则需检查prompt模板中知识片段是否被截断。
四、权限与隔离控制
私密文档需防止跨会话泄露与未授权访问,本地部署环境必须切断外部网络回传并限定数据作用域。
1、在Docker运行命令中添加--network none参数,禁用容器外联能力。
2、FAISS索引文件存储于/tmp/kb_storage/路径,启动容器时挂载该目录并设置chmod 700权限。
3、API服务启用Basic Auth,用户名密码硬编码于config.yaml,不通过环境变量暴露。
4、每次会话结束后自动清空内存中的文本块缓存,禁止将原始文档内容写入日志文件。

















