商城型移动端网站开发多少钱腾讯企业邮箱登录入口免费

张小明 2025/12/30 16:02:15
商城型移动端网站开发多少钱,腾讯企业邮箱登录入口免费,网站建设分金手指专业十二,网页设计作业压缩包1. 工程结构概览Spring AI 提供了完整的文档处理能力#xff0c;包括文档读取、文本分块和预处理。这些能力是 RAG 应用的基础。document-readers/ # 文档读取器├── pdf-reader/ # PDF 读取器│ ├── PagePdfDocumentReader.java # 按页读取│ └── ParagraphPdfDocume…1. 工程结构概览Spring AI 提供了完整的文档处理能力包括文档读取、文本分块和预处理。这些能力是 RAG 应用的基础。document-readers/ # 文档读取器├── pdf-reader/ # PDF 读取器│ ├── PagePdfDocumentReader.java # 按页读取│ └── ParagraphPdfDocumentReader.java # 按段落读取├── markdown-reader/ # Markdown 读取器│ └── MarkdownDocumentReader.java├── tika-reader/ # 通用文档读取器Tika│ └── TikaDocumentReader.java└── jsoup-reader/ # HTML 读取器└── JsoupDocumentReader.javaspring-ai-commons/ # 核心处理能力├── document/│ └── Document.java # 文档对象└── transformer/└── splitter/ # 文本分块├── TextSplitter.java├── TokenTextSplitter.java└── CharacterTextSplitter.java2. 技术体系与模块关系文档处理流程读取 → 分块 → 嵌入 → 存储image.png3. 关键场景示例代码3.1 PDF 文档读取PDF 读取支持按页和按段落两种方式// 按页读取Resource pdfResource new ClassPathResource(document.pdf);PagePdfDocumentReader pdfReader new PagePdfDocumentReader(pdfResource);ListDocument documents pdfReader.get();// 按段落读取更智能ParagraphPdfDocumentReader paragraphReader new ParagraphPdfDocumentReader(pdfResource, config);ListDocument documents paragraphReader.get();3.2 Markdown 文档读取Markdown 读取器可以按标题、段落或水平线分组MarkdownDocumentReader markdownReader new MarkdownDocumentReader(classpath:docs/*.md, config);ListDocument documents markdownReader.get();3.3 Tika 通用读取Tika 可以读取多种格式PDF、Word、PPT 等TikaDocumentReader tikaReader new TikaDocumentReader(classpath:document.docx);ListDocument documents tikaReader.get();3.4 文档分块将长文档分割成适合嵌入的小块// Token 分块推荐TokenTextSplitter splitter TokenTextSplitter.builder().chunkSize(800) // 目标 token 数.minChunkSizeChars(350) // 最小字符数.build();ListDocument chunks splitter.split(documents);// 字符分块CharacterTextSplitter charSplitter new CharacterTextSplitter(1000, 200);ListDocument chunks charSplitter.split(documents);3.5 完整流程文档处理的完整流程// 1. 读取文档TikaDocumentReader reader new TikaDocumentReader(document.pdf);ListDocument documents reader.get();// 2. 分块TokenTextSplitter splitter new TokenTextSplitter();ListDocument chunks splitter.split(documents);// 3. 嵌入并存储vectorStore.add(chunks);4. 核心实现图4.1 文档处理流程image.png5. 入口类与关键类关系image.png6. 关键实现逻辑分析6.1 PDF 读取实现PDF 读取有两种方式方式一按页读取public class PagePdfDocumentReader implements DocumentReader {Overridepublic ListDocument get() {ListDocument documents new ArrayList();int pageCount document.getNumberOfPages();for (int i 0; i pageCount; i) {String pageText extractTextFromPage(i);Document doc new Document(pageText);doc.getMetadata().put(page, i);documents.add(doc);}return documents;}}方式二按段落读取更智能public class ParagraphPdfDocumentReader implements DocumentReader {Overridepublic ListDocument get() {// 1. 提取段落ListParagraph paragraphs paragraphManager.flatten();// 2. 将相邻段落合并为文档ListDocument documents new ArrayList();for (int i 0; i paragraphs.size(); i) {Paragraph from paragraphs.get(i);Paragraph to (i 1 paragraphs.size())? paragraphs.get(i 1): from;String text getTextBetweenParagraphs(from, to);Document doc new Document(text);addMetadata(from, to, doc);documents.add(doc);}return documents;}}按段落读取的优势保持语义完整性段落是自然的语义单元更好的检索效果段落级别的文档更适合向量搜索保留布局信息可以保留 PDF 的布局结构6.2 Markdown 读取实现Markdown 读取器使用 CommonMark 解析器public class MarkdownDocumentReader implements DocumentReader {Overridepublic ListDocument get() {ListDocument documents new ArrayList();for (Resource resource : markdownResources) {// 1. 解析 MarkdownNode document parser.parse(loadContent(resource));// 2. 访问文档节点DocumentVisitor visitor new DocumentVisitor(config);document.accept(visitor);// 3. 收集文档documents.addAll(visitor.getDocuments());}return documents;}}Markdown 读取器可以按以下方式分组按标题分组每个标题及其内容成为一个文档按段落分组每个段落成为一个文档按水平线分组水平线分隔的内容成为独立文档6.3 Tika 通用读取实现Tika 使用自动检测解析器public class TikaDocumentReader implements DocumentReader {Overridepublic ListDocument get() {try (InputStream stream resource.getInputStream()) {// 1. 自动检测文档类型并解析parser.parse(stream, handler, metadata, context);// 2. 提取文本String text handler.toString();// 3. 格式化文本text textFormatter.format(text);// 4. 创建文档Document doc new Document(text);doc.getMetadata().put(METADATA_SOURCE, resourceName());return List.of(doc);}}}Tika 的优势支持多种格式PDF、Word、PPT、Excel、HTML 等自动检测无需指定文档类型提取元数据自动提取文档的元数据6.4 文本分块实现文本分块是 RAG 应用的关键步骤public abstract class TextSplitter implements DocumentTransformer {Overridepublic ListDocument apply(ListDocument documents) {ListDocument chunks new ArrayList();for (Document doc : documents) {// 1. 分割文本ListString textChunks splitText(doc.getText());// 2. 为每个分块创建文档for (int i 0; i textChunks.size(); i) {MapString, Object metadata new HashMap(doc.getMetadata());// 3. 添加分块元数据metadata.put(parent_document_id, doc.getId());metadata.put(chunk_index, i);metadata.put(total_chunks, textChunks.size());Document chunk Document.builder().text(textChunks.get(i)).metadata(metadata).score(doc.getScore()).build();chunks.add(chunk);}}return chunks;}protected abstract ListString splitText(String text);}6.5 Token 分块实现Token 分块使用编码器计算 token 数public class TokenTextSplitter extends TextSplitter {Overrideprotected ListString splitText(String text) {// 1. 编码为 tokensListInteger tokens encoding.encode(text).boxed();ListString chunks new ArrayList();while (!tokens.isEmpty() chunks.size() maxNumChunks) {// 2. 取目标大小的 tokensListInteger chunk tokens.subList(0,Math.min(chunkSize, tokens.size()));String chunkText decodeTokens(chunk);// 3. 在标点符号处截断保持语义int lastPunctuation findLastPunctuation(chunkText);if (lastPunctuation minChunkSizeChars) {chunkText chunkText.substring(0, lastPunctuation 1);}// 4. 过滤太短的分块if (chunkText.length() minChunkLengthToEmbed) {chunks.add(chunkText.trim());}// 5. 移除已处理的 tokenstokens tokens.subList(getEncodedTokens(chunkText).size(),tokens.size());}return chunks;}}Token 分块的优势精确控制大小按 token 数分割而不是字符数保持语义在标点符号处截断适合嵌入模型token 数是嵌入模型的输入单位7. 文档分块策略7.1 Token 分块推荐适合大多数场景特别是使用 OpenAI 等基于 token 的模型TokenTextSplitter splitter TokenTextSplitter.builder().chunkSize(800) // 目标 token 数.minChunkSizeChars(350) // 最小字符数避免过小.minChunkLengthToEmbed(5) // 最小嵌入长度.maxNumChunks(10000) // 最大分块数.keepSeparator(true) // 保留分隔符.build();7.2 字符分块适合固定大小的分块需求CharacterTextSplitter splitter new CharacterTextSplitter(1000, // chunkSize200 // chunkOverlap重叠部分保持上下文);7.3 自定义分块可以实现自己的分块策略public class CustomTextSplitter extends TextSplitter {Overrideprotected ListString splitText(String text) {// 自定义分块逻辑// 例如按句子、按段落、按章节等return customSplit(text);}}8. 外部依赖不同读取器的依赖8.1 PDF ReaderPDFBoxApache PDFBoxPDF 解析库无其他依赖8.2 Markdown ReaderCommonMarkMarkdown 解析库无其他依赖8.3 Tika ReaderApache Tika通用文档解析库支持 100 种格式8.4 Text SplittertiktokenToken 编码库用于 TokenTextSplitter无其他依赖CharacterTextSplitter9. 工程总结Spring AI 的文档处理能力设计有几个亮点统一的 Document 抽象。所有读取器都返回 Document 对象这让后续处理分块、嵌入、存储变得统一。不管是从 PDF 还是 Word 读取出来的都是 Document处理起来很方便。灵活的读取策略。不同格式有不同的读取策略按页、按段落、按标题可以根据需求选择最合适的方式。PDF 可以按页读也可以按段落读看你的需求。智能的分块机制。Token 分块不仅考虑大小还考虑语义完整性在标点符号处截断这提高了检索效果。不会在句子中间截断保持语义完整。元数据保留。分块时会保留原始文档的元数据并添加分块相关的元数据parent_document_id、chunk_index 等这有助于追踪和调试。想知道某个分块来自哪个文档看元数据就行。可扩展性。所有组件都通过接口定义可以轻松实现自定义的读取器和分块器。想支持新的文档格式实现 DocumentReader 接口就行。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

