当前位置: 首页 > article >正文

系统整体设计方案

业务架构设计项目架构图业务流程设计文档向量整个流程从用户上传文档开始用户通过前端页面选择文档并设置相关的组织标签和可见信后系统开始接收文档。这个阶段的关键是建立文档的基本记录信息包括文件的Md5哈希值文件原始名文件大小上传用户等信息。系统会为每一个文档生成唯一标识并将这份文档的元素据信息存储到myq数据库中同时将原始文件保存在储系中。文档上传完成后系统进行分块处理阶段。这个阶段采用循环处理的方式逐个处理文档中的内容片段。首先系统会调用文件服务来读取初始文档然后使用Apache Tika等文档解析工具提取成文本内容。由于整个文档的通用内容比较长直接进行向量化处理会影响系统会将提取出的文档一定规则或单元每个文本都会确定义到文档中的位置在分块完成后系统会对生成的文本块进行合并和优化处理。这个步骤主要是为了确保本块的质量和完整性系统会检查相邻的文本块是否存在语义上的连续。如果某些块过短或者语义不完整会考虑相邻块进行合并同时系统还会筛选掉一些无意义的内容。比如页面页脚图片说明等确保每个文本块都有其价值的信息内容文本块准备就绪后系统开始进行向量化处理。这个阶段同样采用循环处理的方式逐个处理每个文本块系统会调用向量化服务将文本块的内容发送给向量模型进行向量转换。向量模型会将文本的内容转化为高精度的数学向量。这些向量能够表示文本的语义特征进行向量化服务在完成转换后会将生成的向量数据返回给系统。这个过程需要一定的时间特别是文档较大或文本块较多的时候因此系统采用了异步处理的方法来提高效率向量化完成后系统需要将生成的向量数据进行持久化存储。这个阶段涉及到两个存储系统的协同工作。首先系统会将向量数据连同相关的文本内容文档标识快序列号等信息一一同存储在ES中ES作为专业的搜索引擎不仅能够存储向量数据还能提供高效的向量相似度搜索功能。同时系统还会将文档的原数据信息更新到mysql数据库中。包括处理状态向量化完成时间确保数据一次性和完整性数据存储完成后ES会自动新增的向量数据构建索引。这个过程包括创建倒排索引用于关键词搜索以及构建向量索引用于语义相似度搜索。系统会根据预设的索引策略对文本进行分辨和副本设置确保搜索性和数据安全性。索引构建完成之后这些文档内容就可以为用户通过各种方式进行查询和检索在整个流程中系统还包含了完整的异常处理和监控机制。如果在任何一个环节出错比如文档解析失败向量化服务不可用存储系统异常等系统都会记录详细的错误信息并将错误信息除采取相应的处理策略可恢复的策略系统会自动进行调试不可恢复的错误系统会标记状态并通知管理员同时系统还未实时监控各个组件的运行状态的性能指标确保整个流程稳定性和高效性知识检索用户查询请求用户通过前端界面发起查询请求系统。首先接收到用户的自然语言并查询文本通过websocket实时传输给后端服务接着是查询预处理和向量化查询服务接收到用户的请求会根据用户的组织标签和权限数据确保后续检索符合权限控制。同时系统将查询的文本发给向量化服务进行向量化处理将自然语言转化为高维向量表示实现语义化检索的关键步骤然后是混合检索执行系统构建包含权限过滤条件的综合查询结合向量相似度检索和关键词匹配在ES中进行高效搜索。这种混合策略既保证了语义理解的准确性又兼顾关键词匹配的准确性然后是结果排序与权限过滤检索到的结果会进行严格的权限验证确保用户只能访问有限的知识内容系统根据相似度得分关键词匹配等多个维度对进行综合排序并按照topK参数返回最相关结果最后将结果展示给前端聊天助手首先用户通过web socket发送问题然后此问题传给后端接着系统调用知识库检索模块获取相关内容。首先系统会创建绘话然后到调用执行待权限过滤的混合解锁从ES中检索最相关的5条知识片段确保用户只能访问有限权限的内容然后是系统构建包含检索结果和历史对话的提示词系统通过从reis中获取的对话历史记录支持最近20条消息的上下文保持然后调用方法将检索到的知识片格式化为上下文信息每个片段限定在300字符内进行标记构建提示词既包含相关的知识背景又保证了对话的连贯性接下来就是调用大语言模型AP生成。回答将用户的问题构建的上下文和对话历史一起发送给大语言模型。这个过程采用流失调用方法能够实时接送AI的生成内容片段而不用等待生成完毕然后是通过web socket的流式返回生成内容。当大语言模型返回内容片段时系统通过方法将每个chunk包装为jason的格式并通过webs socket实时发送给前端最后是保存对话记录到数据库。当AI生成回答后系统通过后台现程检索到完成响应调用方法将完整的用户问题和AI回答保存到redis中。对话记录包含角色标识内容时间支持7天数据保留同时发送完成通知给前端前端接收后返回状态权限管理整个权限管理流程始于管理员通过中的接口创建和管理组织标签。管理员可以通过POST /api/admin/org-tags接口创建具有层级结构的组织标签支持设置标签 ID、名称、描述和父级标签所有标签信息都存储在定义的 organization_tags 表中。在组织标签创建完成后管理员通过 PUT /api/admin/users/{userId}/org-tags 接口为用户分配相应的组织标签。这些标签以逗号分隔的字符串形式存储在用户表的 org_tags 字段中。系统的一个重要特性是支持层级权限继承 负责计算用户的有效组织标签确保用户在拥有父级标签时自动获得所有子级标签的访问权限。为了提高查询性当用户上传文件时前端的提供了直观的权限设置界面。管理员可以通过级联选择器选择任意组织标签而普通用户只能选择自己被分配的组织标签。同时用户需要设置文件的可见性级别选择公开或私有。后端的在处理文件上传时会接收这些权限参数如果用户未指定组织标签系统会自动使用用户的主组织标签确保每个文件都有明确的权限归属。系统的权限控制核心在于这个过滤器统一处理所有 API 请求的权限验证。它采用了智能的权限判断逻辑公开资源直接允许访问默认组织或无组织标签的资源也允许访问私有标签资源仅限所有者和管理员访问其他情况则需要检查用户的有效组织标签是否与资源的组织标签匹配。在知识检索环节的searchWithPermission方法确保用户只能检索到有权限访问的内容。系统会获取用户的有效组织标签并在 Elasticsearch 查询中添加相应的权限过滤条件无论是向量搜索还是文本搜索都会应用这些权限限制。最终用户通过只能看到自己有权访问的文件和内容。这包括用户自己上传的文件、标记为公开的文件、用户所属组织标签的文件以及默认组织的文件。疑问解答为什么我们要进行两遍权线过滤根据参考资料中派聪明的业务流程设计在结果排序后再次进行权限过滤主要基于以下关键原因1. 双重保障机制预防性过滤检索阶段在HybridSearchService中系统通过 Elasticsearch 的查询条件如组织标签权限进行初步过滤减少无效数据量提升检索效率。兜底验证结果阶段即使检索阶段已过滤仍需对最终返回的候选结果进行二次权限验证确保100%安全。例如文档元数据更新后索引可能未及时同步权限变更复杂权限规则如层级继承在检索阶段可能存在边界漏洞。2. 动态权限控制用户权限可能实时变化如被移除组织标签但检索结果可能基于历史缓存数据。二次过滤能拦截这类动态权限变更后的越权访问。3. 最小权限原则系统设计要求用户仅访问最小必要权限范围内的内容。二次过滤确保返回的每个知识片段均严格匹配当前用户的权限状态避免因排序算法优化导致的权限泄露风险。4. 技术实现细节在SearchController中返回结果前通过OrgTagAuthorizationFilter再次校验每个候选结果的可见性如公开/私有标签、组织归属确保最终展示的内容无权限漏洞。总结二次权限过滤是安全架构的核心设计通过“预防兜底”双重机制确保在检索效率与数据安全间取得平衡满足企业级应用对权限控制的严苛要求。为什么原始文件不保存在mysql数据库中而是选择文件存储系统1. 存储效率与性能数据库限制MySQL等关系型数据库主要优化结构化数据存储大文件如PDF、视频存入BLOB字段会显著降低数据库性能增加查询延迟。文件系统优势MinIO等对象存储专为文件设计支持高吞吐量、分块传输和CDN加速适合处理大文件和海量数据。2. 扩展性与成本数据库扩展瓶颈MySQL存储空间有限且扩展成本高而文件存储系统如MinIO可弹性扩展按需付费更适合企业级海量文件场景。元数据分离MySQL仅存储文件元数据如MD5、文件名、大小保持数据库轻量化提升查询效率。3. 数据安全与备份独立备份策略文件存储系统提供独立的备份、加密和灾备方案如版本控制、跨区域复制避免数据库备份时因大文件拖慢整体流程。防篡改通过MD5哈希校验文件完整性文件存储系统提供不可篡改的存储特性。4. 系统架构解耦职责分离数据库专注结构化数据管理文件存储专注非结构化数据符合微服务设计原则降低模块耦合度。未来扩展性若需替换文件存储如迁移至云存储S3只需调整接口无需修改数据库结构。5. 开发与维护成本简化数据库操作避免大文件导致的数据库锁表、事务超时等问题减少运维复杂度。标准化接口文件存储系统提供统一API如PutObject/GetObject便于集成和第三方工具调用。补充说明系统通过文件ID关联实现元数据与文件的绑定MySQL存储文件ID、MD5等元数据 → 用户通过ID从MinIO获取原始文件。这种设计在保证数据一致性的同时如通过状态表跟踪文件处理进度兼顾了性能与灵活性。相似度得分和关键词匹配度怎么综合排序 排序依据排序依据语义相似度得分向量检索结果使用Embedding模型将用户查询和文档块转换为向量计算余弦相似度。反映查询与内容的语义关联性如用户问”销售技巧”即使文档无”技巧”一词也能匹配相关主题。关键词匹配度关键词检索结果基于Elasticsearch的倒排索引精确匹配查询中的关键词/术语。确保高相关性关键词如产品名称、专有名词的优先级。综合加权排序系统对两种得分进行加权融合公式示例最终得分 α × 语义相似度 β × 关键词匹配度权重系数α、β在SearchRequest.java中定义可通过topK参数调整返回结果数量。权限过滤仅保留用户有权限访问的文档基于组织标签和可见性设置。流程示例用户查询”如何提升销售业绩”系统同时执行语义检索匹配”客户关系管理””销售策略”等主题文档。关键词检索匹配包含”销售业绩”的文档。结果按综合得分降序排列返回前topK条如5条最相关结果。技术实现核心类HybridSearchService.java混合检索逻辑、SearchRequest.java参数配置。优势兼顾语义理解与关键词精准性避免单一检索的局限性。注权重系数和topK值可通过配置灵活调整适应不同场景需求。对长文本做切块的具体算法是怎么实现的根据参考资料派聪明的长文本分块算法是系统自研实现的具体流程如下分块算法实现细节分块规则 系统采用多维度切分策略支持三种核心方式按段落切分以自然段落为边界按字数切分设定固定长度如500字符/块按语义单元切分结合NLP技术识别语义完整性需后续优化分块优化机制语义连续性检查合并语义断裂的相邻块如段落被意外截断噪声过滤自动剔除页眉页脚、图片说明等非正文内容块编号标记每个分块分配唯一序号支持原文定位技术实现方式使用 Apache Tika 提取纯文本非分块本身分块逻辑在业务层通过 Java 自研算法 实现采用循环处理机制逐块解析文本内容关键区别非框架自带Elasticsearch等框架仅提供存储和检索能力分块需自行开发业务定制化结合企业知识库场景优化切分规则如保留技术术语完整性注当前版本侧重基础切分后续规划中提到将优化Prompt构建机制可能引入更高级的语义分块技术如LLM辅助分块。如果pdf的文档是双栏pdf是否会存在识别错误的问题如果存在这种文档应该如何进行改进双栏PDF文档确实存在识别错误问题主要表现为文字按物理位置排列而非语义顺序导致段落识别混乱和阅读顺序错误。改进方法使用专业文档解析工具替代简单OCR如基于视觉因果流(Visual Causal Flow)技术的DeepSeek-OCR 2能按语义而非坐标读图采用文档布局分析工具如PDF Document Layout Analysis基于Vision Grid Transformer和LightGBM双模型架构可高精度识别PDF元素并确定正确顺序在RAG系统中确保文档解析准确性避免内容识别错误影响后续检索和生成效果使用支持复杂布局的OCR引擎如Tesseract或PaddleOCR它们针对复杂布局有专门优化这些方法能显著提升双栏PDF的识别准确率保持原有排版结构和阅读顺序。

