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/8/3 3:05:12 阅读更多 →
《鸣潮》3.5版图形渲染问题修复:MDO异常与远景贴图错误解决方案

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

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

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

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

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

2026/8/3 3:04:12 阅读更多 →

最新新闻

Java序列化原理与应用实战指南

Java序列化原理与应用实战指南

1. 序列化基础概念解析 Serializable(序列化)是编程领域中一个看似简单却暗藏玄机的核心概念。第一次接触这个概念时,我误以为它只是简单地把对象转成字节流,直到在分布式系统中踩了无数坑才真正理解其重要性。 序列化本质上是一…

2026/8/4 13:32:56 阅读更多 →
思源宋体TTF完整指南:7个字重免费中文字体的快速安装与专业应用

思源宋体TTF完整指南:7个字重免费中文字体的快速安装与专业应用

思源宋体TTF完整指南:7个字重免费中文字体的快速安装与专业应用 【免费下载链接】source-han-serif-ttf Source Han Serif TTF 项目地址: https://gitcode.com/gh_mirrors/so/source-han-serif-ttf 思源宋体TTF是一款完全免费的高质量开源中文字体&#xff0…

2026/8/4 13:32:56 阅读更多 →
Skill 学习篇(五)| 社区技能包-mattpocock/skills 专篇

Skill 学习篇(五)| 社区技能包-mattpocock/skills 专篇

Skill 学习篇(五)| 社区技能包-mattpocock/skills 专篇 一、是什么二、基本信息三、核心能力3.1 需求对齐与方案校验:grill-me / grill-with-docs3.2 规格与任务拆解3.3 工程化编码执行3.4 结构化故障诊断3.5 代码架构治理3.6 交付质量兜底3.…

2026/8/4 13:32:55 阅读更多 →
MidiEditor:跨平台开源MIDI编辑与可视化制作方案

MidiEditor:跨平台开源MIDI编辑与可视化制作方案

MidiEditor:跨平台开源MIDI编辑与可视化制作方案 【免费下载链接】midieditor Provides an interface to edit, record, and play Midi data 项目地址: https://gitcode.com/gh_mirrors/mi/midieditor MidiEditor是一款基于Qt框架开发的开源跨平台MIDI编辑工…

2026/8/4 13:32:55 阅读更多 →
如何让AI成为你的2048游戏大师:终极自动游戏配置指南

如何让AI成为你的2048游戏大师:终极自动游戏配置指南

如何让AI成为你的2048游戏大师:终极自动游戏配置指南 【免费下载链接】2048-ai AI for the 2048 game 项目地址: https://gitcode.com/gh_mirrors/20/2048-ai 想让你的2048游戏分数突破天际吗?厌倦了手动滑动方块却总是卡在1024或2048&#xff1f…

2026/8/4 13:32:55 阅读更多 →
AI音频工具实战指南:从环境配置到批量处理的完整落地流程

AI音频工具实战指南:从环境配置到批量处理的完整落地流程

这类工具最值得先看的不是功能列表,而是能不能在普通环境里稳定跑起来。我一般会先确认它到底解决的是转写、配音还是字幕生成问题,然后看低显存环境能不能跑通,最后再处理批量任务和输出质量。下面按实际落地顺序拆一遍。 1. 先确认它到底…

2026/8/4 13:31:55 阅读更多 →

日新闻

AI Agent白手起家26: 使用标准事件驱动大模型实践

AI Agent白手起家26: 使用标准事件驱动大模型实践

纲要 练习目标:掌握大模型标准事件的调用回顾 LangChain 中的核心标准事件 invokestreambatchastream_eventswith_structured_output 环境准备实战代码:多种事件调用对比 同步调用与流式输出批量处理异步事件流监听结构化输出 运行说明与预期结果总结与扩…

2026/8/4 0:00:40 阅读更多 →
dealsea是什么?跨境卖家必知的美国deal站入门指南

dealsea是什么?跨境卖家必知的美国deal站入门指南

说实话,第一次听说美国这个老牌折扣网站的跨境卖家,十个有八个会问同一个问题:这个平台到底是干嘛的?我见过一个做家居出口的朋友,他在亚马逊上月销二十万美金,却从来没用过它。我给他看了首页——一屏一屏…

2026/8/4 0:01:40 阅读更多 →
清华大学重磅EST:植物自导电闪蒸焦耳热600°C/2600°C两步法!稀土超积累植物秒级转化为CeO₂-石墨烯电催化剂!

清华大学重磅EST:植物自导电闪蒸焦耳热600°C/2600°C两步法!稀土超积累植物秒级转化为CeO₂-石墨烯电催化剂!

通讯作者:邓兵、刘建国通讯单位:清华大学DOI:https://doi.org/10.1021/acs.est.6c00603研究背景稀土元素(REEs)是清洁能源技术与电子器件不可或缺的核心原料,然而传统提取方式依赖能耗高、排放大的采矿与强…

2026/8/4 0:01:40 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/4 13:24:41 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/4 11:41:39 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/4 5:26:40 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/3 13:07:03 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/4 11:09:16 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/3 8:27:36 阅读更多 →