Django 搭建 AI 本地知识库:文档上传、向量检索与智能问答
Django 搭建 AI 本地知识库文档上传、向量检索与智能问答把 PDF 上传到服务器再调用一次大模型并不等于拥有“本地知识库”。一个真正可用的 Django 知识库至少要解决六件事文件归属、文本切块、向量生成、相似度检索、权限过滤和答案引用。本文以 PostgreSQL、pgvector 和 Django ORM 为主线并把方案放进本地 RuyiDjangoCRM 的文档与多租户搜索边界中验证。最重要的结论是先确定用户能看哪些文档再在可见集合内做向量排序不能先搜全库再补权限。一条完整的知识库链路上传后的原始文件仍然要保留便于重新解析和审计真正用于检索的是切块后的文本。每个文本块至少记录原文档主键和组织主键页码或章节位置原始文本嵌入模型名称与版本固定维度的向量内容哈希避免重复入库。安装扩展pipinstallpgvector psycopg[binary]在 PostgreSQL 中启用向量类型CREATEEXTENSIONIFNOTEXISTSvector;用 Django 模型保存文本块和向量fromdjango.dbimportmodelsfrompgvector.djangoimportHnswIndex,VectorFieldclassKnowledgeChunk(models.Model):org_idmodels.UUIDField(db_indexTrue)documentmodels.ForeignKey(common.Document,on_deletemodels.CASCADE)positionmodels.PositiveIntegerField()contentmodels.TextField()content_hashmodels.CharField(max_length64,db_indexTrue)embedding_modelmodels.CharField(max_length80)embeddingVectorField(dimensions1536)classMeta:constraints[models.UniqueConstraint(fields[document,content_hash],nameuq_document_chunk_hash,)]indexes[HnswIndex(namechunk_embedding_hnsw,fields[embedding],m16,ef_construction64,opclasses[vector_cosine_ops],)]向量维度必须和嵌入模型一致。换模型时不要悄悄覆盖旧向量应记录模型版本并安排重建否则同一列里混入不同向量空间排序结果没有意义。切块不是越碎越好固定字符数切块适合做最小实验但生产系统应优先保留标题、段落、列表和代码块等结构。块太大召回内容噪声多块太小语义被截断还会增加向量数量和成本。defchunk_text(text:str,size:int800,overlap:int120):start0whilestartlen(text):yieldtext[start:startsize]startsize-overlap这个函数足以验证流程但面对 Markdown、PDF 表格和代码文档时应替换为结构化解析器并把页码或标题锚点一起保存。先做权限过滤再做向量排序RuyiDjangoCRM 的真实文档查询会同时检查组织、创建者、被分享用户和团队。向量检索必须复用同一套可见性条件fromdjango.db.modelsimportQfrompgvector.djangoimportCosineDistancedefsearch_chunks(profile,query_vector,limit5):visible_documentsDocument.objects.filter(orgprofile.org,statusactive,).filter(Q(created_byprofile.user)|Q(shared_toprofile)|Q(teams__inprofile.teams.all()))return(KnowledgeChunk.objects.filter(org_idprofile.org_id,document__invisible_documents).annotate(distanceCosineDistance(embedding,query_vector)).order_by(distance)[:limit])如果先从全库取前 20 个相似块再在 Python 中删除无权访问的结果既可能泄露标题、分数和片段也可能导致合法结果被越权结果挤出前 20 名。权限条件必须进入数据库查询本身。管理员分支也要显式处理。不要为了“方便”把所有知识库查询统一成管理员视角更不能依赖前端隐藏结果。让回答带上可核验引用检索结果不要只拼正文还要给每一块分配稳定引用编号context\n\n.join(f[{i}]{chunk.document.title}/ 片段{chunk.position}\n{chunk.content}fori,chunkinenumerate(chunks,start1))promptf 只依据下面资料回答。每个关键结论使用 [1] 这样的编号引用 资料不足时明确说不知道不要补写不存在的事实。{context}引用不是装饰。服务端还应保存本次回答命中的块主键、距离和文档版本以便用户点击原文也便于后续复盘错误召回。本地验证暴露出的两个误区我用一个可重复的关键词向量实验验证了上传后切成 3 块、余弦排序、返回引用片段的完整链路相关 11 项单元测试全部通过。这个实验故意不冒充真实语义模型关键词向量只能证明检索管线正确不能证明语义质量。第二个误区是只测“能搜到”。RuyiDjangoCRM 的搜索测试还验证了跨组织隔离、普通用户只能看到自己创建或被分配的对象以及组织内知识条目的可见规则。AI 知识库接入后这些测试应继续存在并增加“越权向量即使更相似也不能返回”的回归用例。结论一个可靠的本地知识库不是模型回答得像不像人而是每条材料从哪里来、谁有权看到、命中了哪一段、换模型后如何重建都能被解释和复现。参考资料pgvector 官方项目pgvector-python 的 Django 用法