相关文章:

系统整体设计方案

业务架构设计项目架构图业务流程设计文档向量整个流程从用户上传文档开始,用户通过前端页面选择文档并设置相关的组织标签和可见信后系统开始接收文档。这个阶段的关键是建立文档的基本记录信息,包括文件的Md5哈希值文件原始名文件大小上传用户等信息。系…...

安防弱电智能化VISIO图例实战指南:从入门到精通的设计技巧

1. VISIO在安防弱电设计中的核心价值 第一次接触安防弱电智能化设计时,我被各种复杂的系统连接关系搞得头晕眼花。直到发现VISIO这个神器,才真正体会到什么叫"一图胜千言"。不同于普通CAD软件,VISIO最大的优势在于它专为系统图设计…...

WarcraftHelper技术解析:经典游戏现代化适配指南

WarcraftHelper技术解析:经典游戏现代化适配指南 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper WarcraftHelper是一款专为魔兽争霸3设计的…...

基于MATLAB的齿轮系统非线性动力学特性分析:参数阻尼比变化调节下的输出结果

基于matlab的齿轮系统非线性动力学特性分析 基于matlab的齿轮系统非线性动力学特性分析,综合考虑齿侧间隙、时变啮合刚度、综合啮合误差等因素下,参数阻尼比变化调节下,输出位移、相图、载荷、频率幅值结果 程序已调通,可直接运行…...

