48-企业级知识库项目:项目介绍、多模态RAG流程梳理
前言
AI时代,知识库已经是非常普遍的内部基建项目了。
员工日常工作中积累了大量的业务资料、操作经验、问题解决方案和流程规范。
但这些宝贵的知识资产,大多是零散保存、分散在各处的,没有统一归集。
传统资料查找效率极低,单纯手动翻找文档、或者关键词检索都十分局限,遇到问题只能反复问人、反复试错,耽误工作进度。
搭载AI能力的知识库,支持语义检索、AI一键问答,看懂需求就能匹配对应资料、直接给出解决方案。
极大缩短查询和答疑时间,彻底解决传统查资料繁琐低效的问题,全方位提升工作效率。
所以,搭建统一的企业知识库,是非常有必要的基础建设。
介绍知识库

核心是文档管理、AI问答、知识图谱这些。
文档会做权限管理,只有有权限的文档可以检索出来用来生成回答。

我们会支持这些类型文档的检索:
文本类文件
- 支持格式:PDF、DOCX, DOC、XLSX、 XLS、 PPTX、 PPT、 TXT、 MD、 CSV、JSON
- 支持输入网页URL,系统自动抓取页面正文并导入知识库归档检索
图片文件(JPG、PNG)
- 上传后通过视觉嵌入模型提取图像特征,同时调用大模型OCR/图像理解生成图片描述文本
- 支持双向多模态检索:文字搜图片、本地上传图片以图搜图。
音频文件(MP3、WAV、M4A)
- 上传自动执行ASR语音转文字,将完整转录文本归档,依托文本内容参与检索。
视频文件(MP4)
- 用视频理解模型做全维度内容解析,同步提取音频文字与画面视觉信息,整合生成完整文本内容用于检索,并输出视频多模态向量,实现图文视频跨模态检索。

简历上
学完之后,你可以在简历里加上这个项目,类似这样
项目描述
企业内部知识碎片化严重,跨部门资料无统一归集渠道,传统文档检索效率低下。为盘活企业各类知识资产,集中管理高效复用,因此主导开发了企业级知识库管理平台。包括文档管理、AI问答、全文搜索、知识图谱、用户权限控制、数据统计等功能。
技术栈
LangChain, LangGraph, DeepAgents, Vercel AI SDK, Nest, Redis.PostgreSQL, Redis, ElasticSearch, Neo4j, MinlO, Docker Compose, MemO.LangSmith, LangFuse 等
项目亮点
- 向量+关键词(PGVector+ElasticSearch)实现混合检索,用RRF融合和Reranker模型重排,实现多路召回,提高检索准确率
- 利用Neo4j构建知识图谱,通过LLM抽取文档实体、关系自动存入图数据库。用户问题会用LLM抽取实体,执行多跳检索,把推理链路和RAG的结果融合送入Prompt上下文,提升复杂业务问题回答的完整性与逻辑性
- 支持PDF、Word、TXT等图文格式文档,支持图片、音视频等多媒体文件,统一解析为Markdown文档,会自动提取文档中的图片上传到Minio,并替换文档中的图片为url。图片基于OCR实现解析、音频基于ASR、视频基于分片+视频理解模型解析成文档。
- Redis实现短期记忆存储(滑动窗口+摘要),Mem0°实现长期记忆分层存储,包括用户级、会话级记忆
- 基于RBAC模型搭建分层权限管控体系,落地页面、菜单、按钮三级细粒度权限拦截;同时联动检索逻辑做数据权限隔离,依据当前用户角色过滤文档池,不同人员仅可查询自身权限范围内的知识资料,实现功能权限与数据权限双重隔离,满足多部门资料分级保密需求。
- 基于 LangGraph实现Agentic RAG架构,Agent 自主判别问题复杂度,动态决策调用混合检索、图谱推理等工具,灵活适配多维度复杂业务提问,规避固定检索流程带来的回答局限性
- 基于 ASR+流式 TTS实现语音交互,SSE实现文字流式输出,WebSocket+流式TTS实现语音的同步流式播放。
- 本地开发用LangSmith调试,线上用LangFuse 收集数据,实现全链路观测,记录检索耗时、LLM调用成本、问答召回来源、模型报错日志等。搭建RAG和Agent 效果量化评估机制,自动跑实验来评估检索效果。

