一、项目背景
企业知识碎片化严重、传统检索低效,自研 AI 智能知识库统一沉淀业务文档,基于 Agentic RAG 架构,引入多模态解析、混合检索、知识图谱多跳推理及精细化权限管控,将企业知识资产转化为高效生产力。
二、支持多模态文件
- 文本:支持 PDF、DOCX、XLSX、PPTX、TXT、MD、CSV、JSON 等格式,URL 自动抓取网页正文,统一转 MD 建立索引
- 图片(JPG/PNG):视觉嵌入模型 + OCR 图文解析,支持以图搜图
- 音频(MP3/WAV/M4A):自动 ASR 语音转文本后检索
- 视频(MP4):视频理解模型解析内容(提取音频文字、画面视觉信息),输出多模态向量,支持图文视频跨模态检索。
总之,全类型覆盖(文本/图/音/视频)→ 统一语义检索 + 跨模态搜索。
三、项目整体描述
- 多模态文档管理:支持多格式文件上传,提供目录/标签管理、版本控制以及部门/角色/用户级的强权限拦截。
- 智能搜索:提供类似搜索引擎的体验,支持文件类型、更新时间、文档分类、权限范围的高级筛选,实现高亮匹配文本。
- AI 流式问答:支持对话式交互,智能理解用户意图,生成带引用来源文档标签的精准回答,并提供推荐相关问题。
- 知识图谱可视化:通过 LLM 抽取为“实体-关系”网络,直观展示文档关联、技术架构、业务分类等多维度的图谱生态。
四、技术栈
- 后端开发骨架:NestJS / Node.js
- Agent / RAG 框架:LangChain、LangGraph、DeepAgents、Vercel AI SDK
- 数据存储 / 检索:PostgreSQL (PGVector)、ElasticSearch、Neo4j、Redis、MinIO、Mem0
- 观测运维 / 部署:LangFuse、LangSmith、Docker Compose
五、核心项目亮点
- Agentic RAG 动态路由:基于 LangGraph 实现智能 Agent 架构。Agent 自主判别用户问题复杂度,动态调度向量检索、关键词检索、知识图谱推理等工具,规避固定检索流程带来的回答局限,适配各类复杂业务提问。
- 多路召回与重排机制:采用 PGVector 向量检索 + ElasticSearch 关键词检索的多路召回方案。通过 RRF 算法融合结果、Reranker 重排模型优化排序,大幅提升检索准确率。
- 知识图谱多跳推理:利用 LLM 自动抽取文档实体与关系存入 Neo4j。针对跨业务、跨周期的多文档联动提问, Agent 提取图谱多跳推理链路与 RAG 检索结果送入 Prompt 上下文,强化复杂业务回答的完整性、逻辑性。
- 多模态文档统一解析:构建 Redis 异步任务队列。支持PDF/Word等常规图文及动态网页 URL 抓取。针对图片依赖OCR、音频依赖ASR、视频采用分片+视频大模型完成内容提取,统一格式化为 Markdown 文档,实现以图搜图等多模态跨模态检索。
- RBAC 双层权限隔离:基于 RBAC 权限模型搭建分级管控体系,实现 功能权限 + 数据权限 双重隔离;系统根据当前登录用户角色过滤可访问文档池,不同岗位、部门人员仅能检索权限范围内资料,适配企业分级保密合规要求。
- 分层记忆机制与全链路交互:集成 Redis 短期记忆(滑动窗口+对话摘要)与 Mem0 分层长期记忆(用户偏好、会话习惯)。交互端采用 SSE 流式输出文字回答,WebSocket 与流式 TTS 推送实时语音。
- 全链路观测与RAG自动化评估:本地使用 LangSmith 调试链路;线上通过 LangFuse 采集全链路运行数据,记录检索耗时、LLM调用消耗、资料召回来源、模型异常日志等;内置自动化评测机制,批量实验量化评估RAG与Agent回答效果。
六、存储分工
- PostgreSQL(PGVector):存储业务数据与文档分片向量,涵盖RBAC权限、文档主表及分片向量、AI 对话会话与消息记录
- ElasticSearch:全文关键词检索,存储文档分片倒排索引,负责关键词召回与模糊检索。
- Neo4j:图数据库,存储实体与关系,支持多跳推理检索,解决复杂跨文档关联问答。
- Redis 缓存与异步任务,含对话记忆、滑动窗口摘要、用户权限、热点文档数据、任务队列、文档访问排行榜
- MinIO 对象存储,原始文件(PDF/Word/PPT/图片/音视频)及衍生资源(内嵌图片、视频帧截图)
- Mem0 分层存储用户偏好、跨会话上下文的长期记忆管理。
七、核心技术架构
- 文档处理流程
由于多媒体文件解析属于高耗时任务,系统采用 Redis 异步任务队列 机制,确保前端交互流畅无卡顿。
用户上传文件 → Redis异步任务队列 → 存储至MinIO → 多模态解析 → 索引分发 [用户上传文件] │ ▼ [Redis 异步任务队列] ──► 存储原始文件至 [MinIO] │ ├─► 文本类 (PDF/Word/TXT/Markdown/Excel/URL): 直接提取或动态抓取 ─► 统一转为 Markdown ├─► 图片类 (JPG/PNG): [视觉嵌入模型]提取特征 + [大模型 OCR 图文理解] ──► 图文描述 Markdown ├─► 音频类 (MP3/WAV): [ASR 语音转文字] ────────────────────────────► 转录文本 Markdown └─► 视频类 (MP4): [视频理解模型]画面抽帧 + 音频 ASR ────────────────► 整合多模态 Markdown │ ▼ [资源处理] 文档内嵌图片、视频帧 ──► 存入 MinIO ──► 替换 MD 中图片为 URL │ ▼ [索引分发] ├─► 原文存入 [PostgreSQL] (document 主表) ├─► 智能切片 (Chunk) ─► [PGVector] (向量索引) ├─► 文本同步 ─► [ElasticSearch] (倒排索引) ├─► [LLM 关系抽取] ─► [Neo4j] (实体关系图谱) └─► 更新任务状态至 document_task 表 ──► 前端实时轮询进度- Agentic Agent 智能问答流程
基于 LangGraph 驱动智能体,根据权限动态隔离数据,能自主判断问题的复杂度,灵活调度不同的检索策略。
用户提问 → 鉴权校验 → LangGraph意图路由 → 多路召回 → Reranker精排 → Prompt拼接 → 流式响应 [用户提问] │ ▼ [鉴权校验] ──► 读取 [Redis 权限白名单](合规隔离,越权过滤) │ ▼ [LangGraph Agent 意图路由] │ ├─► 简单问题 ──────────────► 走【混合检索】 └─► 复杂/关系型问题 ────► 触发【Neo4j 图谱推理】 │ ▼ [智能检索与精排] ├─► 多路召回:[ES 关键词召回] + [PGVector 向量语义召回] ├─► 混合精排:[RRF] 融合多路打分 ──► [Reranker 模型] 深度重排 ├─► Neo4j 多跳图谱推理:[LLM 提取实体] ──► 查询“实体-关系”推理链路 ├─► 记忆对齐:Redis【短期会话摘要】+ Mem0【用户/会话长期记忆偏好】 │ ▼ [大模型Prompt] ──► 拼接:重排分片 + 图谱推理结果 + 长期/短期记忆 │ ▼ [响应生成] ──► [SSE 流式文字输出] + [WebSocket 同步流式 TTS 语音播放] │ ▼ [日志与评估监控] ──► 全链路日志上报至 [LangFuse](记录耗时/Token成本/召回分片/异常捕获) │ ▼ [问答记录] ──► 写入 PostgreSQL (chat_session / chat_message 表)八、权限机制
系统采用数据级权限隔离:当前登录用户可访问的全部文档ID集合预加载存入Redis;检索完成后,自动过滤用户无访问权限的文档,仅使用有权限资料生成AI回答。