深度解析:利用pmap+gdb精准诊断Linux进程内存异常

1. 为什么需要pmapgdb组合排查内存问题 第一次遇到线上服务内存爆涨时,我盯着top命令里那个不断攀升的RES数值束手无策。传统的内存监控工具就像医院的体温计,只能告诉你"发烧了",但查不出具体病因。这就是pmap和gdb这对"黄金…...

Phi-4-mini-reasoning效果验证:在MMLU-Pro数学子集上的实际推理准确率展示

Phi-4-mini-reasoning效果验证:在MMLU-Pro数学子集上的实际推理准确率展示 1. 模型概述 Phi-4-mini-reasoning是一款3.8B参数的轻量级开源模型,由微软Azure AI Foundry团队开发。这款模型专为数学推理、逻辑推导和多步解题等强逻辑任务设计&#xff0c…...

Vue3项目实战:CKEditor5自定义构建与插件深度集成指南

1. 为什么需要自定义CKEditor5构建 第一次在Vue3项目中使用CKEditor5时,我直接安装了官方提供的经典编辑器包(ckeditor/ckeditor5-build-classic)。但很快就发现一个问题:默认构建缺少很多常用功能。比如字体颜色、背景色、对齐方…...

Phi-4-Reasoning-Vision基础操作:图片预览、参数调整、结果复制与导出功能

