本系统的技术路线,如下所示。

图 1 技术路线示意图
技术路线:
把所需要的文档格式进行上传。
对上传的文档进行清洗数据和自动修改文档中的空格等等,对文档进行切分,切分成若干个符合要求的独立的小文档。
对所切分成的独立小文档进行向量化,将文档转化成向量。
进行构建RAPTOR树。
进行混合检索(向量检索和关键字检索)提高召回率。
以及再进行构建提示词,将问题与检索到的向量整合一起构建提示词。
最后大模型生成方案、3D可视化影像、源文追溯。
(一)多类文档上传
(1)批量上传
基于前端技术开发上传面板,通过前后端数据交互(Axios)向后端Java网关发送文件流;支持Word、Excel、PDF、图片、扫描图纸等格式批量拖拽上传。
(2)内容提取
网关做请求转发,校验文件大小、格式、权限后分流:图片/扫描件—转发至Python PaddleOCR服务,完成图文识别,提取图片内文字;电子文档—直接读取文档源生文档。
(3)文档存储
再进行提取的纯文档、文档名称、页码、文件路径存入SQLite结构化数据库;原始文件、OCR结果本地SSD持久化存储。以及支持断点续传、批量删除、资料分类管理,所有操作日志写入SQLite。
(二)文档切分
通过Embedding技术,实现文档切分功能,将维修手册、技术手册等大块文档,分解成更小段落切分,确保搜索结果与用户查询相匹配极为关键。软件的文档集合D={D_1,D_2,...,D_n }其中n表示文档的总数。将输入文档序列的最大切分长度chunk_size设为K,并定义相邻两个切片片段之间重叠Token长度为L。每篇文档D_i被切分成一系列段落,记为C_ij={c_i1,c_i2,...,c_(im_i ) },其中m_i表示第i篇文档切分后chunk数量,C_ij表示第i篇文档第j个chunk,因此第i篇文档的chunk数量m_i如下式所示。
m_i=(tokenizer(D_i )-L)/(K-L)
其中,tokenizer(D_i )表示计算文档D_i的token总长度。
本软件文档切分使用重叠滑窗分句算法对预处理的文档段落进行切分,进而形成连续的文档块,在每个文档块前,附加相应的章节标题,以此构成独立的信息单元,如下图所示。该模块接收清洗的文档作为输入,并输出结构化的文档分块。

文档切分示意图
浙公网安备 33010602011771号