相关新闻

AI因材施教方案落地失败的9大隐形陷阱(一线校企联合复盘报告·仅限本周开放)

AI因材施教方案落地失败的9大隐形陷阱(一线校企联合复盘报告·仅限本周开放)

更多请点击: https://kaifayun.com 第一章:AI因材施教方案落地失败的9大隐形陷阱(一线校企联合复盘报告仅限本周开放) 在超过37所中小学与12家教育科技企业的联合实践复盘中,83%的AI教学系统在部署6个月内出现显著效果…

2026/10/13 17:13:10 阅读更多 →
《鸣潮》3.5版图形渲染问题修复:MDO异常与远景贴图错误解决方案

《鸣潮》3.5版图形渲染问题修复:MDO异常与远景贴图错误解决方案

这次我们来看一个针对《鸣潮》3.5版本特定图形问题的修复工具。如果你在游戏中遇到了MDO显示异常、远距离贴图错误或模型加载闪烁等问题,这个工具可能正是你需要的。它不是外挂,也不是修改游戏核心文件,而是通过调整游戏配置文件或注入特定图…

2026/10/11 8:33:43 阅读更多 →
智谱AutoClaw一键部署:1分钟搞定AI Agent与飞书集成

智谱AutoClaw一键部署:1分钟搞定AI Agent与飞书集成

1. 项目概述:从“高门槛”到“一键即用”的转变 如果你最近关注AI Agent领域,大概率被“OpenClaw”和“AutoClaw”这两个词刷屏了。它们代表了当前最前沿的AI自动化工作流构建平台,简单来说,就是能让你的AI助手(Agent…

2026/10/13 1:20:38 阅读更多 →

最新新闻

Codex国内API配置指南:环境变量、模型映射与网关接入实战

Codex国内API配置指南:环境变量、模型映射与网关接入实战

简介:面向国内 Windows 开发者使用 OpenAI Codex 编码工具的需求,这份代码包提供了一条从环境准备到 API 联通验证的完整实践路径。资源先给出 Node.js 与 npm 的检查方法,并用一键安装脚本降低新手搭建门槛;随后梳理 Codex CLI 的…

2026/10/14 4:01:42 阅读更多 →
PyTorch深度解析:张量契约、autograd引擎与显存博弈

PyTorch深度解析:张量契约、autograd引擎与显存博弈

1. 这不是“学PyTorch”,而是重建你对深度学习工程的认知很多人点开一篇叫“pytorch”的文章,下意识以为要读教程、抄代码、跑通MNIST——结果三小时后卡在CUDA out of memory,五小时后被autograd的梯度计算路径绕晕,七小时后发现…

2026/10/14 4:01:42 阅读更多 →
roLabelImg旋转框标注工具实战:从安装到格式转换全指南

roLabelImg旋转框标注工具实战:从安装到格式转换全指南

简介:roLabelImg 是一款面向目标检测数据生产的旋转框标注工具源码,专为遥感影像、OCR 文字检测等需贴合旋转目标的场景设计,适合计算机视觉研究者、算法工程师及标注工具二次开发人员使用。与普通矩形标注不同,该工具支持任意角度…

2026/10/14 4:01:42 阅读更多 →
自定义Emoji实现指南:从短代码映射到前端渲染

自定义Emoji实现指南:从短代码映射到前端渲染

如果你负责过一个带聊天功能的Web应用,大概率收到过这类需求:用户想把一张自制表情包图片,当作Emoji一样发出去。我最近在某协作平台重做了这个功能,从上传、解析到渲染,踩了一串坑,也把整套实现思路理顺了…

2026/10/14 4:01:42 阅读更多 →
内蒙古SHP数据清洗与道路网拓扑处理实战指南

内蒙古SHP数据清洗与道路网拓扑处理实战指南

简介:这份资源是2022年7月整理的内蒙古自治区GIS矢量数据集,面向地理信息研究者、交通规划人员、区域经济分析者及高校师生,用于行政区划研究、路网分析与空间制图等场景。压缩包约26.32MB,内含省级、地市、区县三级行政边界&…

2026/10/14 4:01:42 阅读更多 →
办公设备管理系统OAMS源码实战:从台账混乱到扫码即用

办公设备管理系统OAMS源码实战:从台账混乱到扫码即用

简介:办公设备管理系统OAMS是一套面向企事业单位设备管理员与信息化开发者的全生命周期管理解决方案,覆盖采购、入库、领用、维修、报废等核心环节,适合需要落地资产台账、审批流程与统计报表的Java Web项目学习与二次开发。资源包共451个文件…

2026/10/14 4:00:41 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/13 16:22:04 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 22:01:27 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →