SpringAI的Transform入门

Transform转换

帮助将文档分割以适应 AI 模型的上下文窗口。

假如我们想要用 openai api 对一个段文本进行总结,我们通常的做法就是直接发给 api 让他总结。但是如果文本超过了 api 最大的 token 限制就会报错。这时,我们一般会进行对文章进行分段,比如通过 tiktoken 计算并分割,然后将各段发送给 api 进行总结,最后将各段的总结再进行一个全部的总结。

另外内容过长,影响到内部的相关性,进而影响大模型推理的准确性。

文档切分

把一个较长的文档,拆分成若干个较小的文档,每一块表示为特定的语义的单元,这样内容尺寸不会过大;但是切分时需要结合文档的类型和内容选择不同的策略。

  • 通用的文本:以段落或句子单元来切分;
  • 源代码:以方法或函数单元来切分;

Spring AI 提供TokenTextSplitter,按 token 拆分文档。

很多LLM的上下文窗口长度限制是按照 Token 来计数的。因此,以LLM的视角,按照 Token 对文本进行分隔,通常可以得到更好的结果。

Langchain4j 提供的切分方式DocumentSplitter,支持递归切分:

递归按字符切分,它由一个字符列表参数化。它尝试按顺序在它们上进行切割,直到块变得足够小。默认列表是["\n\n", "\n", " ", ""]。这样做的效果是尽可能保持所有段落(然后句子,然后单词)在一起,因为它们在语义上通常是最相关的文本片段。在项目中也推荐使用。

代码示例

@Component
public class RecursiveTextSplitter extends TextSplitter {

    @Override
    protected List<String> splitText(String text) {
        DocumentSplitter splitter = DocumentSplitters.recursive(800, 100);
        return splitter.split(new Document(text)).stream().map(TextSegment::text).toList();
    }
}

单元测试

@Test
public void splitTextTest() {
    try {
        Path path = Paths.get(DocumentServiceTest.class.getResource("/importer/1.json").toURI());
        List<Article> articles = jsonDocumentService.importDocuments(path);
        List<Document> documents = textSplitter.apply(List.of(Documents.fromArticle(articles.get(0))));
        System.out.println(documents);
    } catch (URISyntaxException e) {
        throw new RuntimeException(e);
    }
}

执行结果

[Document{
id='f4ff1abd-5ba3-45c7-9b53-d1d2b66c8d7c', 
metadata={article_id=1798155175996960768, updated_at=Wed Jun 05 08:49:36 CST 2024, topic=Java基础, created_at=Wed Jun 05 08:49:36 CST 2024, title=是否可以从一个static方法内部发出对非static方法的调用?}, 
content='不可以。因为非static方法是要与对象关联在一起的,必须创建一个对象后,才可以在该对象上进行方法调用,而static方法调用时不需要创建对象,可以直接调用。也就是说,当一个static方法被调用时,可能还没有创建任何实例对象,如果从一个static方法中发出对非static方法的调用,那个非static方法是关联到哪个对象上的呢?这个逻辑无法成立,所以,一个static方法内部发出对非static方法的调用。'
}]

那么,我们该如何学习大模型?

作为一名热心肠的互联网老兵,我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

一、大模型全套的学习路线

学习大型人工智能模型,如GPT-3、BERT或任何其他先进的神经网络模型,需要系统的方法和持续的努力。既然要系统的学习大模型,那么学习路线是必不可少的,下面的这份路线能帮助你快速梳理知识,形成自己的体系。

L1级别:AI大模型时代的华丽登场

L2级别:AI大模型API应用开发工程

L3级别:大模型应用架构进阶实践

L4级别:大模型微调与私有化部署

一般掌握到第四个级别,市场上大多数岗位都是可以胜任,但要还不是天花板,天花板级别要求更加严格,对于算法和实战是非常苛刻的。建议普通人掌握到L4级别即可。

以上的AI大模型学习路线,不知道为什么发出来就有点糊,高清版可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

二、640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

img

三、大模型经典PDF籍

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。

img

四、AI大模型商业化落地方案

img

作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量。

相关推荐

最近更新

  1. TCP协议是安全的吗?

    2024-06-12 15:46:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-12 15:46:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-12 15:46:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-12 15:46:02       18 阅读

热门阅读

  1. 讲解机器学习中的 K-均值聚类算法及其优缺点。

    2024-06-12 15:46:02       8 阅读
  2. 10、前后端本地端联调

    2024-06-12 15:46:02       8 阅读
  3. 处理element ui 表格中 按钮 loading问题

    2024-06-12 15:46:02       6 阅读
  4. 调料食品加工污水处理设备配置

    2024-06-12 15:46:02       5 阅读
  5. Spring-core-MethodParameter

    2024-06-12 15:46:02       6 阅读
  6. 手机照片怎么恢复?10个照片恢复应用程序

    2024-06-12 15:46:02       10 阅读
  7. 给echarts图表添加弧形动画效果

    2024-06-12 15:46:02       7 阅读
  8. PTA:7-184 通过嵌套循环输出二维矩阵

    2024-06-12 15:46:02       10 阅读
  9. Web前端模板引擎:深度解析与应用探索

    2024-06-12 15:46:02       10 阅读
  10. 一台 Linux 服务器最多能支撑多少个 TCP 连接

    2024-06-12 15:46:02       8 阅读
  11. wildcard邀请码

    2024-06-12 15:46:02       7 阅读
  12. 每天一个数据分析题(三百六十)- 整数规划

    2024-06-12 15:46:02       7 阅读
  13. 【Python基础】文件处理

    2024-06-12 15:46:02       7 阅读