Phi-4-Reasoning-Vision基础操作:图片预览、参数调整、结果复制与导出功能 1. 工具概览 Phi-4-Reasoning-Vision是一款基于微软Phi-4-reasoning-vision-15B多模态大模型开发的高性能推理工具。它专为双卡4090环境优化,通过Streamlit搭建了直观的宽屏交…...

Eigen库实战指南——从基础到精通

1. Eigen库基础入门:矩阵与向量操作 第一次接触Eigen库是在做机器人运动学仿真时,当时被它简洁的API设计惊艳到了。这个纯头文件的C模板库,不需要编译安装,只需包含头文件就能使用,对开发者极其友好。Eigen最核心的Mat…...

H5与原生App高效通信:DSBridge桥方法实战解析

1. 为什么需要DSBridge? 在混合开发中,H5页面经常需要调用摄像头、地理位置等原生功能,而原生App也需要获取H5页面的数据更新。传统通信方式(如URL Scheme拦截)存在三个痛点:协议维护成本高(需…...

别再手动调样式了!用WangEditor的Menu API在Vue3里打造你的专属工具栏

深度定制WangEditor:用Menu API在Vue3中构建企业级富文本生态 当我们需要在Vue3项目中集成富文本编辑器时,WangEditor以其轻量级和高度可定制性成为许多开发者的首选。但真正发挥其威力的关键在于深入理解其Menu API系统——这套机制允许我们突破默认功能…...

从选工具到提交论文降AI率全流程避坑指南

把降AI率的整个流程从头到尾捋一遍——从第一次知网检测发现超标,到最终论文成功提交,每一步该干什么,常见问题怎么处理。 这是一篇流程性的指南,适合第一次处理论文AI率的同学从头读,也适合某个步骤卡住了来查的。 …...

告别Lottie和SVGA:用Unity给Android应用做高性能动态引导动画的实战踩坑记录

告别Lottie和SVGA:用Unity给Android应用做高性能动态引导动画的实战踩坑记录 在移动应用开发中,动态引导动画一直是提升用户体验的关键元素。从早期的帧动画到后来的Lottie、SVGA等方案,开发者们不断寻求更高效、更灵活的动画实现方式。然而&…...

让论文润色提速的秘密武器

对于每一位科研人员而言,将心血凝聚成论文初稿仅仅是万里长征的第一步。紧接着,一场更为煎熬的“拉锯战”往往在修改环节悄然打响。你是否也经历过这样的时刻:为了一个地道的表达,对着电脑屏幕逐字逐句地斟酌,耗费数小…...

AI率15-20-30哪来的各平台要求全汇总

论文AI率多少算合格?15%?20%?30%? 这个问题没有统一答案,因为不同学校、不同平台的标准不一样。搞清楚这个,你才知道自己的目标线在哪里,才能判断用什么工具处理、处理到什么程度就够了。 检测…...

2025届最火的六大AI学术助手解析与推荐

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 维普AIGC检测系统专门用来识别学术文本里由人工智能生成的内容,随着AI写作工具变…...

系统级音频均衡器如何提升macOS音质:开源eqMac完全指南

系统级音频均衡器如何提升macOS音质:开源eqMac完全指南 【免费下载链接】eqMac macOS System-wide Audio Equalizer & Volume Mixer 🎧 项目地址: https://gitcode.com/gh_mirrors/eq/eqMac eqMac是一款开源的macOS系统级音频均衡器与音量混合…...

DeepFaceLive实时面部交换技术完全教程

DeepFaceLive实时面部交换技术完全教程 还在为视频会议和直播效果发愁吗?想不想在下次Zoom会议中突然变身成你喜欢的明星?DeepFaceLive这款神奇的工具能让你的面部特效梦想成真!今天我们就来聊聊这个让无数内容创作者痴迷的实时面部交换技术…...

2026届毕业生推荐的AI科研平台横评

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 已然被广泛应用于毕业论文写作进程之中的是人工智能技术,学生借助自然语言生成模…...

2025最权威的十大AI辅助写作助手推荐

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 当今之时,人工智能技术已然深度介入至毕业论文的写作进程里面,于文献…...

用STM32CubeMX配置PWM捕获:从定时器选型到串口输出全流程

STM32CubeMX实战:PWM捕获全流程解析与调试技巧 在嵌入式开发中,精确测量PWM信号的周期和占空比是常见需求。本文将带你从零开始,使用STM32CubeMX和HAL库完成PWM捕获功能的完整实现。不同于简单的教程复制,我们会深入探讨两种捕获…...

Jimeng AI Studio应用场景:独立艺术家数字创作工作流整合方案

Jimeng AI Studio应用场景:独立艺术家数字创作工作流整合方案 1. 引言:当艺术家遇见AI 想象一下,你是一位独立艺术家或设计师。灵感来了,你想立刻把它变成一幅画、一张海报,或者一个全新的视觉概念。但传统的数字创作…...

Go语言中的正则表达式

Go语言中的正则表达式 1. 正则表达式的基本概念 正则表达式是一种用于匹配字符串中字符组合的模式。在Go语言中,正则表达式通过regexp包来实现。 2. 基本用法 2.1 编译正则表达式 package mainimport ("fmt""regexp" )func main() {// 编译正则…...

Go语言中的字符串处理

Go语言中的字符串处理 1. 字符串的基本概念 在Go语言中,字符串是一种不可变的字节序列,使用UTF-8编码。字符串的类型为string,是Go语言的基本类型之一。 package mainimport "fmt"func main() {// 字符串字面量s1 : "Hello, W…...

Go语言中的包管理

Go语言中的包管理 1. 包管理的基本概念 包管理是Go语言开发中的重要部分,它负责管理项目的依赖关系。Go语言的包管理经历了几个阶段: GOPATH模式vendor模式Go Modules模式(当前推荐) 2. Go Modules简介 Go Modules是Go 1.11引入的…...

Minecraft启动器与游戏配置工具全攻略:从新手到大师的进阶指南

Minecraft启动器与游戏配置工具全攻略:从新手到大师的进阶指南 Minecraft启动器是每一位玩家进入方块世界的第一道门,而一款优秀的游戏配置工具则能让你的冒险之旅更加顺畅。本文将以玩家视角,带你深入了解如何利用PCL2-CE这款强大的开源工具…...

终极EdgeRemover指南:专业卸载Windows Edge浏览器的完整解决方案

终极EdgeRemover指南:专业卸载Windows Edge浏览器的完整解决方案 【免费下载链接】EdgeRemover PowerShell script to remove Microsoft Edge in a non-forceful manner. 项目地址: https://gitcode.com/gh_mirrors/ed/EdgeRemover EdgeRemover是一款专业的P…...

《Linux网络编程》2.Socket编程(UDP/TCP)

💡Yupureki:个人主页 ✨个人专栏:《C》 《算法》《Linux系统编程》《高并发内存池》《MySQL数据库》 《个人在线OJ平台》《Linux网络编程》 🌸Yupureki🌸的简介: 目录 1. UDP编程 1.1 常用接口 1.1.1 socket() – 创建套接字 1.1.2 bin…...

网安实验干货每日分享(Weevely配置使用)

网安实验干货每日分享(Weevely配置使用)-1031 渗透测试环境搭建与工具使用-Weevely配置使用 实验目的 熟悉Webshell管理工具Weevely的配置使用。 实验环境 操作机:Kali2018-TS (1)操作系统:Kali Linu…...

革新游戏配置体验:PCL2-CE社区版,Minecraft玩家的效率神器

革新游戏配置体验:PCL2-CE社区版,Minecraft玩家的效率神器 PCL2-CE社区版是一款开源游戏配置工具,它不仅能让玩家轻松管理Minecraft游戏环境,更能通过智能时间管理、跨平台同步等功能,为玩家节省宝贵的游戏时间&#…...