制作一个网站代码天眼查询官网在线入口

摘要 随着我国扶贫工作的深入推进,信息化技术在精准扶贫领域的应用日益广泛。传统的扶贫方式存在信息不对称、资源分配不均等问题,难以满足现代化扶贫需求。扶贫助农系统平台的开发旨在利用互联网技术优化扶贫资源配置,提高帮扶效率&#xff…

张小明 2025/12/26 5:02:49 网站建设

网站后台用什么程序做织梦网站更改

提升文生图效率:利用VSCode插件集成FLUX.1-dev开发环境 在数字内容创作的前沿战场上,设计师与开发者正面临一个共同挑战:如何让创意从“想到”到“看见”的路径更短、更直观、更可控?传统的文本生成图像工作流往往割裂——写提示词…

张小明 2025/12/26 5:00:46 网站建设

做网站什么程序好建设网站的价格

英雄联盟智能助手League Akari:从入门到精通的完整教程 【免费下载链接】LeagueAkari ✨兴趣使然的,功能全面的英雄联盟工具集。支持战绩查询、自动秒选等功能。基于 LCU API。 项目地址: https://gitcode.com/gh_mirrors/le/LeagueAkari 还在为英…

张小明 2025/12/27 6:04:09 网站建设

网站整站开发建设部网站中煤三建

Springboot家政服务平台 摘 要 协同过滤算法是一种较为著名和常用的推荐算法,它基于对用户历史行为数据的挖掘发现用户的喜好偏向,并预测用户可能喜好的产品进行推荐。基于协同过滤算法的家政服务平台就是典型的信息管理平台,它主要通过使用Springboot框…

张小明 2025/12/26 4:56:42 网站建设

linux如何架设网站什么网站详情页做的好

广州航海学院毕业设计(论文)开题报告简表学生姓名班级学号202115290509指导教师王晓狄毕业设计(论文)题目基于Web的求职招聘平台的设计与实现选题的目的和意义选题目的:随着互联网与信息技术的飞速进步,在线求职招聘已成为主流趋势…

张小明 2025/12/28 7:06:33 网站建设

域名过期网站还有用吗哪个网站可以做信用社的题

第一章:Agent服务日志异常的常见现象与影响Agent服务作为系统监控、数据采集和自动化运维的核心组件,其日志记录的完整性与准确性至关重要。当日志出现异常时,往往会导致故障排查困难、监控失效甚至业务中断。常见的日志异常现象包括日志缺失…

张小明 2025/12/28 4:30:05 网站建设