按照这个来写简历,就是一个比较能打的Agent项目了。
数据库、中间件
项目会涉及到一些数据库、中间件用于存储数据:
PostgreSQL(带 PGVector 向量扩展)
存储结构化业务数据+文档分片向量
- 用户、角色、权限全量RBAC数据:user 用户表、role角色表、permission权限表、department 部门表等
- 文档、分片:document 文档表、doc_chunk文档分片表
- AI问答会话历史:chat session 对话会话表、chat_message 问答消息记录表
ElasticSearch(全文关键词检索引擎)
文档分片全文索引库,负责关键词召回、全文模糊检索
Neo4j(知识图谱图数据库)
存储实体、关系,支撑多跳图谱推理检索
Redis(缓存中间件):
缓存、临时数据等
- 短期记忆:滑动窗口、近期对话摘要
- 全局缓存数据:用户权限等
- 排行榜:热门文档等
MinlO(对象存储)
存储全部静态文件资源
- 用户上传原始文件:PDF、Word、PPT、图片、音频、视频源文件
- 文档解析资源:解析后内嵌图片
Mem0(长期记忆存储)
- 会话级长期记忆:单次对话上下文
- 用户级长期记忆:用户个人偏好、检索偏好、业务角色习惯
总结

多媒体文档上传解析全流程
用户上传PDF/图片/音频/视频一Redis异步任务队列消费
- 原始文件存入MinlO;
- 文本文件直接提取内容转为MD;图片调用视觉嵌入+大模型OCR生成图文描述;音频ASR转写文本;视频理解模型提取音频+帧画面整合MD;
- 文档内嵌图片、视频帧图上传MinlO,MD内替换为资源URL;
- MD原文存入PostgreSQL document表;自动切片生成 chunk 存入PGVector 向量表;
- 分片文本同步写入ElasticSearch建立关键词倒排索引;
- LLM自动抽取分片内实体、关系,写入Neo4j构建知识图谱;
- 任务状态更新至document_task表,前端实时展示进度。

这里文档上传后的处理耗时比较高,所以我们放到Redis任务队列里,异步来做。
加一个任务表来记录进度,前端可以从这个表中查询任务状态。
Agent问答全流程
用户输入自然语言提问一鉴权校验Redis缓存用户权限白名单
- LangGraph Agent自主判断问题复杂度:简单问题仅调用混合检索,复杂业务问题额外触发图谱多跳推理;
- 多路召回:ES关键词召回+PGVector 向量召回;RRF融合得分,Reranker 重排;
- LLM抽取问题实体,查询Neo4j执行多跳关联检索,获取实体推理链路;
- 过滤所有用户无权限文档分片;
- Redis读取短期滑动窗口对话摘要,Mem0拉取用户/会话长期记忆;
- 检索分片、图谱推理结果、分层记忆统一拼接至Prompt上下文;
- LLM生成回答,SSE流式推送文字;可选 TTS生成语音WebSocket 同步播放;
- 全链路日志上报LangFuse,记录耗时、Token消耗、召回分片、异常报错;
- 问答记录持久化存入chat_session/chat_message 表。

权限白名单就是当前登录用户能访问的全部文件夹、文档ID集合,放在redis里。
我们检索出文档后,会过滤掉无权限的文档,再来生成回答。
总结
AI时代,企业知识分散、传统检索低效,自研企业级AI知识库是必备数字化基建。
我们大概画了下原型图、梳理了下项目需求
我们会支持多模态的文档检索,文本、图片、音频、视频统一解析为Markdown入库,存到向量数据库、ES里做语义和全文检索
我们梳理了下这个项目怎么写简历,后面也是围绕这个来学
向量+关键词混合检索、知识图谱的推理式多跳检索、多模态文档解析、redis短期记忆+ memO 长期记忆、RBAC 文档权限控制、Agentic RAG架构、LangSmith +LangFuse监测评估体系
然后分别梳理下了下各种存储组件:PostgreSQL、ElasticSearch、Neo4j、Redis、MinlO、Mem0
之后梳理了下核心的文档上传链路、Agent问答链路:
文档上传后,原始文件存入MinlO,内容转成markdown,分块后存到向量库+ES。
检索的时候会做意图识别,普通的问题走向量+关键词混合检索+重排,复杂的问题结合知识图谱做多跳推理,大模型回答后,还可以做语音流式播放。
我们的业务需求比较复杂,Dify这种知识库不合适,需要自研。
这节大概理清了我们要做的项目,下节正式进入开发。